/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = "./srcjs/aceEditor.jsx");
/******/ })
/************************************************************************/
/******/ ({

/***/ "./node_modules/ace-builds/src-min-noconflict/ext-language_tools.js":
/*!**************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/ext-language_tools.js ***!
  \**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets", ["require", "exports", "module", "ace/lib/oop", "ace/lib/event_emitter", "ace/lib/lang", "ace/range", "ace/range_list", "ace/keyboard/hash_handler", "ace/tokenizer", "ace/clipboard", "ace/lib/dom", "ace/editor"], function (e, t, n) {
  "use strict";

  function h(e) {
    var t = new Date().toLocaleString("en-us", e);
    return t.length == 1 ? "0" + t : t;
  }

  var r = e("./lib/oop"),
      i = e("./lib/event_emitter").EventEmitter,
      s = e("./lib/lang"),
      o = e("./range").Range,
      u = e("./range_list").RangeList,
      a = e("./keyboard/hash_handler").HashHandler,
      f = e("./tokenizer").Tokenizer,
      l = e("./clipboard"),
      c = {
    CURRENT_WORD: function CURRENT_WORD(e) {
      return e.session.getTextRange(e.session.getWordRange());
    },
    SELECTION: function SELECTION(e, t, n) {
      var r = e.session.getTextRange();
      return n ? r.replace(/\n\r?([ \t]*\S)/g, "\n" + n + "$1") : r;
    },
    CURRENT_LINE: function CURRENT_LINE(e) {
      return e.session.getLine(e.getCursorPosition().row);
    },
    PREV_LINE: function PREV_LINE(e) {
      return e.session.getLine(e.getCursorPosition().row - 1);
    },
    LINE_INDEX: function LINE_INDEX(e) {
      return e.getCursorPosition().row;
    },
    LINE_NUMBER: function LINE_NUMBER(e) {
      return e.getCursorPosition().row + 1;
    },
    SOFT_TABS: function SOFT_TABS(e) {
      return e.session.getUseSoftTabs() ? "YES" : "NO";
    },
    TAB_SIZE: function TAB_SIZE(e) {
      return e.session.getTabSize();
    },
    CLIPBOARD: function CLIPBOARD(e) {
      return l.getText && l.getText();
    },
    FILENAME: function FILENAME(e) {
      return /[^/\\]*$/.exec(this.FILEPATH(e))[0];
    },
    FILENAME_BASE: function FILENAME_BASE(e) {
      return /[^/\\]*$/.exec(this.FILEPATH(e))[0].replace(/\.[^.]*$/, "");
    },
    DIRECTORY: function DIRECTORY(e) {
      return this.FILEPATH(e).replace(/[^/\\]*$/, "");
    },
    FILEPATH: function FILEPATH(e) {
      return "/not implemented.txt";
    },
    WORKSPACE_NAME: function WORKSPACE_NAME() {
      return "Unknown";
    },
    FULLNAME: function FULLNAME() {
      return "Unknown";
    },
    BLOCK_COMMENT_START: function BLOCK_COMMENT_START(e) {
      var t = e.session.$mode || {};
      return t.blockComment && t.blockComment.start || "";
    },
    BLOCK_COMMENT_END: function BLOCK_COMMENT_END(e) {
      var t = e.session.$mode || {};
      return t.blockComment && t.blockComment.end || "";
    },
    LINE_COMMENT: function LINE_COMMENT(e) {
      var t = e.session.$mode || {};
      return t.lineCommentStart || "";
    },
    CURRENT_YEAR: h.bind(null, {
      year: "numeric"
    }),
    CURRENT_YEAR_SHORT: h.bind(null, {
      year: "2-digit"
    }),
    CURRENT_MONTH: h.bind(null, {
      month: "numeric"
    }),
    CURRENT_MONTH_NAME: h.bind(null, {
      month: "long"
    }),
    CURRENT_MONTH_NAME_SHORT: h.bind(null, {
      month: "short"
    }),
    CURRENT_DATE: h.bind(null, {
      day: "2-digit"
    }),
    CURRENT_DAY_NAME: h.bind(null, {
      weekday: "long"
    }),
    CURRENT_DAY_NAME_SHORT: h.bind(null, {
      weekday: "short"
    }),
    CURRENT_HOUR: h.bind(null, {
      hour: "2-digit",
      hour12: !1
    }),
    CURRENT_MINUTE: h.bind(null, {
      minute: "2-digit"
    }),
    CURRENT_SECOND: h.bind(null, {
      second: "2-digit"
    })
  };
  c.SELECTED_TEXT = c.SELECTION;

  var p = function p() {
    this.snippetMap = {}, this.snippetNameMap = {};
  };

  (function () {
    r.implement(this, i), this.getTokenizer = function () {
      return p.$tokenizer || this.createTokenizer();
    }, this.createTokenizer = function () {
      function e(e) {
        return e = e.substr(1), /^\d+$/.test(e) ? [{
          tabstopId: parseInt(e, 10)
        }] : [{
          text: e
        }];
      }

      function t(e) {
        return "(?:[^\\\\" + e + "]|\\\\.)";
      }

      var n = {
        regex: "/(" + t("/") + "+)/",
        onMatch: function onMatch(e, t, n) {
          var r = n[0];
          return r.fmtString = !0, r.guard = e.slice(1, -1), r.flag = "", "";
        },
        next: "formatString"
      };
      return p.$tokenizer = new f({
        start: [{
          regex: /\\./,
          onMatch: function onMatch(e, t, n) {
            var r = e[1];
            return r == "}" && n.length ? e = r : "`$\\".indexOf(r) != -1 && (e = r), [e];
          }
        }, {
          regex: /}/,
          onMatch: function onMatch(e, t, n) {
            return [n.length ? n.shift() : e];
          }
        }, {
          regex: /\$(?:\d+|\w+)/,
          onMatch: e
        }, {
          regex: /\$\{[\dA-Z_a-z]+/,
          onMatch: function onMatch(t, n, r) {
            var i = e(t.substr(1));
            return r.unshift(i[0]), i;
          },
          next: "snippetVar"
        }, {
          regex: /\n/,
          token: "newline",
          merge: !1
        }],
        snippetVar: [{
          regex: "\\|" + t("\\|") + "*\\|",
          onMatch: function onMatch(e, t, n) {
            var r = e.slice(1, -1).replace(/\\[,|\\]|,/g, function (e) {
              return e.length == 2 ? e[1] : "\0";
            }).split("\0").map(function (e) {
              return {
                value: e
              };
            });
            return n[0].choices = r, [r[0]];
          },
          next: "start"
        }, n, {
          regex: "([^:}\\\\]|\\\\.)*:?",
          token: "",
          next: "start"
        }],
        formatString: [{
          regex: /:/,
          onMatch: function onMatch(e, t, n) {
            return n.length && n[0].expectElse ? (n[0].expectElse = !1, n[0].ifEnd = {
              elseEnd: n[0]
            }, [n[0].ifEnd]) : ":";
          }
        }, {
          regex: /\\./,
          onMatch: function onMatch(e, t, n) {
            var r = e[1];
            return r == "}" && n.length ? e = r : "`$\\".indexOf(r) != -1 ? e = r : r == "n" ? e = "\n" : r == "t" ? e = "	" : "ulULE".indexOf(r) != -1 && (e = {
              changeCase: r,
              local: r > "a"
            }), [e];
          }
        }, {
          regex: "/\\w*}",
          onMatch: function onMatch(e, t, n) {
            var r = n.shift();
            return r && (r.flag = e.slice(1, -1)), this.next = r && r.tabstopId ? "start" : "", [r || e];
          },
          next: "start"
        }, {
          regex: /\$(?:\d+|\w+)/,
          onMatch: function onMatch(e, t, n) {
            return [{
              text: e.slice(1)
            }];
          }
        }, {
          regex: /\${\w+/,
          onMatch: function onMatch(e, t, n) {
            var r = {
              text: e.slice(2)
            };
            return n.unshift(r), [r];
          },
          next: "formatStringVar"
        }, {
          regex: /\n/,
          token: "newline",
          merge: !1
        }, {
          regex: /}/,
          onMatch: function onMatch(e, t, n) {
            var r = n.shift();
            return this.next = r && r.tabstopId ? "start" : "", [r || e];
          },
          next: "start"
        }],
        formatStringVar: [{
          regex: /:\/\w+}/,
          onMatch: function onMatch(e, t, n) {
            var r = n[0];
            return r.formatFunction = e.slice(2, -1), [n.shift()];
          },
          next: "formatString"
        }, n, {
          regex: /:[\?\-+]?/,
          onMatch: function onMatch(e, t, n) {
            e[1] == "+" && (n[0].ifEnd = n[0]), e[1] == "?" && (n[0].expectElse = !0);
          },
          next: "formatString"
        }, {
          regex: "([^:}\\\\]|\\\\.)*:?",
          token: "",
          next: "formatString"
        }]
      }), p.$tokenizer;
    }, this.tokenizeTmSnippet = function (e, t) {
      return this.getTokenizer().getLineTokens(e, t).tokens.map(function (e) {
        return e.value || e;
      });
    }, this.getVariableValue = function (e, t, n) {
      if (/^\d+$/.test(t)) return (this.variables.__ || {})[t] || "";
      if (/^[A-Z]\d+$/.test(t)) return (this.variables[t[0] + "__"] || {})[t.substr(1)] || "";
      t = t.replace(/^TM_/, "");
      if (!this.variables.hasOwnProperty(t)) return "";
      var r = this.variables[t];
      return typeof r == "function" && (r = this.variables[t](e, t, n)), r == null ? "" : r;
    }, this.variables = c, this.tmStrFormat = function (e, t, n) {
      if (!t.fmt) return e;
      var r = t.flag || "",
          i = t.guard;
      i = new RegExp(i, r.replace(/[^gim]/g, ""));
      var s = typeof t.fmt == "string" ? this.tokenizeTmSnippet(t.fmt, "formatString") : t.fmt,
          o = this,
          u = e.replace(i, function () {
        var e = o.variables.__;
        o.variables.__ = [].slice.call(arguments);
        var t = o.resolveVariables(s, n),
            r = "E";

        for (var i = 0; i < t.length; i++) {
          var u = t[i];

          if (_typeof(u) == "object") {
            t[i] = "";

            if (u.changeCase && u.local) {
              var a = t[i + 1];
              a && typeof a == "string" && (u.changeCase == "u" ? t[i] = a[0].toUpperCase() : t[i] = a[0].toLowerCase(), t[i + 1] = a.substr(1));
            } else u.changeCase && (r = u.changeCase);
          } else r == "U" ? t[i] = u.toUpperCase() : r == "L" && (t[i] = u.toLowerCase());
        }

        return o.variables.__ = e, t.join("");
      });
      return u;
    }, this.tmFormatFunction = function (e, t, n) {
      return t.formatFunction == "upcase" ? e.toUpperCase() : t.formatFunction == "downcase" ? e.toLowerCase() : e;
    }, this.resolveVariables = function (e, t) {
      function f(t) {
        var n = e.indexOf(t, s + 1);
        n != -1 && (s = n);
      }

      var n = [],
          r = "",
          i = !0;

      for (var s = 0; s < e.length; s++) {
        var o = e[s];

        if (typeof o == "string") {
          n.push(o), o == "\n" ? (i = !0, r = "") : i && (r = /^\t*/.exec(o)[0], i = /\S/.test(o));
          continue;
        }

        if (!o) continue;
        i = !1;

        if (o.fmtString) {
          var u = e.indexOf(o, s + 1);
          u == -1 && (u = e.length), o.fmt = e.slice(s + 1, u), s = u;
        }

        if (o.text) {
          var a = this.getVariableValue(t, o.text, r) + "";
          o.fmtString && (a = this.tmStrFormat(a, o, t)), o.formatFunction && (a = this.tmFormatFunction(a, o, t)), a && !o.ifEnd ? (n.push(a), f(o)) : !a && o.ifEnd && f(o.ifEnd);
        } else o.elseEnd ? f(o.elseEnd) : o.tabstopId != null ? n.push(o) : o.changeCase != null && n.push(o);
      }

      return n;
    }, this.insertSnippetForSelection = function (e, t) {
      function f(e) {
        var t = [];

        for (var n = 0; n < e.length; n++) {
          var r = e[n];

          if (_typeof(r) == "object") {
            if (a[r.tabstopId]) continue;
            var i = e.lastIndexOf(r, n - 1);
            r = t[i] || {
              tabstopId: r.tabstopId
            };
          }

          t[n] = r;
        }

        return t;
      }

      var n = e.getCursorPosition(),
          r = e.session.getLine(n.row),
          i = e.session.getTabString(),
          s = r.match(/^\s*/)[0];
      n.column < s.length && (s = s.slice(0, n.column)), t = t.replace(/\r/g, "");
      var o = this.tokenizeTmSnippet(t);
      o = this.resolveVariables(o, e), o = o.map(function (e) {
        return e == "\n" ? e + s : typeof e == "string" ? e.replace(/\t/g, i) : e;
      });
      var u = [];
      o.forEach(function (e, t) {
        if (_typeof(e) != "object") return;
        var n = e.tabstopId,
            r = u[n];
        r || (r = u[n] = [], r.index = n, r.value = "", r.parents = {});
        if (r.indexOf(e) !== -1) return;
        e.choices && !r.choices && (r.choices = e.choices), r.push(e);
        var i = o.indexOf(e, t + 1);
        if (i === -1) return;
        var s = o.slice(t + 1, i),
            a = s.some(function (e) {
          return _typeof(e) == "object";
        });
        a && !r.value ? r.value = s : s.length && (!r.value || typeof r.value != "string") && (r.value = s.join(""));
      }), u.forEach(function (e) {
        e.length = 0;
      });
      var a = {};

      for (var l = 0; l < o.length; l++) {
        var c = o[l];
        if (_typeof(c) != "object") continue;
        var h = c.tabstopId,
            p = u[h],
            v = o.indexOf(c, l + 1);

        if (a[h]) {
          a[h] === c && (delete a[h], Object.keys(a).forEach(function (e) {
            p.parents[e] = !0;
          }));
          continue;
        }

        a[h] = c;
        var m = p.value;
        typeof m != "string" ? m = f(m) : c.fmt && (m = this.tmStrFormat(m, c, e)), o.splice.apply(o, [l + 1, Math.max(0, v - l)].concat(m, c)), p.indexOf(c) === -1 && p.push(c);
      }

      var g = 0,
          y = 0,
          b = "";
      o.forEach(function (e) {
        if (typeof e == "string") {
          var t = e.split("\n");
          t.length > 1 ? (y = t[t.length - 1].length, g += t.length - 1) : y += e.length, b += e;
        } else e && (e.start ? e.end = {
          row: g,
          column: y
        } : e.start = {
          row: g,
          column: y
        });
      });
      var w = e.getSelectionRange(),
          E = e.session.replace(w, b),
          S = new d(e),
          x = e.inVirtualSelectionMode && e.selection.index;
      S.addTabstops(u, w.start, E, x);
    }, this.insertSnippet = function (e, t) {
      var n = this;
      if (e.inVirtualSelectionMode) return n.insertSnippetForSelection(e, t);
      e.forEachSelection(function () {
        n.insertSnippetForSelection(e, t);
      }, null, {
        keepOrder: !0
      }), e.tabstopManager && e.tabstopManager.tabNext();
    }, this.$getScope = function (e) {
      var t = e.session.$mode.$id || "";
      t = t.split("/").pop();

      if (t === "html" || t === "php") {
        t === "php" && !e.session.$mode.inlinePhp && (t = "html");
        var n = e.getCursorPosition(),
            r = e.session.getState(n.row);
        _typeof(r) == "object" && (r = r[0]), r.substring && (r.substring(0, 3) == "js-" ? t = "javascript" : r.substring(0, 4) == "css-" ? t = "css" : r.substring(0, 4) == "php-" && (t = "php"));
      }

      return t;
    }, this.getActiveScopes = function (e) {
      var t = this.$getScope(e),
          n = [t],
          r = this.snippetMap;
      return r[t] && r[t].includeScopes && n.push.apply(n, r[t].includeScopes), n.push("_"), n;
    }, this.expandWithTab = function (e, t) {
      var n = this,
          r = e.forEachSelection(function () {
        return n.expandSnippetForSelection(e, t);
      }, null, {
        keepOrder: !0
      });
      return r && e.tabstopManager && e.tabstopManager.tabNext(), r;
    }, this.expandSnippetForSelection = function (e, t) {
      var n = e.getCursorPosition(),
          r = e.session.getLine(n.row),
          i = r.substring(0, n.column),
          s = r.substr(n.column),
          o = this.snippetMap,
          u;
      return this.getActiveScopes(e).some(function (e) {
        var t = o[e];
        return t && (u = this.findMatchingSnippet(t, i, s)), !!u;
      }, this), u ? t && t.dryRun ? !0 : (e.session.doc.removeInLine(n.row, n.column - u.replaceBefore.length, n.column + u.replaceAfter.length), this.variables.M__ = u.matchBefore, this.variables.T__ = u.matchAfter, this.insertSnippetForSelection(e, u.content), this.variables.M__ = this.variables.T__ = null, !0) : !1;
    }, this.findMatchingSnippet = function (e, t, n) {
      for (var r = e.length; r--;) {
        var i = e[r];
        if (i.startRe && !i.startRe.test(t)) continue;
        if (i.endRe && !i.endRe.test(n)) continue;
        if (!i.startRe && !i.endRe) continue;
        return i.matchBefore = i.startRe ? i.startRe.exec(t) : [""], i.matchAfter = i.endRe ? i.endRe.exec(n) : [""], i.replaceBefore = i.triggerRe ? i.triggerRe.exec(t)[0] : "", i.replaceAfter = i.endTriggerRe ? i.endTriggerRe.exec(n)[0] : "", i;
      }
    }, this.snippetMap = {}, this.snippetNameMap = {}, this.register = function (e, t) {
      function o(e) {
        return e && !/^\^?\(.*\)\$?$|^\\b$/.test(e) && (e = "(?:" + e + ")"), e || "";
      }

      function u(e, t, n) {
        return e = o(e), t = o(t), n ? (e = t + e, e && e[e.length - 1] != "$" && (e += "$")) : (e += t, e && e[0] != "^" && (e = "^" + e)), new RegExp(e);
      }

      function a(e) {
        e.scope || (e.scope = t || "_"), t = e.scope, n[t] || (n[t] = [], r[t] = {});
        var o = r[t];

        if (e.name) {
          var a = o[e.name];
          a && i.unregister(a), o[e.name] = e;
        }

        n[t].push(e), e.prefix && (e.tabTrigger = e.prefix), !e.content && e.body && (e.content = Array.isArray(e.body) ? e.body.join("\n") : e.body), e.tabTrigger && !e.trigger && (!e.guard && /^\w/.test(e.tabTrigger) && (e.guard = "\\b"), e.trigger = s.escapeRegExp(e.tabTrigger));
        if (!e.trigger && !e.guard && !e.endTrigger && !e.endGuard) return;
        e.startRe = u(e.trigger, e.guard, !0), e.triggerRe = new RegExp(e.trigger), e.endRe = u(e.endTrigger, e.endGuard, !0), e.endTriggerRe = new RegExp(e.endTrigger);
      }

      var n = this.snippetMap,
          r = this.snippetNameMap,
          i = this;
      e || (e = []), Array.isArray(e) ? e.forEach(a) : Object.keys(e).forEach(function (t) {
        a(e[t]);
      }), this._signal("registerSnippets", {
        scope: t
      });
    }, this.unregister = function (e, t) {
      function i(e) {
        var i = r[e.scope || t];

        if (i && i[e.name]) {
          delete i[e.name];
          var s = n[e.scope || t],
              o = s && s.indexOf(e);
          o >= 0 && s.splice(o, 1);
        }
      }

      var n = this.snippetMap,
          r = this.snippetNameMap;
      e.content ? i(e) : Array.isArray(e) && e.forEach(i);
    }, this.parseSnippetFile = function (e) {
      e = e.replace(/\r/g, "");
      var t = [],
          n = {},
          r = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,
          i;

      while (i = r.exec(e)) {
        if (i[1]) try {
          n = JSON.parse(i[1]), t.push(n);
        } catch (s) {}
        if (i[4]) n.content = i[4].replace(/^\t/gm, ""), t.push(n), n = {};else {
          var o = i[2],
              u = i[3];

          if (o == "regex") {
            var a = /\/((?:[^\/\\]|\\.)*)|$/g;
            n.guard = a.exec(u)[1], n.trigger = a.exec(u)[1], n.endTrigger = a.exec(u)[1], n.endGuard = a.exec(u)[1];
          } else o == "snippet" ? (n.tabTrigger = u.match(/^\S*/)[0], n.name || (n.name = u)) : o && (n[o] = u);
        }
      }

      return t;
    }, this.getSnippetByName = function (e, t) {
      var n = this.snippetNameMap,
          r;
      return this.getActiveScopes(t).some(function (t) {
        var i = n[t];
        return i && (r = i[e]), !!r;
      }, this), r;
    };
  }).call(p.prototype);

  var d = function d(e) {
    if (e.tabstopManager) return e.tabstopManager;
    e.tabstopManager = this, this.$onChange = this.onChange.bind(this), this.$onChangeSelection = s.delayedCall(this.onChangeSelection.bind(this)).schedule, this.$onChangeSession = this.onChangeSession.bind(this), this.$onAfterExec = this.onAfterExec.bind(this), this.attach(e);
  };

  (function () {
    this.attach = function (e) {
      this.index = 0, this.ranges = [], this.tabstops = [], this.$openTabstops = null, this.selectedTabstop = null, this.editor = e, this.editor.on("change", this.$onChange), this.editor.on("changeSelection", this.$onChangeSelection), this.editor.on("changeSession", this.$onChangeSession), this.editor.commands.on("afterExec", this.$onAfterExec), this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);
    }, this.detach = function () {
      this.tabstops.forEach(this.removeTabstopMarkers, this), this.ranges = null, this.tabstops = null, this.selectedTabstop = null, this.editor.removeListener("change", this.$onChange), this.editor.removeListener("changeSelection", this.$onChangeSelection), this.editor.removeListener("changeSession", this.$onChangeSession), this.editor.commands.removeListener("afterExec", this.$onAfterExec), this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler), this.editor.tabstopManager = null, this.editor = null;
    }, this.onChange = function (e) {
      var t = e.action[0] == "r",
          n = this.selectedTabstop || {},
          r = n.parents || {},
          i = (this.tabstops || []).slice();

      for (var s = 0; s < i.length; s++) {
        var o = i[s],
            u = o == n || r[o.index];
        o.rangeList.$bias = u ? 0 : 1;

        if (e.action == "remove" && o !== n) {
          var a = o.parents && o.parents[n.index],
              f = o.rangeList.pointIndex(e.start, a);
          f = f < 0 ? -f - 1 : f + 1;
          var l = o.rangeList.pointIndex(e.end, a);
          l = l < 0 ? -l - 1 : l - 1;
          var c = o.rangeList.ranges.slice(f, l);

          for (var h = 0; h < c.length; h++) {
            this.removeRange(c[h]);
          }
        }

        o.rangeList.$onChange(e);
      }

      var p = this.editor.session;
      !this.$inChange && t && p.getLength() == 1 && !p.getValue() && this.detach();
    }, this.updateLinkedFields = function () {
      var e = this.selectedTabstop;
      if (!e || !e.hasLinkedRanges || !e.firstNonLinked) return;
      this.$inChange = !0;
      var n = this.editor.session,
          r = n.getTextRange(e.firstNonLinked);

      for (var i = 0; i < e.length; i++) {
        var s = e[i];
        if (!s.linked) continue;
        var o = s.original,
            u = t.snippetManager.tmStrFormat(r, o, this.editor);
        n.replace(s, u);
      }

      this.$inChange = !1;
    }, this.onAfterExec = function (e) {
      e.command && !e.command.readOnly && this.updateLinkedFields();
    }, this.onChangeSelection = function () {
      if (!this.editor) return;
      var e = this.editor.selection.lead,
          t = this.editor.selection.anchor,
          n = this.editor.selection.isEmpty();

      for (var r = 0; r < this.ranges.length; r++) {
        if (this.ranges[r].linked) continue;
        var i = this.ranges[r].contains(e.row, e.column),
            s = n || this.ranges[r].contains(t.row, t.column);
        if (i && s) return;
      }

      this.detach();
    }, this.onChangeSession = function () {
      this.detach();
    }, this.tabNext = function (e) {
      var t = this.tabstops.length,
          n = this.index + (e || 1);
      n = Math.min(Math.max(n, 1), t), n == t && (n = 0), this.selectTabstop(n), n === 0 && this.detach();
    }, this.selectTabstop = function (e) {
      this.$openTabstops = null;
      var t = this.tabstops[this.index];
      t && this.addTabstopMarkers(t), this.index = e, t = this.tabstops[this.index];
      if (!t || !t.length) return;
      this.selectedTabstop = t;
      var n = t.firstNonLinked || t;
      t.choices && (n.cursor = n.start);

      if (!this.editor.inVirtualSelectionMode) {
        var r = this.editor.multiSelect;
        r.toSingleRange(n);

        for (var i = 0; i < t.length; i++) {
          if (t.hasLinkedRanges && t[i].linked) continue;
          r.addRange(t[i].clone(), !0);
        }
      } else this.editor.selection.fromOrientedRange(n);

      this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler), this.selectedTabstop && this.selectedTabstop.choices && this.editor.execCommand("startAutocomplete", {
        matches: this.selectedTabstop.choices
      });
    }, this.addTabstops = function (e, t, n) {
      var r = this.useLink || !this.editor.getOption("enableMultiselect");
      this.$openTabstops || (this.$openTabstops = []);

      if (!e[0]) {
        var i = o.fromPoints(n, n);
        m(i.start, t), m(i.end, t), e[0] = [i], e[0].index = 0;
      }

      var s = this.index,
          a = [s + 1, 0],
          f = this.ranges;
      e.forEach(function (e, n) {
        var i = this.$openTabstops[n] || e;

        for (var s = 0; s < e.length; s++) {
          var l = e[s],
              c = o.fromPoints(l.start, l.end || l.start);
          v(c.start, t), v(c.end, t), c.original = l, c.tabstop = i, f.push(c), i != e ? i.unshift(c) : i[s] = c, l.fmtString || i.firstNonLinked && r ? (c.linked = !0, i.hasLinkedRanges = !0) : i.firstNonLinked || (i.firstNonLinked = c);
        }

        i.firstNonLinked || (i.hasLinkedRanges = !1), i === e && (a.push(i), this.$openTabstops[n] = i), this.addTabstopMarkers(i), i.rangeList = i.rangeList || new u(), i.rangeList.$bias = 0, i.rangeList.addList(i);
      }, this), a.length > 2 && (this.tabstops.length && a.push(a.splice(2, 1)[0]), this.tabstops.splice.apply(this.tabstops, a));
    }, this.addTabstopMarkers = function (e) {
      var t = this.editor.session;
      e.forEach(function (e) {
        e.markerId || (e.markerId = t.addMarker(e, "ace_snippet-marker", "text"));
      });
    }, this.removeTabstopMarkers = function (e) {
      var t = this.editor.session;
      e.forEach(function (e) {
        t.removeMarker(e.markerId), e.markerId = null;
      });
    }, this.removeRange = function (e) {
      var t = e.tabstop.indexOf(e);
      t != -1 && e.tabstop.splice(t, 1), t = this.ranges.indexOf(e), t != -1 && this.ranges.splice(t, 1), t = e.tabstop.rangeList.ranges.indexOf(e), t != -1 && e.tabstop.splice(t, 1), this.editor.session.removeMarker(e.markerId), e.tabstop.length || (t = this.tabstops.indexOf(e.tabstop), t != -1 && this.tabstops.splice(t, 1), this.tabstops.length || this.detach());
    }, this.keyboardHandler = new a(), this.keyboardHandler.bindKeys({
      Tab: function Tab(e) {
        if (t.snippetManager && t.snippetManager.expandWithTab(e)) return;
        e.tabstopManager.tabNext(1), e.renderer.scrollCursorIntoView();
      },
      "Shift-Tab": function ShiftTab(e) {
        e.tabstopManager.tabNext(-1), e.renderer.scrollCursorIntoView();
      },
      Esc: function Esc(e) {
        e.tabstopManager.detach();
      }
    });
  }).call(d.prototype);

  var v = function v(e, t) {
    e.row == 0 && (e.column += t.column), e.row += t.row;
  },
      m = function m(e, t) {
    e.row == t.row && (e.column -= t.column), e.row -= t.row;
  };

  e("./lib/dom").importCssString(".ace_snippet-marker {    -moz-box-sizing: border-box;    box-sizing: border-box;    background: rgba(194, 193, 208, 0.09);    border: 1px dotted rgba(211, 208, 235, 0.62);    position: absolute;}"), t.snippetManager = new p();
  var g = e("./editor").Editor;
  (function () {
    this.insertSnippet = function (e, n) {
      return t.snippetManager.insertSnippet(this, e, n);
    }, this.expandSnippet = function (e) {
      return t.snippetManager.expandWithTab(this, e);
    };
  }).call(g.prototype);
}), ace.define("ace/autocomplete/popup", ["require", "exports", "module", "ace/virtual_renderer", "ace/editor", "ace/range", "ace/lib/event", "ace/lib/lang", "ace/lib/dom"], function (e, t, n) {
  "use strict";

  var r = e("../virtual_renderer").VirtualRenderer,
      i = e("../editor").Editor,
      s = e("../range").Range,
      o = e("../lib/event"),
      u = e("../lib/lang"),
      a = e("../lib/dom"),
      f = function f(e) {
    var t = new r(e);
    t.$maxLines = 4;
    var n = new i(t);
    return n.setHighlightActiveLine(!1), n.setShowPrintMargin(!1), n.renderer.setShowGutter(!1), n.renderer.setHighlightGutterLine(!1), n.$mouseHandler.$focusTimeout = 0, n.$highlightTagPending = !0, n;
  },
      l = function l(e) {
    var t = a.createElement("div"),
        n = new f(t);
    e && e.appendChild(t), t.style.display = "none", n.renderer.content.style.cursor = "default", n.renderer.setStyle("ace_autocomplete"), n.setOption("displayIndentGuides", !1), n.setOption("dragDelay", 150);

    var r = function r() {};

    n.focus = r, n.$isFocused = !0, n.renderer.$cursorLayer.restartTimer = r, n.renderer.$cursorLayer.element.style.opacity = 0, n.renderer.$maxLines = 8, n.renderer.$keepTextAreaAtCursor = !1, n.setHighlightActiveLine(!1), n.session.highlight(""), n.session.$searchHighlight.clazz = "ace_highlight-marker", n.on("mousedown", function (e) {
      var t = e.getDocumentPosition();
      n.selection.moveToPosition(t), c.start.row = c.end.row = t.row, e.stop();
    });
    var i,
        l = new s(-1, 0, -1, Infinity),
        c = new s(-1, 0, -1, Infinity);
    c.id = n.session.addMarker(c, "ace_active-line", "fullLine"), n.setSelectOnHover = function (e) {
      e ? l.id && (n.session.removeMarker(l.id), l.id = null) : l.id = n.session.addMarker(l, "ace_line-hover", "fullLine");
    }, n.setSelectOnHover(!1), n.on("mousemove", function (e) {
      if (!i) {
        i = e;
        return;
      }

      if (i.x == e.x && i.y == e.y) return;
      i = e, i.scrollTop = n.renderer.scrollTop;
      var t = i.getDocumentPosition().row;
      l.start.row != t && (l.id || n.setRow(t), p(t));
    }), n.renderer.on("beforeRender", function () {
      if (i && l.start.row != -1) {
        i.$pos = null;
        var e = i.getDocumentPosition().row;
        l.id || n.setRow(e), p(e, !0);
      }
    }), n.renderer.on("afterRender", function () {
      var e = n.getRow(),
          t = n.renderer.$textLayer,
          r = t.element.childNodes[e - t.config.firstRow];
      r !== t.selectedNode && t.selectedNode && a.removeCssClass(t.selectedNode, "ace_selected"), t.selectedNode = r, r && a.addCssClass(r, "ace_selected");
    });

    var h = function h() {
      p(-1);
    },
        p = function p(e, t) {
      e !== l.start.row && (l.start.row = l.end.row = e, t || n.session._emit("changeBackMarker"), n._emit("changeHoverMarker"));
    };

    n.getHoveredRow = function () {
      return l.start.row;
    }, o.addListener(n.container, "mouseout", h), n.on("hide", h), n.on("changeSelection", h), n.session.doc.getLength = function () {
      return n.data.length;
    }, n.session.doc.getLine = function (e) {
      var t = n.data[e];
      return typeof t == "string" ? t : t && t.value || "";
    };
    var d = n.session.bgTokenizer;
    return d.$tokenizeRow = function (e) {
      function s(e, n) {
        e && r.push({
          type: (t.className || "") + (n || ""),
          value: e
        });
      }

      var t = n.data[e],
          r = [];
      if (!t) return r;
      typeof t == "string" && (t = {
        value: t
      });
      var i = t.caption || t.value || t.name,
          o = i.toLowerCase(),
          u = (n.filterText || "").toLowerCase(),
          a = 0,
          f = 0;

      for (var l = 0; l <= u.length; l++) {
        if (l != f && (t.matchMask & 1 << l || l == u.length)) {
          var c = u.slice(f, l);
          f = l;
          var h = o.indexOf(c, a);
          if (h == -1) continue;
          s(i.slice(a, h), ""), a = h + c.length, s(i.slice(h, a), "completion-highlight");
        }
      }

      return s(i.slice(a, i.length), ""), t.meta && r.push({
        type: "completion-meta",
        value: t.meta
      }), t.message && r.push({
        type: "completion-message",
        value: t.message
      }), r;
    }, d.$updateOnChange = r, d.start = r, n.session.$computeWidth = function () {
      return this.screenWidth = 0;
    }, n.isOpen = !1, n.isTopdown = !1, n.autoSelect = !0, n.filterText = "", n.data = [], n.setData = function (e, t) {
      n.filterText = t || "", n.setValue(u.stringRepeat("\n", e.length), -1), n.data = e || [], n.setRow(0);
    }, n.getData = function (e) {
      return n.data[e];
    }, n.getRow = function () {
      return c.start.row;
    }, n.setRow = function (e) {
      e = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length, e)), c.start.row != e && (n.selection.clearSelection(), c.start.row = c.end.row = e || 0, n.session._emit("changeBackMarker"), n.moveCursorTo(e || 0, 0), n.isOpen && n._signal("select"));
    }, n.on("changeSelection", function () {
      n.isOpen && n.setRow(n.selection.lead.row), n.renderer.scrollCursorIntoView();
    }), n.hide = function () {
      this.container.style.display = "none", this._signal("hide"), n.isOpen = !1;
    }, n.show = function (e, t, r) {
      var s = this.container,
          o = window.innerHeight,
          u = window.innerWidth,
          a = this.renderer,
          f = a.$maxLines * t * 1.4,
          l = e.top + this.$borderSize,
          c = l > o / 2 && !r;
      c && l + t + f > o ? (a.$maxPixelHeight = l - 2 * this.$borderSize, s.style.top = "", s.style.bottom = o - l + "px", n.isTopdown = !1) : (l += t, a.$maxPixelHeight = o - l - .2 * t, s.style.top = l + "px", s.style.bottom = "", n.isTopdown = !0), s.style.display = "";
      var h = e.left;
      h + s.offsetWidth > u && (h = u - s.offsetWidth), s.style.left = h + "px", this._signal("show"), i = null, n.isOpen = !0;
    }, n.goTo = function (e) {
      var t = this.getRow(),
          n = this.session.getLength() - 1;

      switch (e) {
        case "up":
          t = t <= 0 ? n : t - 1;
          break;

        case "down":
          t = t >= n ? -1 : t + 1;
          break;

        case "start":
          t = 0;
          break;

        case "end":
          t = n;
      }

      this.setRow(t);
    }, n.getTextLeftOffset = function () {
      return this.$borderSize + this.renderer.$padding + this.$imageSize;
    }, n.$imageSize = 0, n.$borderSize = 1, n;
  };

  a.importCssString(".ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {    background-color: #CAD6FA;    z-index: 1;}.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {    background-color: #3a674e;}.ace_editor.ace_autocomplete .ace_line-hover {    border: 1px solid #abbffe;    margin-top: -1px;    background: rgba(233,233,253,0.4);    position: absolute;    z-index: 2;}.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {    border: 1px solid rgba(109, 150, 13, 0.8);    background: rgba(58, 103, 78, 0.62);}.ace_completion-meta {    opacity: 0.5;    margin: 0.9em;}.ace_completion-message {    color: blue;}.ace_editor.ace_autocomplete .ace_completion-highlight{    color: #2d69c7;}.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{    color: #93ca12;}.ace_editor.ace_autocomplete {    width: 300px;    z-index: 200000;    border: 1px lightgray solid;    position: fixed;    box-shadow: 2px 3px 5px rgba(0,0,0,.2);    line-height: 1.4;    background: #fefefe;    color: #111;}.ace_dark.ace_editor.ace_autocomplete {    border: 1px #484747 solid;    box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);    line-height: 1.4;    background: #25282c;    color: #c1c1c1;}", "autocompletion.css"), t.AcePopup = l, t.$singleLineEditor = f;
}), ace.define("ace/autocomplete/util", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.parForEach = function (e, t, n) {
    var r = 0,
        i = e.length;
    i === 0 && n();

    for (var s = 0; s < i; s++) {
      t(e[s], function (e, t) {
        r++, r === i && n(e, t);
      });
    }
  };

  var r = /[a-zA-Z_0-9\$\-\u00A2-\u2000\u2070-\uFFFF]/;
  t.retrievePrecedingIdentifier = function (e, t, n) {
    n = n || r;
    var i = [];

    for (var s = t - 1; s >= 0; s--) {
      if (!n.test(e[s])) break;
      i.push(e[s]);
    }

    return i.reverse().join("");
  }, t.retrieveFollowingIdentifier = function (e, t, n) {
    n = n || r;
    var i = [];

    for (var s = t; s < e.length; s++) {
      if (!n.test(e[s])) break;
      i.push(e[s]);
    }

    return i;
  }, t.getCompletionPrefix = function (e) {
    var t = e.getCursorPosition(),
        n = e.session.getLine(t.row),
        r;
    return e.completers.forEach(function (e) {
      e.identifierRegexps && e.identifierRegexps.forEach(function (e) {
        !r && e && (r = this.retrievePrecedingIdentifier(n, t.column, e));
      }.bind(this));
    }.bind(this)), r || this.retrievePrecedingIdentifier(n, t.column);
  };
}), ace.define("ace/autocomplete", ["require", "exports", "module", "ace/keyboard/hash_handler", "ace/autocomplete/popup", "ace/autocomplete/util", "ace/lib/lang", "ace/lib/dom", "ace/snippets", "ace/config"], function (e, t, n) {
  "use strict";

  var r = e("./keyboard/hash_handler").HashHandler,
      i = e("./autocomplete/popup").AcePopup,
      s = e("./autocomplete/util"),
      o = e("./lib/lang"),
      u = e("./lib/dom"),
      a = e("./snippets").snippetManager,
      f = e("./config"),
      l = function l() {
    this.autoInsert = !1, this.autoSelect = !0, this.exactMatch = !1, this.gatherCompletionsId = 0, this.keyboardHandler = new r(), this.keyboardHandler.bindKeys(this.commands), this.blurListener = this.blurListener.bind(this), this.changeListener = this.changeListener.bind(this), this.mousedownListener = this.mousedownListener.bind(this), this.mousewheelListener = this.mousewheelListener.bind(this), this.changeTimer = o.delayedCall(function () {
      this.updateCompletions(!0);
    }.bind(this)), this.tooltipTimer = o.delayedCall(this.updateDocTooltip.bind(this), 50);
  };

  (function () {
    this.$init = function () {
      return this.popup = new i(document.body || document.documentElement), this.popup.on("click", function (e) {
        this.insertMatch(), e.stop();
      }.bind(this)), this.popup.focus = this.editor.focus.bind(this.editor), this.popup.on("show", this.tooltipTimer.bind(null, null)), this.popup.on("select", this.tooltipTimer.bind(null, null)), this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null)), this.popup;
    }, this.getPopup = function () {
      return this.popup || this.$init();
    }, this.openPopup = function (e, t, n) {
      this.popup || this.$init(), this.popup.autoSelect = this.autoSelect, this.popup.setData(this.completions.filtered, this.completions.filterText), e.keyBinding.addKeyboardHandler(this.keyboardHandler);
      var r = e.renderer;
      this.popup.setRow(this.autoSelect ? 0 : -1);

      if (!n) {
        this.popup.setTheme(e.getTheme()), this.popup.setFontSize(e.getFontSize());
        var i = r.layerConfig.lineHeight,
            s = r.$cursorLayer.getPixelPosition(this.base, !0);
        s.left -= this.popup.getTextLeftOffset();
        var o = e.container.getBoundingClientRect();
        s.top += o.top - r.layerConfig.offset, s.left += o.left - e.renderer.scrollLeft, s.left += r.gutterWidth, this.popup.show(s, i);
      } else n && !t && this.detach();

      this.changeTimer.cancel();
    }, this.detach = function () {
      this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler), this.editor.off("changeSelection", this.changeListener), this.editor.off("blur", this.blurListener), this.editor.off("mousedown", this.mousedownListener), this.editor.off("mousewheel", this.mousewheelListener), this.changeTimer.cancel(), this.hideDocTooltip(), this.gatherCompletionsId += 1, this.popup && this.popup.isOpen && this.popup.hide(), this.base && this.base.detach(), this.activated = !1, this.completions = this.base = null;
    }, this.changeListener = function (e) {
      var t = this.editor.selection.lead;
      (t.row != this.base.row || t.column < this.base.column) && this.detach(), this.activated ? this.changeTimer.schedule() : this.detach();
    }, this.blurListener = function (e) {
      var t = document.activeElement,
          n = this.editor.textInput.getElement(),
          r = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget),
          i = this.popup && this.popup.container;
      t != n && t.parentNode != i && !r && t != this.tooltipNode && e.relatedTarget != n && this.detach();
    }, this.mousedownListener = function (e) {
      this.detach();
    }, this.mousewheelListener = function (e) {
      this.detach();
    }, this.goTo = function (e) {
      this.popup.goTo(e);
    }, this.insertMatch = function (e, t) {
      e || (e = this.popup.getData(this.popup.getRow()));
      if (!e) return !1;
      var n = this.completions;
      this.editor.startOperation({
        command: {
          name: "insertMatch"
        }
      });
      if (e.completer && e.completer.insertMatch) e.completer.insertMatch(this.editor, e);else {
        if (n.filterText) {
          var r = this.editor.selection.getAllRanges();

          for (var i = 0, s; s = r[i]; i++) {
            s.start.column -= n.filterText.length, this.editor.session.remove(s);
          }
        }

        e.snippet ? a.insertSnippet(this.editor, e.snippet) : this.editor.execCommand("insertstring", e.value || e);
      }
      this.completions == n && this.detach(), this.editor.endOperation();
    }, this.commands = {
      Up: function Up(e) {
        e.completer.goTo("up");
      },
      Down: function Down(e) {
        e.completer.goTo("down");
      },
      "Ctrl-Up|Ctrl-Home": function CtrlUpCtrlHome(e) {
        e.completer.goTo("start");
      },
      "Ctrl-Down|Ctrl-End": function CtrlDownCtrlEnd(e) {
        e.completer.goTo("end");
      },
      Esc: function Esc(e) {
        e.completer.detach();
      },
      Return: function Return(e) {
        return e.completer.insertMatch();
      },
      "Shift-Return": function ShiftReturn(e) {
        e.completer.insertMatch(null, {
          deleteSuffix: !0
        });
      },
      Tab: function Tab(e) {
        var t = e.completer.insertMatch();
        if (!!t || !!e.tabstopManager) return t;
        e.completer.goTo("down");
      },
      PageUp: function PageUp(e) {
        e.completer.popup.gotoPageUp();
      },
      PageDown: function PageDown(e) {
        e.completer.popup.gotoPageDown();
      }
    }, this.gatherCompletions = function (e, t) {
      var n = e.getSession(),
          r = e.getCursorPosition(),
          i = s.getCompletionPrefix(e);
      this.base = n.doc.createAnchor(r.row, r.column - i.length), this.base.$insertRight = !0;
      var o = [],
          u = e.completers.length;
      return e.completers.forEach(function (a, f) {
        a.getCompletions(e, n, r, i, function (n, r) {
          !n && r && (o = o.concat(r)), t(null, {
            prefix: s.getCompletionPrefix(e),
            matches: o,
            finished: --u === 0
          });
        });
      }), !0;
    }, this.showPopup = function (e, t) {
      this.editor && this.detach(), this.activated = !0, this.editor = e, e.completer != this && (e.completer && e.completer.detach(), e.completer = this), e.on("changeSelection", this.changeListener), e.on("blur", this.blurListener), e.on("mousedown", this.mousedownListener), e.on("mousewheel", this.mousewheelListener), this.updateCompletions(!1, t);
    }, this.updateCompletions = function (e, t) {
      if (e && this.base && this.completions) {
        var n = this.editor.getCursorPosition(),
            r = this.editor.session.getTextRange({
          start: this.base,
          end: n
        });
        if (r == this.completions.filterText) return;
        this.completions.setFilter(r);
        if (!this.completions.filtered.length) return this.detach();
        if (this.completions.filtered.length == 1 && this.completions.filtered[0].value == r && !this.completions.filtered[0].snippet) return this.detach();
        this.openPopup(this.editor, r, e);
        return;
      }

      if (t && t.matches) {
        var n = this.editor.getSelectionRange().start;
        return this.base = this.editor.session.doc.createAnchor(n.row, n.column), this.base.$insertRight = !0, this.completions = new c(t.matches), this.openPopup(this.editor, "", e);
      }

      var i = this.gatherCompletionsId;
      this.gatherCompletions(this.editor, function (t, n) {
        var r = function () {
          if (!n.finished) return;
          return this.detach();
        }.bind(this),
            s = n.prefix,
            o = n && n.matches;

        if (!o || !o.length) return r();
        if (s.indexOf(n.prefix) !== 0 || i != this.gatherCompletionsId) return;
        this.completions = new c(o), this.exactMatch && (this.completions.exactMatch = !0), this.completions.setFilter(s);
        var u = this.completions.filtered;
        if (!u.length) return r();
        if (u.length == 1 && u[0].value == s && !u[0].snippet) return r();
        if (this.autoInsert && u.length == 1 && n.finished) return this.insertMatch(u[0]);
        this.openPopup(this.editor, s, e);
      }.bind(this));
    }, this.cancelContextMenu = function () {
      this.editor.$mouseHandler.cancelContextMenu();
    }, this.updateDocTooltip = function () {
      var e = this.popup,
          t = e.data,
          n = t && (t[e.getHoveredRow()] || t[e.getRow()]),
          r = null;
      if (!n || !this.editor || !this.popup.isOpen) return this.hideDocTooltip();
      this.editor.completers.some(function (e) {
        return e.getDocTooltip && (r = e.getDocTooltip(n)), r;
      }), !r && typeof n != "string" && (r = n), typeof r == "string" && (r = {
        docText: r
      });
      if (!r || !r.docHTML && !r.docText) return this.hideDocTooltip();
      this.showDocTooltip(r);
    }, this.showDocTooltip = function (e) {
      this.tooltipNode || (this.tooltipNode = u.createElement("div"), this.tooltipNode.className = "ace_tooltip ace_doc-tooltip", this.tooltipNode.style.margin = 0, this.tooltipNode.style.pointerEvents = "auto", this.tooltipNode.tabIndex = -1, this.tooltipNode.onblur = this.blurListener.bind(this), this.tooltipNode.onclick = this.onTooltipClick.bind(this));
      var t = this.tooltipNode;
      e.docHTML ? t.innerHTML = e.docHTML : e.docText && (t.textContent = e.docText), t.parentNode || document.body.appendChild(t);
      var n = this.popup,
          r = n.container.getBoundingClientRect();
      t.style.top = n.container.style.top, t.style.bottom = n.container.style.bottom, t.style.display = "block", window.innerWidth - r.right < 320 ? r.left < 320 ? n.isTopdown ? (t.style.top = r.bottom + "px", t.style.left = r.left + "px", t.style.right = "", t.style.bottom = "") : (t.style.top = n.container.offsetTop - t.offsetHeight + "px", t.style.left = r.left + "px", t.style.right = "", t.style.bottom = "") : (t.style.right = window.innerWidth - r.left + "px", t.style.left = "") : (t.style.left = r.right + 1 + "px", t.style.right = "");
    }, this.hideDocTooltip = function () {
      this.tooltipTimer.cancel();
      if (!this.tooltipNode) return;
      var e = this.tooltipNode;
      !this.editor.isFocused() && document.activeElement == e && this.editor.focus(), this.tooltipNode = null, e.parentNode && e.parentNode.removeChild(e);
    }, this.onTooltipClick = function (e) {
      var t = e.target;

      while (t && t != this.tooltipNode) {
        if (t.nodeName == "A" && t.href) {
          t.rel = "noreferrer", t.target = "_blank";
          break;
        }

        t = t.parentNode;
      }
    }, this.destroy = function () {
      this.detach();

      if (this.popup) {
        this.popup.destroy();
        var e = this.popup.container;
        e && e.parentNode && e.parentNode.removeChild(e);
      }

      this.editor && this.editor.completer == this && this.editor.completer == null, this.popup = null;
    };
  }).call(l.prototype), l["for"] = function (e) {
    return e.completer ? e.completer : (f.get("sharedPopups") ? (l.$shared || (l.$sharedInstance = new l()), e.completer = l.$sharedInstance) : (e.completer = new l(), e.once("destroy", function (e, t) {
      t.completer.destroy();
    })), e.completer);
  }, l.startCommand = {
    name: "startAutocomplete",
    exec: function exec(e, t) {
      var n = l["for"](e);
      n.autoInsert = !1, n.autoSelect = !0, n.showPopup(e, t), n.cancelContextMenu();
    },
    bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space"
  };

  var c = function c(e, t) {
    this.all = e, this.filtered = e, this.filterText = t || "", this.exactMatch = !1;
  };

  (function () {
    this.setFilter = function (e) {
      if (e.length > this.filterText && e.lastIndexOf(this.filterText, 0) === 0) var t = this.filtered;else var t = this.all;
      this.filterText = e, t = this.filterCompletions(t, this.filterText), t = t.sort(function (e, t) {
        return t.exactMatch - e.exactMatch || t.$score - e.$score || (e.caption || e.value).localeCompare(t.caption || t.value);
      });
      var n = null;
      t = t.filter(function (e) {
        var t = e.snippet || e.caption || e.value;
        return t === n ? !1 : (n = t, !0);
      }), this.filtered = t;
    }, this.filterCompletions = function (e, t) {
      var n = [],
          r = t.toUpperCase(),
          i = t.toLowerCase();

      e: for (var s = 0, o; o = e[s]; s++) {
        var u = o.caption || o.value || o.snippet;
        if (!u) continue;
        var a = -1,
            f = 0,
            l = 0,
            c,
            h;

        if (this.exactMatch) {
          if (t !== u.substr(0, t.length)) continue e;
        } else {
          var p = u.toLowerCase().indexOf(i);
          if (p > -1) l = p;else for (var d = 0; d < t.length; d++) {
            var v = u.indexOf(i[d], a + 1),
                m = u.indexOf(r[d], a + 1);
            c = v >= 0 ? m < 0 || v < m ? v : m : m;
            if (c < 0) continue e;
            h = c - a - 1, h > 0 && (a === -1 && (l += 10), l += h, f |= 1 << d), a = c;
          }
        }

        o.matchMask = f, o.exactMatch = l ? 0 : 1, o.$score = (o.score || 0) - l, n.push(o);
      }

      return n;
    };
  }).call(c.prototype), t.Autocomplete = l, t.FilteredList = c;
}), ace.define("ace/autocomplete/text_completer", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  function s(e, t) {
    var n = e.getTextRange(r.fromPoints({
      row: 0,
      column: 0
    }, t));
    return n.split(i).length - 1;
  }

  function o(e, t) {
    var n = s(e, t),
        r = e.getValue().split(i),
        o = Object.create(null),
        u = r[n];
    return r.forEach(function (e, t) {
      if (!e || e === u) return;
      var i = Math.abs(n - t),
          s = r.length - i;
      o[e] ? o[e] = Math.max(s, o[e]) : o[e] = s;
    }), o;
  }

  var r = e("../range").Range,
      i = /[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;

  t.getCompletions = function (e, t, n, r, i) {
    var s = o(t, n),
        u = Object.keys(s);
    i(null, u.map(function (e) {
      return {
        caption: e,
        value: e,
        score: s[e],
        meta: "local"
      };
    }));
  };
}), ace.define("ace/ext/language_tools", ["require", "exports", "module", "ace/snippets", "ace/autocomplete", "ace/config", "ace/lib/lang", "ace/autocomplete/util", "ace/autocomplete/text_completer", "ace/editor", "ace/config"], function (e, t, n) {
  "use strict";

  var r = e("../snippets").snippetManager,
      i = e("../autocomplete").Autocomplete,
      s = e("../config"),
      o = e("../lib/lang"),
      u = e("../autocomplete/util"),
      a = e("../autocomplete/text_completer"),
      f = {
    getCompletions: function getCompletions(e, t, n, r, i) {
      if (t.$mode.completer) return t.$mode.completer.getCompletions(e, t, n, r, i);
      var s = e.session.getState(n.row),
          o = t.$mode.getCompletions(s, t, n, r);
      i(null, o);
    }
  },
      l = {
    getCompletions: function getCompletions(e, t, n, i, s) {
      var o = [],
          u = t.getTokenAt(n.row, n.column);
      u && u.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/) ? o.push("html-tag") : o = r.getActiveScopes(e);
      var a = r.snippetMap,
          f = [];
      o.forEach(function (e) {
        var t = a[e] || [];

        for (var n = t.length; n--;) {
          var r = t[n],
              i = r.name || r.tabTrigger;
          if (!i) continue;
          f.push({
            caption: i,
            snippet: r.content,
            meta: r.tabTrigger && !r.name ? r.tabTrigger + "\u21E5 " : "snippet",
            type: "snippet"
          });
        }
      }, this), s(null, f);
    },
    getDocTooltip: function getDocTooltip(e) {
      e.type == "snippet" && !e.docHTML && (e.docHTML = ["<b>", o.escapeHTML(e.caption), "</b>", "<hr></hr>", o.escapeHTML(e.snippet)].join(""));
    }
  },
      c = [l, a, f];
  t.setCompleters = function (e) {
    c.length = 0, e && c.push.apply(c, e);
  }, t.addCompleter = function (e) {
    c.push(e);
  }, t.textCompleter = a, t.keyWordCompleter = f, t.snippetCompleter = l;

  var h = {
    name: "expandSnippet",
    exec: function exec(e) {
      return r.expandWithTab(e);
    },
    bindKey: "Tab"
  },
      p = function p(e, t) {
    d(t.session.$mode);
  },
      d = function d(e) {
    typeof e == "string" && (e = s.$modes[e]);
    if (!e) return;
    r.files || (r.files = {}), v(e.$id, e.snippetFileId), e.modes && e.modes.forEach(d);
  },
      v = function v(e, t) {
    if (!t || !e || r.files[e]) return;
    r.files[e] = {}, s.loadModule(t, function (t) {
      if (!t) return;
      r.files[e] = t, !t.snippets && t.snippetText && (t.snippets = r.parseSnippetFile(t.snippetText)), r.register(t.snippets || [], t.scope), t.includeScopes && (r.snippetMap[t.scope].includeScopes = t.includeScopes, t.includeScopes.forEach(function (e) {
        d("ace/mode/" + e);
      }));
    });
  },
      m = function m(e) {
    var t = e.editor,
        n = t.completer && t.completer.activated;
    if (e.command.name === "backspace") n && !u.getCompletionPrefix(t) && t.completer.detach();else if (e.command.name === "insertstring") {
      var r = u.getCompletionPrefix(t);

      if (r && !n) {
        var s = i["for"](t);
        s.autoInsert = !1, s.showPopup(t);
      }
    }
  },
      g = e("../editor").Editor;

  e("../config").defineOptions(g.prototype, "editor", {
    enableBasicAutocompletion: {
      set: function set(e) {
        e ? (this.completers || (this.completers = Array.isArray(e) ? e : c), this.commands.addCommand(i.startCommand)) : this.commands.removeCommand(i.startCommand);
      },
      value: !1
    },
    enableLiveAutocompletion: {
      set: function set(e) {
        e ? (this.completers || (this.completers = Array.isArray(e) ? e : c), this.commands.on("afterExec", m)) : this.commands.removeListener("afterExec", m);
      },
      value: !1
    },
    enableSnippets: {
      set: function set(e) {
        e ? (this.commands.addCommand(h), this.on("changeMode", p), p(null, this)) : (this.commands.removeCommand(h), this.off("changeMode", p));
      },
      value: !1
    }
  });
});

(function () {
  ace.require(["ace/ext/language_tools"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/ext-searchbox.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/ext-searchbox.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/ext/searchbox", ["require", "exports", "module", "ace/lib/dom", "ace/lib/lang", "ace/lib/event", "ace/keyboard/hash_handler", "ace/lib/keys"], function (e, t, n) {
  "use strict";

  var r = e("../lib/dom"),
      i = e("../lib/lang"),
      s = e("../lib/event"),
      o = '.ace_search {background-color: #ddd;color: #666;border: 1px solid #cbcbcb;border-top: 0 none;overflow: hidden;margin: 0;padding: 4px 6px 0 4px;position: absolute;top: 0;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {margin: 0 20px 4px 0;overflow: hidden;line-height: 1.9;}.ace_replace_form {margin-right: 0;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {border-radius: 3px 0 0 3px;background-color: white;color: black;border: 1px solid #cbcbcb;border-right: 0 none;outline: 0;padding: 0;font-size: inherit;margin: 0;line-height: inherit;padding: 0 6px;min-width: 17em;vertical-align: top;min-height: 1.8em;box-sizing: content-box;}.ace_searchbtn {border: 1px solid #cbcbcb;line-height: inherit;display: inline-block;padding: 0 6px;background: #fff;border-right: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;margin: 0;position: relative;color: #666;}.ace_searchbtn:last-child {border-radius: 0 3px 3px 0;border-right: 1px solid #cbcbcb;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn:hover {background-color: #eef1f6;}.ace_searchbtn.prev, .ace_searchbtn.next {padding: 0px 0.7em}.ace_searchbtn.prev:after, .ace_searchbtn.next:after {content: "";border: solid 2px #888;width: 0.5em;height: 0.5em;border-width:  2px 0 0 2px;display:inline-block;transform: rotate(-45deg);}.ace_searchbtn.next:after {border-width: 0 2px 2px 0 ;}.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;font: 16px/16px Arial;padding: 0;height: 14px;width: 14px;top: 9px;right: 7px;position: absolute;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;box-sizing:    border-box!important;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;clear: both;}.ace_search_counter {float: left;font-family: arial;padding: 0 8px;}',
      u = e("../keyboard/hash_handler").HashHandler,
      a = e("../lib/keys"),
      f = 999;
  r.importCssString(o, "ace_searchbox");

  var l = function l(e, t, n) {
    var i = r.createElement("div");
    r.buildDom(["div", {
      "class": "ace_search right"
    }, ["span", {
      action: "hide",
      "class": "ace_searchbtn_close"
    }], ["div", {
      "class": "ace_search_form"
    }, ["input", {
      "class": "ace_search_field",
      placeholder: "Search for",
      spellcheck: "false"
    }], ["span", {
      action: "findPrev",
      "class": "ace_searchbtn prev"
    }, "\u200B"], ["span", {
      action: "findNext",
      "class": "ace_searchbtn next"
    }, "\u200B"], ["span", {
      action: "findAll",
      "class": "ace_searchbtn",
      title: "Alt-Enter"
    }, "All"]], ["div", {
      "class": "ace_replace_form"
    }, ["input", {
      "class": "ace_search_field",
      placeholder: "Replace with",
      spellcheck: "false"
    }], ["span", {
      action: "replaceAndFindNext",
      "class": "ace_searchbtn"
    }, "Replace"], ["span", {
      action: "replaceAll",
      "class": "ace_searchbtn"
    }, "All"]], ["div", {
      "class": "ace_search_options"
    }, ["span", {
      action: "toggleReplace",
      "class": "ace_button",
      title: "Toggle Replace mode",
      style: "float:left;margin-top:-2px;padding:0 5px;"
    }, "+"], ["span", {
      "class": "ace_search_counter"
    }], ["span", {
      action: "toggleRegexpMode",
      "class": "ace_button",
      title: "RegExp Search"
    }, ".*"], ["span", {
      action: "toggleCaseSensitive",
      "class": "ace_button",
      title: "CaseSensitive Search"
    }, "Aa"], ["span", {
      action: "toggleWholeWords",
      "class": "ace_button",
      title: "Whole Word Search"
    }, "\\b"], ["span", {
      action: "searchInSelection",
      "class": "ace_button",
      title: "Search In Selection"
    }, "S"]]], i), this.element = i.firstChild, this.setSession = this.setSession.bind(this), this.$init(), this.setEditor(e), r.importCssString(o, "ace_searchbox", e.container);
  };

  (function () {
    this.setEditor = function (e) {
      e.searchBox = this, e.renderer.scroller.appendChild(this.element), this.editor = e;
    }, this.setSession = function (e) {
      this.searchRange = null, this.$syncOptions(!0);
    }, this.$initElements = function (e) {
      this.searchBox = e.querySelector(".ace_search_form"), this.replaceBox = e.querySelector(".ace_replace_form"), this.searchOption = e.querySelector("[action=searchInSelection]"), this.replaceOption = e.querySelector("[action=toggleReplace]"), this.regExpOption = e.querySelector("[action=toggleRegexpMode]"), this.caseSensitiveOption = e.querySelector("[action=toggleCaseSensitive]"), this.wholeWordOption = e.querySelector("[action=toggleWholeWords]"), this.searchInput = this.searchBox.querySelector(".ace_search_field"), this.replaceInput = this.replaceBox.querySelector(".ace_search_field"), this.searchCounter = e.querySelector(".ace_search_counter");
    }, this.$init = function () {
      var e = this.element;
      this.$initElements(e);
      var t = this;
      s.addListener(e, "mousedown", function (e) {
        setTimeout(function () {
          t.activeInput.focus();
        }, 0), s.stopPropagation(e);
      }), s.addListener(e, "click", function (e) {
        var n = e.target || e.srcElement,
            r = n.getAttribute("action");
        r && t[r] ? t[r]() : t.$searchBarKb.commands[r] && t.$searchBarKb.commands[r].exec(t), s.stopPropagation(e);
      }), s.addCommandKeyListener(e, function (e, n, r) {
        var i = a.keyCodeToString(r),
            o = t.$searchBarKb.findKeyCommand(n, i);
        o && o.exec && (o.exec(t), s.stopEvent(e));
      }), this.$onChange = i.delayedCall(function () {
        t.find(!1, !1);
      }), s.addListener(this.searchInput, "input", function () {
        t.$onChange.schedule(20);
      }), s.addListener(this.searchInput, "focus", function () {
        t.activeInput = t.searchInput, t.searchInput.value && t.highlight();
      }), s.addListener(this.replaceInput, "focus", function () {
        t.activeInput = t.replaceInput, t.searchInput.value && t.highlight();
      });
    }, this.$closeSearchBarKb = new u([{
      bindKey: "Esc",
      name: "closeSearchBar",
      exec: function exec(e) {
        e.searchBox.hide();
      }
    }]), this.$searchBarKb = new u(), this.$searchBarKb.bindKeys({
      "Ctrl-f|Command-f": function CtrlFCommandF(e) {
        var t = e.isReplace = !e.isReplace;
        e.replaceBox.style.display = t ? "" : "none", e.replaceOption.checked = !1, e.$syncOptions(), e.searchInput.focus();
      },
      "Ctrl-H|Command-Option-F": function CtrlHCommandOptionF(e) {
        if (e.editor.getReadOnly()) return;
        e.replaceOption.checked = !0, e.$syncOptions(), e.replaceInput.focus();
      },
      "Ctrl-G|Command-G": function CtrlGCommandG(e) {
        e.findNext();
      },
      "Ctrl-Shift-G|Command-Shift-G": function CtrlShiftGCommandShiftG(e) {
        e.findPrev();
      },
      esc: function esc(e) {
        setTimeout(function () {
          e.hide();
        });
      },
      Return: function Return(e) {
        e.activeInput == e.replaceInput && e.replace(), e.findNext();
      },
      "Shift-Return": function ShiftReturn(e) {
        e.activeInput == e.replaceInput && e.replace(), e.findPrev();
      },
      "Alt-Return": function AltReturn(e) {
        e.activeInput == e.replaceInput && e.replaceAll(), e.findAll();
      },
      Tab: function Tab(e) {
        (e.activeInput == e.replaceInput ? e.searchInput : e.replaceInput).focus();
      }
    }), this.$searchBarKb.addCommands([{
      name: "toggleRegexpMode",
      bindKey: {
        win: "Alt-R|Alt-/",
        mac: "Ctrl-Alt-R|Ctrl-Alt-/"
      },
      exec: function exec(e) {
        e.regExpOption.checked = !e.regExpOption.checked, e.$syncOptions();
      }
    }, {
      name: "toggleCaseSensitive",
      bindKey: {
        win: "Alt-C|Alt-I",
        mac: "Ctrl-Alt-R|Ctrl-Alt-I"
      },
      exec: function exec(e) {
        e.caseSensitiveOption.checked = !e.caseSensitiveOption.checked, e.$syncOptions();
      }
    }, {
      name: "toggleWholeWords",
      bindKey: {
        win: "Alt-B|Alt-W",
        mac: "Ctrl-Alt-B|Ctrl-Alt-W"
      },
      exec: function exec(e) {
        e.wholeWordOption.checked = !e.wholeWordOption.checked, e.$syncOptions();
      }
    }, {
      name: "toggleReplace",
      exec: function exec(e) {
        e.replaceOption.checked = !e.replaceOption.checked, e.$syncOptions();
      }
    }, {
      name: "searchInSelection",
      exec: function exec(e) {
        e.searchOption.checked = !e.searchRange, e.setSearchRange(e.searchOption.checked && e.editor.getSelectionRange()), e.$syncOptions();
      }
    }]), this.setSearchRange = function (e) {
      this.searchRange = e, e ? this.searchRangeMarker = this.editor.session.addMarker(e, "ace_active-line") : this.searchRangeMarker && (this.editor.session.removeMarker(this.searchRangeMarker), this.searchRangeMarker = null);
    }, this.$syncOptions = function (e) {
      r.setCssClass(this.replaceOption, "checked", this.searchRange), r.setCssClass(this.searchOption, "checked", this.searchOption.checked), this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+", r.setCssClass(this.regExpOption, "checked", this.regExpOption.checked), r.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked), r.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked);
      var t = this.editor.getReadOnly();
      this.replaceOption.style.display = t ? "none" : "", this.replaceBox.style.display = this.replaceOption.checked && !t ? "" : "none", this.find(!1, !1, e);
    }, this.highlight = function (e) {
      this.editor.session.highlight(e || this.editor.$search.$options.re), this.editor.renderer.updateBackMarkers();
    }, this.find = function (e, t, n) {
      var i = this.editor.find(this.searchInput.value, {
        skipCurrent: e,
        backwards: t,
        wrap: !0,
        regExp: this.regExpOption.checked,
        caseSensitive: this.caseSensitiveOption.checked,
        wholeWord: this.wholeWordOption.checked,
        preventScroll: n,
        range: this.searchRange
      }),
          s = !i && this.searchInput.value;
      r.setCssClass(this.searchBox, "ace_nomatch", s), this.editor._emit("findSearchBox", {
        match: !s
      }), this.highlight(), this.updateCounter();
    }, this.updateCounter = function () {
      var e = this.editor,
          t = e.$search.$options.re,
          n = 0,
          r = 0;

      if (t) {
        var i = this.searchRange ? e.session.getTextRange(this.searchRange) : e.getValue(),
            s = e.session.doc.positionToIndex(e.selection.anchor);
        this.searchRange && (s -= e.session.doc.positionToIndex(this.searchRange.start));
        var o = t.lastIndex = 0,
            u;

        while (u = t.exec(i)) {
          n++, o = u.index, o <= s && r++;
          if (n > f) break;

          if (!u[0]) {
            t.lastIndex = o += 1;
            if (o >= i.length) break;
          }
        }
      }

      this.searchCounter.textContent = r + " of " + (n > f ? f + "+" : n);
    }, this.findNext = function () {
      this.find(!0, !1);
    }, this.findPrev = function () {
      this.find(!0, !0);
    }, this.findAll = function () {
      var e = this.editor.findAll(this.searchInput.value, {
        regExp: this.regExpOption.checked,
        caseSensitive: this.caseSensitiveOption.checked,
        wholeWord: this.wholeWordOption.checked
      }),
          t = !e && this.searchInput.value;
      r.setCssClass(this.searchBox, "ace_nomatch", t), this.editor._emit("findSearchBox", {
        match: !t
      }), this.highlight(), this.hide();
    }, this.replace = function () {
      this.editor.getReadOnly() || this.editor.replace(this.replaceInput.value);
    }, this.replaceAndFindNext = function () {
      this.editor.getReadOnly() || (this.editor.replace(this.replaceInput.value), this.findNext());
    }, this.replaceAll = function () {
      this.editor.getReadOnly() || this.editor.replaceAll(this.replaceInput.value);
    }, this.hide = function () {
      this.active = !1, this.setSearchRange(null), this.editor.off("changeSession", this.setSession), this.element.style.display = "none", this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb), this.editor.focus();
    }, this.show = function (e, t) {
      this.active = !0, this.editor.on("changeSession", this.setSession), this.element.style.display = "", this.replaceOption.checked = t, e && (this.searchInput.value = e), this.searchInput.focus(), this.searchInput.select(), this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb), this.$syncOptions(!0);
    }, this.isFocused = function () {
      var e = document.activeElement;
      return e == this.searchInput || e == this.replaceInput;
    };
  }).call(l.prototype), t.SearchBox = l, t.Search = function (e, t) {
    var n = e.searchBox || new l(e);
    n.show(e.session.getTextRange(), t);
  };
});

(function () {
  ace.require(["ace/ext/searchbox"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-abap.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-abap.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/abap_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = this.createKeywordMapper({
      "variable.language": "this",
      keyword: "ADD ALIAS ALIASES ASCENDING ASSERT ASSIGN ASSIGNING AT BACK CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY DATA DEFINE DEFINITION DEFERRED DELETE DESCENDING DESCRIBE DETAIL DIVIDE DO ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT FETCH FIELDS FORM FORMAT FREE FROM FUNCTION GENERATE GET HIDE IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION LEAVE LIKE LINE LOAD LOCAL LOOP MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY ON OVERLAY OPTIONAL OTHERS PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT RAISE RANGES READ RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURN RETURNING ROLLBACK SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES UNASSIGN ULINE UNPACK UPDATE WHEN WHILE WINDOW WRITE OCCURS STRUCTURE OBJECT PROPERTY CASTING APPEND RAISING VALUE COLOR CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT ID NUMBER FOR TITLE OUTPUT WITH EXIT USING INTO WHERE GROUP BY HAVING ORDER BY SINGLE APPENDING CORRESPONDING FIELDS OF TABLE LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN",
      "constant.language": "TRUE FALSE NULL SPACE",
      "support.type": "c n i p f d t x string xstring decfloat16 decfloat34",
      "keyword.operator": "abs sign ceil floor trunc frac acos asin atan cos sin tan abapOperator cosh sinh tanh exp log log10 sqrt strlen xstrlen charlen numofchar dbmaxlen lines"
    }, "text", !0, " "),
        t = "WITH\\W+(?:HEADER\\W+LINE|FRAME|KEY)|NO\\W+STANDARD\\W+PAGE\\W+HEADING|EXIT\\W+FROM\\W+STEP\\W+LOOP|BEGIN\\W+OF\\W+(?:BLOCK|LINE)|BEGIN\\W+OF|END\\W+OF\\W+(?:BLOCK|LINE)|END\\W+OF|NO\\W+INTERVALS|RESPECTING\\W+BLANKS|SEPARATED\\W+BY|USING\\W+(?:EDIT\\W+MASK)|WHERE\\W+(?:LINE)|RADIOBUTTON\\W+GROUP|REF\\W+TO|(?:PUBLIC|PRIVATE|PROTECTED)(?:\\W+SECTION)?|DELETING\\W+(?:TRAILING|LEADING)(?:ALL\\W+OCCURRENCES)|(?:FIRST|LAST)\\W+OCCURRENCE|INHERITING\\W+FROM|LINE-COUNT|ADD-CORRESPONDING|AUTHORITY-CHECK|BREAK-POINT|CLASS-DATA|CLASS-METHODS|CLASS-METHOD|DIVIDE-CORRESPONDING|EDITOR-CALL|END-OF-DEFINITION|END-OF-PAGE|END-OF-SELECTION|FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|NEW-LINE|NEW-PAGE|NEW-SECTION|PRINT-CONTROL|RP-PROVIDE-FROM-LAST|SELECT-OPTIONS|SELECTION-SCREEN|START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYNTAX-TRACE|TOP-OF-PAGE|TYPE-POOL|TYPE-POOLS|LINE-SIZE|LINE-COUNT|MESSAGE-ID|DISPLAY-MODE|READ(?:-ONLY)?|IS\\W+(?:NOT\\W+)?(?:ASSIGNED|BOUND|INITIAL|SUPPLIED)";
    this.$rules = {
      start: [{
        token: "string",
        regex: "`",
        next: "string"
      }, {
        token: "string",
        regex: "'",
        next: "qstring"
      }, {
        token: "doc.comment",
        regex: /^\*.+/
      }, {
        token: "comment",
        regex: /".+$/
      }, {
        token: "invalid",
        regex: "\\.{2,}"
      }, {
        token: "keyword.operator",
        regex: /\W[\-+%=<>*]\W|\*\*|[~:,\.&$]|->*?|=>/
      }, {
        token: "paren.lparen",
        regex: "[\\[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+\\b"
      }, {
        token: "variable.parameter",
        regex: /sy|pa?\d\d\d\d\|t\d\d\d\.|innnn/
      }, {
        token: "keyword",
        regex: t
      }, {
        token: "variable.parameter",
        regex: /\w+-\w[\-\w]*/
      }, {
        token: e,
        regex: "\\b\\w+\\b"
      }, {
        caseInsensitive: !0
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: "''"
      }, {
        token: "string",
        regex: "'",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      string: [{
        token: "constant.language.escape",
        regex: "``"
      }, {
        token: "string",
        regex: "`",
        next: "start"
      }, {
        defaultToken: "string"
      }]
    };
  };

  r.inherits(s, i), t.AbapHighlightRules = s;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/abap", ["require", "exports", "module", "ace/mode/abap_highlight_rules", "ace/mode/folding/coffee", "ace/range", "ace/mode/text", "ace/lib/oop"], function (e, t, n) {
  "use strict";

  function a() {
    this.HighlightRules = r, this.foldingRules = new i();
  }

  var r = e("./abap_highlight_rules").AbapHighlightRules,
      i = e("./folding/coffee").FoldMode,
      s = e("../range").Range,
      o = e("./text").Mode,
      u = e("../lib/oop");
  u.inherits(a, o), function () {
    this.lineCommentStart = '"', this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t);
      return r;
    }, this.$id = "ace/mode/abap";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/abap"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-abc.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-abc.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/abc_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: ["zupfnoter.information.comment.line.percentage", "information.keyword", "in formation.keyword.embedded"],
        regex: "(%%%%)(hn\\.[a-z]*)(.*)",
        comment: "Instruction Comment"
      }, {
        token: ["information.comment.line.percentage", "information.keyword.embedded"],
        regex: "(%%)(.*)",
        comment: "Instruction Comment"
      }, {
        token: "comment.line.percentage",
        regex: "%.*",
        comment: "Comments"
      }, {
        token: "barline.keyword.operator",
        regex: "[\\[:]*[|:][|\\]:]*(?:\\[?[0-9]+)?|\\[[0-9]+",
        comment: "Bar lines"
      }, {
        token: ["information.keyword.embedded", "information.argument.string.unquoted"],
        regex: "(\\[[A-Za-z]:)([^\\]]*\\])",
        comment: "embedded Header lines"
      }, {
        token: ["information.keyword", "information.argument.string.unquoted"],
        regex: "^([A-Za-z]:)([^%\\\\]*)",
        comment: "Header lines"
      }, {
        token: ["text", "entity.name.function", "string.unquoted", "text"],
        regex: "(\\[)([A-Z]:)(.*?)(\\])",
        comment: "Inline fields"
      }, {
        token: ["accent.constant.language", "pitch.constant.numeric", "duration.constant.numeric"],
        regex: "([\\^=_]*)([A-Ga-gz][,']*)([0-9]*/*[><0-9]*)",
        comment: "Notes"
      }, {
        token: "zupfnoter.jumptarget.string.quoted",
        regex: '[\\"!]\\^\\:.*?[\\"!]',
        comment: "Zupfnoter jumptarget"
      }, {
        token: "zupfnoter.goto.string.quoted",
        regex: '[\\"!]\\^\\@.*?[\\"!]',
        comment: "Zupfnoter goto"
      }, {
        token: "zupfnoter.annotation.string.quoted",
        regex: '[\\"!]\\^\\!.*?[\\"!]',
        comment: "Zupfnoter annoation"
      }, {
        token: "zupfnoter.annotationref.string.quoted",
        regex: '[\\"!]\\^\\#.*?[\\"!]',
        comment: "Zupfnoter annotation reference"
      }, {
        token: "chordname.string.quoted",
        regex: '[\\"!]\\^.*?[\\"!]',
        comment: "abc chord"
      }, {
        token: "string.quoted",
        regex: '[\\"!].*?[\\"!]',
        comment: "abc annotation"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["abc"],
    name: "ABC",
    scopeName: "text.abcnotation"
  }, r.inherits(s, i), t.ABCHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/abc", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/abc_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./abc_highlight_rules").ABCHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "%", this.$id = "ace/mode/abc", this.snippetFileId = "ace/snippets/abc";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/abc"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-actionscript.js":
/*!*************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-actionscript.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/actionscript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "support.class.actionscript.2",
        regex: "\\b(?:R(?:ecordset|DBMSResolver|adioButton(?:Group)?)|X(?:ML(?:Socket|Node|Connector)?|UpdateResolverDataHolder)|M(?:M(?:Save|Execute)|icrophoneMicrophone|o(?:use|vieClip(?:Loader)?)|e(?:nu(?:Bar)?|dia(?:Controller|Display|Playback))|ath)|B(?:yName|inding|utton)|S(?:haredObject|ystem|crollPane|t(?:yleSheet|age|ream)|ound|e(?:ndEvent|rviceObject)|OAPCall|lide)|N(?:umericStepper|et(?:stream|S(?:tream|ervices)|Connection|Debug(?:Config)?))|C(?:heckBox|o(?:ntextMenu(?:Item)?|okie|lor|m(?:ponentMixins|boBox))|ustomActions|lient|amera)|T(?:ypedValue|ext(?:Snapshot|Input|F(?:ield|ormat)|Area)|ree|AB)|Object|D(?:ownload|elta(?:Item|Packet)?|at(?:e(?:Chooser|Field)?|a(?:G(?:lue|rid)|Set|Type)))|U(?:RL|TC|IScrollBar)|P(?:opUpManager|endingCall|r(?:intJob|o(?:duct|gressBar)))|E(?:ndPoint|rror)|Video|Key|F(?:RadioButton|GridColumn|MessageBox|BarChart|S(?:croll(?:Bar|Pane)|tyleFormat|plitView)|orm|C(?:heckbox|omboBox|alendar)|unction|T(?:icker|ooltip(?:Lite)?|ree(?:Node)?)|IconButton|D(?:ataGrid|raggablePane)|P(?:ieChart|ushButton|ro(?:gressBar|mptBox))|L(?:i(?:stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(?:indow|SDLURL|ebService(?:Connector)?)|L(?:ist|o(?:calConnection|ad(?:er|Vars)|g)|a(?:unch|bel))|A(?:sBroadcaster|cc(?:ordion|essibility)|S(?:Set(?:Native|PropFlags)|N(?:ew|ative)|C(?:onstructor|lamp(?:2)?)|InstanceOf)|pplication|lert|rray))\\b"
      }, {
        token: "support.function.actionscript.2",
        regex: "\\b(?:s(?:h(?:ift|ow(?:GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(?:ow|ePane))|c(?:hema|ale(?:X|Mode|Y|Content)|r(?:oll(?:Track|Drag)?|een(?:Resolution|Color|DPI)))|t(?:yleSheet|op(?:Drag|A(?:nimation|llSounds|gent))?|epSize|a(?:tus|rt(?:Drag|A(?:nimation|gent))?))|i(?:n|ze|lence(?:TimeOut|Level))|o(?:ngname|urce|rt(?:Items(?:By)?|On(?:HeaderRelease)?|able(?:Columns)?)?)|u(?:ppressInvalidCalls|bstr(?:ing)?)|p(?:li(?:ce|t)|aceCol(?:umnsEqually|lumnsEqually))|e(?:nd(?:DefaultPushButtonEvent|AndLoad)?|curity|t(?:R(?:GB|o(?:otNode|w(?:Height|Count))|esizable(?:Columns)?|a(?:nge|te))|G(?:ain|roupName)|X(?:AxisTitle)?|M(?:i(?:n(?:imum|utes)|lliseconds)|o(?:nth(?:Names)?|tionLevel|de)|ultilineMode|e(?:ssage|nu(?:ItemEnabled(?:At)?|EnabledAt)|dia)|a(?:sk|ximum))|B(?:u(?:tton(?:s|Width)|fferTime)|a(?:seTabIndex|ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Target|P(?:osition|roperties)|barState|Location)|t(?:yle(?:Property)?|opOnFocus|at(?:us|e))|i(?:ze|lenceLevel)|ort(?:able(?:Columns)?|Function)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)?|Style|Color|ed(?:Node(?:s)?|Cell|I(?:nd(?:ices|ex)|tem(?:s)?))?|able))|kin|m(?:oothness|allScroll))|H(?:ighlight(?:s|Color)|Scroll|o(?:urs|rizontal)|eader(?:Symbol|Height|Text|Property|Format|Width|Location)?|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:ode(?:Properties|ExpansionHandler)|ewTextFormat)|C(?:h(?:ildNodes|a(?:ngeHandler|rt(?:Title|EventHandler)))|o(?:ntent(?:Size)?|okie|lumns)|ell(?:Symbol|Data)|l(?:i(?:ckHandler|pboard)|oseHandler)|redentials)|T(?:ype(?:dVaule)?|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:out(?:Handler)?)?)|oggle|extFormat|ransform)|I(?:s(?:Branch|Open)|n(?:terval|putProperty)|con(?:SymbolName)?|te(?:rator|m(?:ByKey|Symbol)))|Orientation|D(?:i(?:splay(?:Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(?:pth(?:Below|To|Above)|fault(?:GatewayURL|Mappings|NodeIconSymbolName)|l(?:iveryMode|ay)|bug(?:ID)?)|a(?:yOfWeekNames|t(?:e(?:Filter)?|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Provider|All(?:Height|Property|Format|Width))?))|ra(?:wConnectors|gContent))|U(?:se(?:Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(?:osition|ercentComplete|an(?:e(?:M(?:inimumSize|aximumSize)|Size|Title))?|ro(?:pert(?:y(?:Data)?|iesAt)|gress))|E(?:nabled|dit(?:Handler|able)|xpand(?:NodeTrigger|erSymbolName))|V(?:Scroll|olume|alue(?:Source)?)|KeyFrameInterval|Quality|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:opback|adTarget)|a(?:rgeScroll|bel(?:Source|Placement)?))|A(?:s(?:Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:e(?:State(?:Handler)?|Handler)|ateHandler)|utoH(?:ideScrollBar|eight)))?|paratorBefore|ek|lect(?:ion(?:Disabled|Unfocused)?|ed(?:Node(?:s)?|Child|I(?:nd(?:ices|ex)|tem(?:s)?)|Dat(?:e|a))?|able(?:Ranges)?)|rver(?:String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(?:scroll(?:Policy)?|tml(?:Text)?|i(?:t(?:Test(?:TextNearPos)?|Area)|de(?:BuiltInItems|Child)?|ghlight(?:2D|3D)?)|orizontal|e(?:ight|ader(?:Re(?:nderer|lease)|Height|Text))|P(?:osition|ageScrollSize)|a(?:s(?:childNodes|MP3|S(?:creen(?:Broadcast|Playback)|treaming(?:Video|Audio)|ort)|Next|OwnProperty|Pr(?:inting|evious)|EmbeddedVideo|VideoEncoder|A(?:ccesibility|udio(?:Encoder)?))|ndlerName)|LineScrollSize)|ye(?:sLabel|ar)|n(?:o(?:t|de(?:Name|Close|Type|Open|Value)|Label)|u(?:llValue|mChild(?:S(?:creens|lides)|ren|Forms))|e(?:w(?:Item|line|Value|LocationDialog)|xt(?:S(?:cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(?:s)?)|c(?:h(?:ildNodes|eck|a(?:nge(?:sPending)?|r(?:CodeAt|At))|r)|o(?:s|n(?:st(?:ant|ructor)|nect|c(?:urrency|at)|t(?:ent(?:Type|Path)?|ains|rol(?:Placement|lerPolicy))|denseWhite|version)|py|l(?:or|umn(?:Stretch|Name(?:s)?|Count))|m(?:p(?:onent|lete)|ment))|u(?:stomItems|ePoint(?:s)?|r(?:veTo|Value|rent(?:Slide|ChildSlide|Item|F(?:ocused(?:S(?:creen|lide)|Form)|ps))))|e(?:il|ll(?:Renderer|Press|Edit|Focus(?:In|Out)))|l(?:i(?:ck|ents)|o(?:se(?:Button|Pane)?|ne(?:Node)?)|ear(?:S(?:haredObjects|treams)|Timeout|Interval)?)|a(?:ncelLabel|tch|p(?:tion|abilities)|l(?:cFields|l(?:e(?:e|r))?))|reate(?:GatewayConnection|Menu|Se(?:rver|gment)|C(?:hild(?:AtDepth)?|l(?:ient|ass(?:ChildAtDepth|Object(?:AtDepth)?))|all)|Text(?:Node|Field)|Item|Object(?:AtDepth)?|PopUp|E(?:lement|mptyMovieClip)))|t(?:h(?:is|row)|ype(?:of|Name)?|i(?:tle(?:StyleDeclaration)?|me(?:out)?)|o(?:talTime|String|olTipText|p|UpperCase|ggle(?:HighQuality)?|Lo(?:caleString|werCase))|e(?:st|llTarget|xt(?:RightMargin|Bold|S(?:ize|elected)|Height|Color|I(?:ndent|talic)|Disabled|Underline|F(?:ield|ont)|Width|LeftMargin|Align)?)|a(?:n|rget(?:Path)?|b(?:Stops|Children|Index|Enabled|leName))|r(?:y|igger|ac(?:e|k(?:AsMenu)?)))|i(?:s(?:Running|Branch|NaN|Con(?:soleOpen|nected)|Toggled|Installed|Open|D(?:own|ebugger)|P(?:urchased|ro(?:totypeOf|pertyEnumerable))|Empty|F(?:inite|ullyPopulated)|Local|Active)|n(?:s(?:tall|ertBefore)|cludeDeltaPacketInfo|t|it(?:ialize|Component|Pod|A(?:pplication|gent))?|de(?:nt|terminate|x(?:InParent(?:Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(?:F(?:ield|unction))?|t(?:e(?:ratorScrolled|m(?:s|RollO(?:ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(?:Case|White))|o(?:s|n(?:R(?:ollO(?:ut|ver)|e(?:s(?:ize|ult)|l(?:ease(?:Outside)?|aseOutside)))|XML|Mouse(?:Move|Down|Up|Wheel)|S(?:ync|croller|tatus|oundComplete|e(?:tFocus|lect(?:edItem)?))|N(?:oticeEvent|etworkChange)|C(?:hanged|onnect|l(?:ipEvent|ose))|ID3|D(?:isconnect|eactivate|ata|ragO(?:ut|ver))|Un(?:install|load)|P(?:aymentResult|ress)|EnterFrame|K(?:illFocus|ey(?:Down|Up))|Fault|Lo(?:ad|g)|A(?:ctiv(?:ity|ate)|ppSt(?:op|art)))?|pe(?:n|ration)|verLayChildren|kLabel|ldValue|r(?:d)?)|d(?:i(?:s(?:connect|play(?:Normal|ed(?:Month|Year)|Full)|able(?:Shader|d(?:Ranges|Days)|CloseBox|Events))|rection)|o(?:cTypeDecl|tall|Decoding|main|LazyDecoding)|u(?:plicateMovieClip|ration)|e(?:stroy(?:ChildAt|Object)|code|fault(?:PushButton(?:Enabled)?|KeydownHandler)?|l(?:ta(?:Packet(?:Changed)?)?|ete(?:PopUp|All)?)|blocking)|a(?:shBoardSave|yNames|ta(?:Provider)?|rkshadow)|r(?:opdown(?:Width)?|a(?:w|gO(?:ut|ver))))|u(?:se(?:Sort|HandCursor|Codepage|EchoSuppression)|n(?:shift|install|derline|escape|format|watch|lo(?:ck|ad(?:Movie(?:Num)?)?))|pdate(?:Results|Mode|I(?:nputProperties|tem(?:ByIndex)?)|P(?:acket|roperties)|View|AfterEvent)|rl)|join|p(?:ixelAspectRatio|o(?:sition|p|w)|u(?:sh|rge|blish)|ercen(?:tComplete|Loaded)|lay(?:head(?:Change|Time)|ing|Hidden|erType)?|a(?:ssword|use|r(?:se(?:XML|CSS|Int|Float)|ent(?:Node|Is(?:S(?:creen|lide)|Form))|ams))|r(?:int(?:Num|AsBitmap(?:Num)?)?|o(?:to(?:type)?|pert(?:y|ies)|gress)|e(?:ss|v(?:ious(?:S(?:ibling|lide)|Value)?|Scene|Frame)|ferred(?:Height|Width))))|e(?:scape|n(?:code(?:r)?|ter(?:Frame)?|dFill|able(?:Shader|d|CloseBox|Events))|dit(?:able|Field|LocationDialog)|v(?:ent|al(?:uate)?)|q|x(?:tended|p|ec(?:ute)?|actSettings)|m(?:phasized(?:StyleDeclaration)?|bedFonts))|v(?:i(?:sible|ewPod)|ScrollPolicy|o(?:id|lume)|ersion|P(?:osition|ageScrollSize)|a(?:l(?:idat(?:ionError|e(?:Property|ActivationKey)?)|ue(?:Of)?)|riable)|LineScrollSize)|k(?:ind|ey(?:Down|Up|Press|FrameInterval))|q(?:sort|uality)|f(?:scommand|i(?:n(?:d(?:Text|First|Last)?|ally)|eldInfo|lter(?:ed|Func)?|rst(?:Slide|Child|DayOfWeek|VisibleNode)?)|o(?:nt|cus(?:In|edCell|Out|Enabled)|r(?:egroundDisabled|mat(?:ter)?))|unctionName|ps|l(?:oor|ush)|ace|romCharCode)|w(?:i(?:th|dth)|ordWrap|atch|riteAccess)|l(?:t|i(?:st(?:Owner)?|ne(?:Style|To))|o(?:c(?:k|a(?:t(?:ion|eByld)|l(?:ToGlobal|FileReadDisable)))|opback|ad(?:Movie(?:Num)?|S(?:crollContent|ound)|ed|Variables(?:Num)?|Application)?|g(?:Changes)?)|e(?:ngth|ft(?:Margin)?|ading)?|a(?:st(?:Slide|Child|Index(?:Of)?)?|nguage|b(?:el(?:Placement|F(?:ield|unction))?|leField)))|a(?:s(?:scociate(?:Controller|Display)|in|pectRatio|function)|nd|c(?:ceptConnection|tiv(?:ityLevel|ePlayControl)|os)|t(?:t(?:ach(?:Movie|Sound|Video|Audio)|ributes)|an(?:2)?)|dd(?:header|RequestHeader|Menu(?:Item(?:At)?|At)?|Sort|Header|No(?:tice|de(?:At)?)|C(?:olumn(?:At)?|uePoint)|T(?:oLocalInternetCache|reeNode(?:At)?)|I(?:con|tem(?:s(?:At)?|At)?)|DeltaItem|P(?:od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(?:Size|Play|KeyNav|Load)|pp(?:endChild|ly(?:Changes|Updates)?)|vHardwareDisable|fterLoaded|l(?:ternateRowColors|ign|l(?:ow(?:InsecureDomain|Domain)|Transitions(?:InDone|OutDone))|bum)|r(?:tist|row|g(?:uments|List))|gent|bs)|r(?:ight(?:Margin)?|o(?:ot(?:S(?:creen|lide)|Form)|und|w(?:Height|Count)|llO(?:ut|ver))|e(?:s(?:yncDepth|t(?:orePane|artAnimation|rict)|iz(?:e|able(?:Columns)?)|olveDelta|ult(?:s)?|ponse)|c(?:o(?:ncile(?:Results|Updates)|rd)|eive(?:Video|Audio))|draw|jectConnection|place(?:Sel|ItemAt|AllItems)?|ve(?:al(?:Child)?|rse)|quest(?:SizeChange|Payment)?|f(?:errer|resh(?:ScrollContent|Destinations|Pane|FromSources)?)|lease(?:Outside)?|ad(?:Only|Access)|gister(?:SkinElement|C(?:olor(?:Style|Name)|lass)|InheritingStyle|Proxy)|move(?:Range|M(?:ovieClip|enu(?:Item(?:At)?|At))|Background|Sort|No(?:tice|de(?:sAt|At)?)|C(?:olum(?:nAt|At)|uePoints)|T(?:extField|reeNode(?:At)?)|Item(?:At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(?:C(?:olumns|uePoints)|Items)?))|a(?:ndom|te|dioDot))|g(?:t|oto(?:Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(?:Stop|Play))|e(?:nre|t(?:R(?:GB|o(?:otNode|wCount)|e(?:sizable|mote))|X(?:AxisTitle)?|M(?:i(?:n(?:imum(?:Size)?|utes)|lliseconds)|onth(?:Names)?|ultilineMode|e(?:ssage|nu(?:ItemAt|EnabledAt|At))|aximum(?:Size)?)|B(?:ytes(?:Total|Loaded)|ounds|utton(?:s|Width)|eginIndex|a(?:ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Position|barState|Location)|t(?:yle(?:Names)?|opOnFocus|ate)|ize|o(?:urce|rtState)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)|Style|ed(?:Node(?:s)?|Cell|Text|I(?:nd(?:ices|ex)|tem(?:s)?))?)|rvice)|moothness|WFVersion)|H(?:ighlight(?:s|Color)|ours|e(?:ight|ader(?:Height|Text|Property|Format|Width|Location)?)|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:o(?:tices|de(?:DisplayedAt|At))|um(?:Children|berAvailable)|e(?:wTextFormat|xtHighestDepth))|C(?:h(?:ild(?:S(?:creen|lide)|Nodes|Form|At)|artTitle)|o(?:n(?:tent|figInfo)|okie|de|unt|lumn(?:Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(?:ll|retIndex))|T(?:ypedValue|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:stamp|zoneOffset|out(?:State|Handler)|r)?)|oggle|ext(?:Extent|Format)?|r(?:ee(?:NodeAt|Length)|ans(?:form|actionId)))|I(?:s(?:Branch|Open)|n(?:stanceAtDepth|d(?:icesByKey|exByKey))|con(?:SymbolName)?|te(?:rator|m(?:sByKey|By(?:Name|Key)|id|ID|At))|d)|O(?:utput(?:Parameter(?:s|ByName)?|Value(?:s)?)|peration|ri(?:entation|ginalCellData))|D(?:i(?:s(?:play(?:Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(?:pth|faultNodeIconSymbolName|l(?:taPacket|ay)|bug(?:Config|ID)?)|a(?:y(?:OfWeekNames)?|t(?:e|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Label|All(?:Height|Property|Format|Width))?))|rawConnectors)|U(?:se(?:Shadow|HandCursor|rInput|Fade)|RL|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear))|P(?:o(?:sition|ds)|ercentComplete|a(?:n(?:e(?:M(?:inimums|aximums)|Height|Title|Width))?|rentNode)|r(?:operty(?:Name|Data)?|efer(?:ences|red(?:Height|Width))))|E(?:n(?:dIndex|abled)|ditingData|x(?:panderSymbolName|andNodeTrigger))|V(?:iewed(?:Pods|Applications)|olume|ersion|alue(?:Source)?)|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|o(?:ntList|cus)|ullYear|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:cal|adTarget)|ength|a(?:stTabIndex|bel(?:Source)?))|A(?:s(?:cii|Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:eState(?:Handler)?|ateHandler)|utoH(?:ideScrollBar|eight)|llItems|gent))?)?|lobal(?:StyleFormat|ToLocal)?|ain|roupName)|x(?:updatePackety|mlDecl)?|m(?:y(?:MethodName|Call)|in(?:imum)?|o(?:nthNames|tion(?:TimeOut|Level)|de(?:lChanged)?|use(?:Move|O(?:ut|ver)|Down(?:Somewhere|Outside)?|Up(?:Somewhere)?|WheelEnabled)|ve(?:To)?)|u(?:ted|lti(?:pleS(?:imultaneousAllowed|elections)|line))|e(?:ssage|nu(?:Show|Hide)?|th(?:od)?|diaType)|a(?:nufacturer|tch|x(?:scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(?:substring|chr|ord|length))|b(?:ytes(?:Total|Loaded)|indFormat(?:Strings|Function)|o(?:ttom(?:Scroll)?|ld|rder(?:Color)?)|u(?:tton(?:Height|Width)|iltInItems|ffer(?:Time|Length)|llet)|e(?:foreApplyUpdates|gin(?:GradientFill|Fill))|lockIndent|a(?:ndwidth|ckground(?:Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\\b"
      }, {
        token: "support.constant.actionscript.2",
        regex: "\\b(?:__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\\b"
      }, {
        token: "keyword.control.actionscript.2",
        regex: "\\b(?:dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\\b"
      }, {
        token: "storage.type.actionscript.2",
        regex: "\\b(?:Boolean|Number|String|Void)\\b"
      }, {
        token: "constant.language.actionscript.2",
        regex: "\\b(?:null|undefined|true|false)\\b"
      }, {
        token: "constant.numeric.actionscript.2",
        regex: "\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"
      }, {
        token: "punctuation.definition.string.begin.actionscript.2",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.actionscript.2",
          regex: '"',
          next: "pop"
        }, {
          token: "constant.character.escape.actionscript.2",
          regex: "\\\\."
        }, {
          defaultToken: "string.quoted.double.actionscript.2"
        }]
      }, {
        token: "punctuation.definition.string.begin.actionscript.2",
        regex: "'",
        push: [{
          token: "punctuation.definition.string.end.actionscript.2",
          regex: "'",
          next: "pop"
        }, {
          token: "constant.character.escape.actionscript.2",
          regex: "\\\\."
        }, {
          defaultToken: "string.quoted.single.actionscript.2"
        }]
      }, {
        token: "support.constant.actionscript.2",
        regex: "\\b(?:BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\\b"
      }, {
        token: "punctuation.definition.comment.actionscript.2",
        regex: "/\\*",
        push: [{
          token: "punctuation.definition.comment.actionscript.2",
          regex: "\\*/",
          next: "pop"
        }, {
          defaultToken: "comment.block.actionscript.2"
        }]
      }, {
        token: "punctuation.definition.comment.actionscript.2",
        regex: "//.*$",
        push_: [{
          token: "comment.line.double-slash.actionscript.2",
          regex: "$",
          next: "pop"
        }, {
          defaultToken: "comment.line.double-slash.actionscript.2"
        }]
      }, {
        token: "keyword.operator.actionscript.2",
        regex: "\\binstanceof\\b"
      }, {
        token: "keyword.operator.symbolic.actionscript.2",
        regex: "[-!%&*+=/?:]"
      }, {
        token: ["meta.preprocessor.actionscript.2", "punctuation.definition.preprocessor.actionscript.2", "meta.preprocessor.actionscript.2"],
        regex: "^([ \\t]*)(#)([a-zA-Z]+)"
      }, {
        token: ["storage.type.function.actionscript.2", "meta.function.actionscript.2", "entity.name.function.actionscript.2", "meta.function.actionscript.2", "punctuation.definition.parameters.begin.actionscript.2"],
        regex: "\\b(function)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()",
        push: [{
          token: "punctuation.definition.parameters.end.actionscript.2",
          regex: "\\)",
          next: "pop"
        }, {
          token: "variable.parameter.function.actionscript.2",
          regex: "[^,)$]+"
        }, {
          defaultToken: "meta.function.actionscript.2"
        }]
      }, {
        token: ["storage.type.class.actionscript.2", "meta.class.actionscript.2", "entity.name.type.class.actionscript.2", "meta.class.actionscript.2", "storage.modifier.extends.actionscript.2", "meta.class.actionscript.2", "entity.other.inherited-class.actionscript.2"],
        regex: "\\b(class)(\\s+)([a-zA-Z_](?:\\w|\\.)*)(?:(\\s+)(extends)(\\s+)([a-zA-Z_](?:\\w|\\.)*))?"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["as"],
    keyEquivalent: "^~A",
    name: "ActionScript",
    scopeName: "source.actionscript.2"
  }, r.inherits(s, i), t.ActionScriptHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/actionscript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/actionscript_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./actionscript_highlight_rules").ActionScriptHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/actionscript", this.snippetFileId = "ace/snippets/actionscript";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/actionscript"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-ada.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-ada.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/ada_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|body|private|then|if|procedure|type|case|in|protected|constant|interface|until||is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor",
        t = "true|false|null",
        n = "count|min|max|avg|sum|rank|now|coalesce|main",
        r = this.createKeywordMapper({
      "support.function": n,
      keyword: e,
      "constant.language": t
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: "--.*$"
      }, {
        token: "string",
        regex: '".*?"'
      }, {
        token: "string",
        regex: "'.'"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "paren.lparen",
        regex: "[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\)]"
      }, {
        token: "text",
        regex: "\\s+"
      }]
    };
  };

  r.inherits(s, i), t.AdaHighlightRules = s;
}), ace.define("ace/mode/ada", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/ada_highlight_rules", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./ada_highlight_rules").AdaHighlightRules,
      o = e("../range").Range,
      u = function u() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "--", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*(begin|loop|then|is|do)\s*$/);
        o && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      var r = t + n;
      return r.match(/^\s*(begin|end)$/) ? !0 : !1;
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n),
          i = t.getLine(n - 1),
          s = this.$getIndent(i).length,
          u = this.$getIndent(r).length;
      if (u <= s) return;
      t.outdentRows(new o(n, 0, n + 2, 0));
    }, this.$id = "ace/mode/ada";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/ada"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-alda.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-alda.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/alda_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      pitch: [{
        token: "variable.parameter.operator.pitch.alda",
        regex: /(?:[+\-]+|\=)/
      }, {
        token: "",
        regex: "",
        next: "timing"
      }],
      timing: [{
        token: "string.quoted.operator.timing.alda",
        regex: /\d+(?:s|ms)?/
      }, {
        token: "",
        regex: "",
        next: "start"
      }],
      start: [{
        token: ["constant.language.instrument.alda", "constant.language.instrument.alda", "meta.part.call.alda", "storage.type.nickname.alda", "meta.part.call.alda"],
        regex: /^([a-zA-Z]{2}[\w\-+\'()]*)((?:\s*\/\s*[a-zA-Z]{2}[\w\-+\'()]*)*)(?:(\s*)(\"[a-zA-Z]{2}[\w\-+\'()]*\"))?(\s*:)/
      }, {
        token: ["text", "entity.other.inherited-class.voice.alda", "text"],
        regex: /^(\s*)(V\d+)(:)/
      }, {
        token: "comment.line.number-sign.alda",
        regex: /#.*$/
      }, {
        token: "entity.name.function.pipe.measure.alda",
        regex: /\|/
      }, {
        token: "comment.block.inline.alda",
        regex: /\(comment\b/,
        push: [{
          token: "comment.block.inline.alda",
          regex: /\)/,
          next: "pop"
        }, {
          defaultToken: "comment.block.inline.alda"
        }]
      }, {
        token: "entity.name.function.marker.alda",
        regex: /%[a-zA-Z]{2}[\w\-+\'()]*/
      }, {
        token: "entity.name.function.at-marker.alda",
        regex: /@[a-zA-Z]{2}[\w\-+\'()]*/
      }, {
        token: "keyword.operator.octave-change.alda",
        regex: /\bo\d+\b/
      }, {
        token: "keyword.operator.octave-shift.alda",
        regex: /[><]/
      }, {
        token: "keyword.operator.repeat.alda",
        regex: /\*\s*\d+/
      }, {
        token: "string.quoted.operator.timing.alda",
        regex: /[.]|r\d*(?:s|ms)?/
      }, {
        token: "text",
        regex: /([cdefgab])/,
        next: "pitch"
      }, {
        token: "string.quoted.operator.timing.alda",
        regex: /~/,
        next: "timing"
      }, {
        token: "punctuation.section.embedded.cram.alda",
        regex: /\}/,
        next: "timing"
      }, {
        token: "constant.numeric.subchord.alda",
        regex: /\//
      }, {
        todo: {
          token: "punctuation.section.embedded.cram.alda",
          regex: /\{/,
          push: [{
            token: "punctuation.section.embedded.cram.alda",
            regex: /\}/,
            next: "pop"
          }, {
            include: "$self"
          }]
        }
      }, {
        todo: {
          token: "keyword.control.sequence.alda",
          regex: /\[/,
          push: [{
            token: "keyword.control.sequence.alda",
            regex: /\]/,
            next: "pop"
          }, {
            include: "$self"
          }]
        }
      }, {
        token: "meta.inline.clojure.alda",
        regex: /\(/,
        push: [{
          token: "meta.inline.clojure.alda",
          regex: /\)/,
          next: "pop"
        }, {
          include: "source.clojure"
        }, {
          defaultToken: "meta.inline.clojure.alda"
        }]
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    scopeName: "source.alda",
    fileTypes: ["alda"],
    name: "Alda"
  }, r.inherits(s, i), t.AldaHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/alda", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/alda_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./alda_highlight_rules").AldaHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.$id = "ace/mode/alda";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/alda"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-apache_conf.js":
/*!************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-apache_conf.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/apache_conf_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: ["punctuation.definition.comment.apacheconf", "comment.line.hash.ini", "comment.line.hash.ini"],
        regex: "^((?:\\s)*)(#)(.*$)"
      }, {
        token: ["punctuation.definition.tag.apacheconf", "entity.tag.apacheconf", "text", "string.value.apacheconf", "punctuation.definition.tag.apacheconf"],
        regex: "(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(?:(\\s)(.+?))?(>)"
      }, {
        token: ["punctuation.definition.tag.apacheconf", "entity.tag.apacheconf", "punctuation.definition.tag.apacheconf"],
        regex: "(</)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(>)"
      }, {
        token: ["keyword.alias.apacheconf", "text", "string.regexp.apacheconf", "text", "string.replacement.apacheconf", "text"],
        regex: "(Rewrite(?:Rule|Cond))(\\s+)(.+?)(\\s+)(.+?)($|\\s)"
      }, {
        token: ["keyword.alias.apacheconf", "text", "entity.status.apacheconf", "text", "string.regexp.apacheconf", "text", "string.path.apacheconf", "text"],
        regex: "(RedirectMatch)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"
      }, {
        token: ["keyword.alias.apacheconf", "text", "entity.status.apacheconf", "text", "string.path.apacheconf", "text", "string.path.apacheconf", "text"],
        regex: "(Redirect)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"
      }, {
        token: ["keyword.alias.apacheconf", "text", "string.regexp.apacheconf", "text", "string.path.apacheconf", "text"],
        regex: "(ScriptAliasMatch|AliasMatch)(\\s+)(.+?)(\\s+)(?:(.+?)(\\s))?"
      }, {
        token: ["keyword.alias.apacheconf", "text", "string.path.apacheconf", "text", "string.path.apacheconf", "text"],
        regex: "(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"
      }, {
        token: "keyword.core.apacheconf",
        regex: "\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\b"
      }, {
        token: "keyword.mpm.apacheconf",
        regex: "\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b"
      }, {
        token: "keyword.access.apacheconf",
        regex: "\\b(?:Allow|Deny|Order)\\b"
      }, {
        token: "keyword.actions.apacheconf",
        regex: "\\b(?:Action|Script)\\b"
      }, {
        token: "keyword.alias.apacheconf",
        regex: "\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b"
      }, {
        token: "keyword.auth.apacheconf",
        regex: "\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\b"
      }, {
        token: "keyword.auth_anon.apacheconf",
        regex: "\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b"
      }, {
        token: "keyword.auth_dbm.apacheconf",
        regex: "\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b"
      }, {
        token: "keyword.auth_digest.apacheconf",
        regex: "\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\b"
      }, {
        token: "keyword.auth_ldap.apacheconf",
        regex: "\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b"
      }, {
        token: "keyword.autoindex.apacheconf",
        regex: "\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\b"
      }, {
        token: "keyword.cache.apacheconf",
        regex: "\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b"
      }, {
        token: "keyword.cern_meta.apacheconf",
        regex: "\\b(?:MetaDir|MetaFiles|MetaSuffix)\\b"
      }, {
        token: "keyword.cgi.apacheconf",
        regex: "\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b"
      }, {
        token: "keyword.cgid.apacheconf",
        regex: "\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b"
      }, {
        token: "keyword.charset_lite.apacheconf",
        regex: "\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b"
      }, {
        token: "keyword.dav.apacheconf",
        regex: "\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b"
      }, {
        token: "keyword.deflate.apacheconf",
        regex: "\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b"
      }, {
        token: "keyword.dir.apacheconf",
        regex: "\\b(?:DirectoryIndex|DirectorySlash)\\b"
      }, {
        token: "keyword.disk_cache.apacheconf",
        regex: "\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b"
      }, {
        token: "keyword.dumpio.apacheconf",
        regex: "\\b(?:DumpIOInput|DumpIOOutput)\\b"
      }, {
        token: "keyword.env.apacheconf",
        regex: "\\b(?:PassEnv|SetEnv|UnsetEnv)\\b"
      }, {
        token: "keyword.expires.apacheconf",
        regex: "\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\b"
      }, {
        token: "keyword.ext_filter.apacheconf",
        regex: "\\b(?:ExtFilterDefine|ExtFilterOptions)\\b"
      }, {
        token: "keyword.file_cache.apacheconf",
        regex: "\\b(?:CacheFile|MMapFile)\\b"
      }, {
        token: "keyword.headers.apacheconf",
        regex: "\\b(?:Header|RequestHeader)\\b"
      }, {
        token: "keyword.imap.apacheconf",
        regex: "\\b(?:ImapBase|ImapDefault|ImapMenu)\\b"
      }, {
        token: "keyword.include.apacheconf",
        regex: "\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b"
      }, {
        token: "keyword.isapi.apacheconf",
        regex: "\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b"
      }, {
        token: "keyword.ldap.apacheconf",
        regex: "\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b"
      }, {
        token: "keyword.log.apacheconf",
        regex: "\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b"
      }, {
        token: "keyword.mem_cache.apacheconf",
        regex: "\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b"
      }, {
        token: "keyword.mime.apacheconf",
        regex: "\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b"
      }, {
        token: "keyword.misc.apacheconf",
        regex: "\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b"
      }, {
        token: "keyword.negotiation.apacheconf",
        regex: "\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b"
      }, {
        token: "keyword.nw_ssl.apacheconf",
        regex: "\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b"
      }, {
        token: "keyword.proxy.apacheconf",
        regex: "\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b"
      }, {
        token: "keyword.rewrite.apacheconf",
        regex: "\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b"
      }, {
        token: "keyword.setenvif.apacheconf",
        regex: "\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b"
      }, {
        token: "keyword.so.apacheconf",
        regex: "\\b(?:LoadFile|LoadModule)\\b"
      }, {
        token: "keyword.ssl.apacheconf",
        regex: "\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\b"
      }, {
        token: "keyword.usertrack.apacheconf",
        regex: "\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b"
      }, {
        token: "keyword.vhost_alias.apacheconf",
        regex: "\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b"
      }, {
        token: ["keyword.php.apacheconf", "text", "entity.property.apacheconf", "text", "string.value.apacheconf", "text"],
        regex: "\\b(php_value|php_flag)\\b(?:(\\s+)(.+?)(?:(\\s+)(.+?))?)?(\\s)"
      }, {
        token: ["punctuation.variable.apacheconf", "variable.env.apacheconf", "variable.misc.apacheconf", "punctuation.variable.apacheconf"],
        regex: "(%\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})"
      }, {
        token: ["entity.mime-type.apacheconf", "text"],
        regex: "\\b((?:text|image|application|video|audio)/.+?)(\\s)"
      }, {
        token: "entity.helper.apacheconf",
        regex: "\\b(?:from|unset|set|on|off)\\b",
        caseInsensitive: !0
      }, {
        token: "constant.integer.apacheconf",
        regex: "\\b\\d+\\b"
      }, {
        token: ["text", "punctuation.definition.flag.apacheconf", "string.flag.apacheconf", "punctuation.definition.flag.apacheconf", "text"],
        regex: "(\\s)(\\[)(.*?)(\\])(\\s)"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["conf", "CONF", "htaccess", "HTACCESS", "htgroups", "HTGROUPS", "htpasswd", "HTPASSWD", ".htaccess", ".HTACCESS", ".htgroups", ".HTGROUPS", ".htpasswd", ".HTPASSWD"],
    name: "Apache Conf",
    scopeName: "source.apacheconf"
  }, r.inherits(s, i), t.ApacheConfHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/apache_conf", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/apache_conf_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./apache_conf_highlight_rules").ApacheConfHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.$id = "ace/mode/apache_conf";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/apache_conf"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-apex.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-apex.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/apex_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/doc_comment_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../mode/text_highlight_rules").TextHighlightRules,
      s = e("../mode/doc_comment_highlight_rules").DocCommentHighlightRules,
      o = function o() {
    function t(t) {
      return t.slice(-3) == "__c" ? "support.function" : e(t);
    }

    function n(e, t) {
      return {
        regex: e + (t.multiline ? "" : "(?=.)"),
        token: "string.start",
        next: [{
          regex: t.escape,
          token: "character.escape"
        }, {
          regex: t.error,
          token: "error.invalid"
        }, {
          regex: e + (t.multiline ? "" : "|$"),
          token: "string.end",
          next: t.next || "start"
        }, {
          defaultToken: "string"
        }]
      };
    }

    function r() {
      return [{
        token: "comment",
        regex: "\\/\\/(?=.)",
        next: [s.getTagRule(), {
          token: "comment",
          regex: "$|^",
          next: "start"
        }, {
          defaultToken: "comment",
          caseInsensitive: !0
        }]
      }, s.getStartRule("doc-start"), {
        token: "comment",
        regex: /\/\*/,
        next: [s.getTagRule(), {
          token: "comment",
          regex: "\\*\\/",
          next: "start"
        }, {
          defaultToken: "comment",
          caseInsensitive: !0
        }]
      }];
    }

    var e = this.createKeywordMapper({
      "variable.language": "activate|any|autonomous|begin|bigdecimal|byte|cast|char|collect|const|end|exit|export|float|goto|group|having|hint|import|inner|into|join|loop|number|object|of|outer|parallel|pragma|retrieve|returning|search|short|stat|synchronized|then|this_month|transaction|type|when",
      keyword: "private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final|and|array|as|asc|break|bulk|by|catch|class|commit|continue|convertcurrency|delete|desc|do|else|enum|extends|false|final|finally|for|from|future|global|if|implements|in|insert|instanceof|interface|last_90_days|last_month|last_n_days|last_week|like|limit|list|map|merge|new|next_90_days|next_month|next_n_days|next_week|not|null|nulls|on|or|override|package|return|rollback|savepoint|select|set|sort|super|testmethod|this|this_week|throw|today|tolabel|tomorrow|trigger|true|try|undelete|update|upsert|using|virtual|webservice|where|while|yesterday|switch|case|default",
      "storage.type": "def|boolean|byte|char|short|int|float|pblob|date|datetime|decimal|double|id|integer|long|string|time|void|blob|Object",
      "constant.language": "true|false|null|after|before|count|excludes|first|includes|last|order|sharing|with",
      "support.function": "system|apex|label|apexpages|userinfo|schema"
    }, "identifier", !0);
    this.$rules = {
      start: [n("'", {
        escape: /\\[nb'"\\]/,
        error: /\\./,
        multiline: !1
      }), r("c"), {
        type: "decoration",
        token: ["meta.package.apex", "keyword.other.package.apex", "meta.package.apex", "storage.modifier.package.apex", "meta.package.apex", "punctuation.terminator.apex"],
        regex: /^(\s*)(package)\b(?:(\s*)([^ ;$]+)(\s*)((?:;)?))?/
      }, {
        regex: /@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/,
        token: "constant.language"
      }, {
        regex: /[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/,
        token: t
      }, {
        regex: "`#%",
        token: "error.invalid"
      }, {
        token: "constant.numeric",
        regex: /[+-]?\d+(?:(?:\.\d*)?(?:[LlDdEe][+-]?\d+)?)\b|\.\d+[LlDdEe]/
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[]/,
        next: "maybe_soql",
        merge: !1
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start",
        merge: !1
      }, {
        token: "paren.rparen",
        regex: /[\])}]/,
        merge: !1
      }],
      maybe_soql: [{
        regex: /\s+/,
        token: "text"
      }, {
        regex: /(SELECT|FIND)\b/,
        token: "keyword",
        caseInsensitive: !0,
        next: "soql"
      }, {
        regex: "",
        token: "none",
        next: "start"
      }],
      soql: [{
        regex: "(:?ASC|BY|CATEGORY|CUBE|DATA|DESC|END|FIND|FIRST|FOR|FROM|GROUP|HAVING|IN|LAST|LIMIT|NETWORK|NULLS|OFFSET|ORDER|REFERENCE|RETURNING|ROLLUP|SCOPE|SELECT|SNIPPET|TRACKING|TYPEOF|UPDATE|USING|VIEW|VIEWSTAT|WHERE|WITH|AND|OR)\\b",
        token: "keyword",
        caseInsensitive: !0
      }, {
        regex: "(:?target_length|toLabel|convertCurrency|count|Contact|Account|User|FIELDS)\\b",
        token: "support.function",
        caseInsensitive: !0
      }, {
        token: "paren.rparen",
        regex: /[\]]/,
        next: "start",
        merge: !1
      }, n("'", {
        escape: /\\[nb'"\\]/,
        error: /\\./,
        multiline: !1,
        next: "soql"
      }), n('"', {
        escape: /\\[nb'"\\]/,
        error: /\\./,
        multiline: !1,
        next: "soql"
      }), {
        regex: /\\./,
        token: "character.escape"
      }, {
        regex: /[\?\&\|\!\{\}\[\]\(\)\^\~\*\:\"\'\+\-\,\.=\\\/]/,
        token: "keyword.operator"
      }],
      "log-start": [{
        token: "timestamp.invisible",
        regex: /^[\d:.() ]+\|/,
        next: "log-header"
      }, {
        token: "timestamp.invisible",
        regex: /^  (Number of|Maximum)[^:]*:/,
        next: "log-comment"
      }, {
        token: "invisible",
        regex: /^Execute Anonymous:/,
        next: "log-comment"
      }, {
        defaultToken: "text"
      }],
      "log-comment": [{
        token: "log-comment",
        regex: /.*$/,
        next: "log-start"
      }],
      "log-header": [{
        token: "timestamp.invisible",
        regex: /((USER_DEBUG|\[\d+\]|DEBUG)\|)+/
      }, {
        token: "keyword",
        regex: "(?:EXECUTION_FINISHED|EXECUTION_STARTED|CODE_UNIT_STARTED|CUMULATIVE_LIMIT_USAGE|LIMIT_USAGE_FOR_NS|CUMULATIVE_LIMIT_USAGE_END|CODE_UNIT_FINISHED)"
      }, {
        regex: "",
        next: "log-start"
      }]
    }, this.embedRules(s, "doc-", [s.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(o, i), t.ApexHighlightRules = o;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/apex", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/apex_highlight_rules", "ace/mode/folding/cstyle", "ace/mode/behaviour/cstyle"], function (e, t, n) {
  "use strict";

  function a() {
    i.call(this), this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = new u();
  }

  var r = e("../lib/oop"),
      i = e("../mode/text").Mode,
      s = e("./apex_highlight_rules").ApexHighlightRules,
      o = e("../mode/folding/cstyle").FoldMode,
      u = e("../mode/behaviour/cstyle").CstyleBehaviour;
  r.inherits(a, i), a.prototype.lineCommentStart = "//", a.prototype.blockComment = {
    start: "/*",
    end: "*/"
  }, t.Mode = a;
});

(function () {
  ace.require(["ace/mode/apex"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-applescript.js":
/*!************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-applescript.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/applescript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "about|above|after|against|and|around|as|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|continue|copy|div|does|eighth|else|end|equal|equals|error|every|exit|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|over|prop|property|put|ref|reference|repeat|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|try|until|where|while|whose|with|without",
        t = "AppleScript|false|linefeed|return|pi|quote|result|space|tab|true",
        n = "activate|beep|count|delay|launch|log|offset|read|round|run|say|summarize|write",
        r = "alias|application|boolean|class|constant|date|file|integer|list|number|real|record|string|text|character|characters|contents|day|frontmost|id|item|length|month|name|paragraph|paragraphs|rest|reverse|running|time|version|weekday|word|words|year",
        i = this.createKeywordMapper({
      "support.function": n,
      "constant.language": t,
      "support.type": r,
      keyword: e
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "--.*$"
      }, {
        token: "comment",
        regex: "\\(\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '".*?"'
      }, {
        token: "support.type",
        regex: "\\b(POSIX file|POSIX path|(date|time) string|quoted form)\\b"
      }, {
        token: "support.function",
        regex: "\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"
      }, {
        token: "constant.language",
        regex: "\\b(text item delimiters|current application|missing value)\\b"
      }, {
        token: "keyword",
        regex: "\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference))\\b"
      }, {
        token: i,
        regex: "[a-zA-Z][a-zA-Z0-9_]*\\b"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\)",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.AppleScriptHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/applescript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/applescript_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./applescript_highlight_rules").AppleScriptHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "--", this.blockComment = {
      start: "(*",
      end: "*)"
    }, this.$id = "ace/mode/applescript";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/applescript"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-aql.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-aql.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/aql_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "for|search|outbound|inbound|any|graph|prune|options|shortest_path|to|in|return|filter|sort|limit|let|collect|remove|update|replace|insers|upsert|with",
        t = "true|false",
        n = "append|contains_array|count|count_distinct|count_unique|first|flatten|intersection|last|length|minus|nth|outersection|pop|position|push|remove_nth|remove_value|remove_values|reverse|shift|slice|sorted|sorted_unique|union|union_distinct|unique|unshift|date_now|date_iso8601|date_timestamp|is_datestring|date_dayofweek|date_year|date_month|date_day|date_hour|date_minute|date_second|date_millisecond|date_dayofyear|date_isoweek|date_leapyear|date_quarter|date_days_in_month|date_trunc|date_format|date_add|date_subtract|date_diff|date_compare|attributes|count|has|is_same_collection|keep|length|matches|merge|merge_recursive|parse_identifier|translate|unset|unset_recursive|values|zip|fulltext|distance|geo_contains|geo_distance|geo_equals|geo_intersects|is_in_polygon|not_null|first_list|first_document|check_document|collection_count|collections|count|current_user|document|length|hash|apply|assert|/ warn|call|fail|noopt|passthru|sleep|v8|version|abs|acos|asin|atan|atan2|average|avg|ceil|cos|degrees|exp|exp2|floor|log|log2|log10|max|median|min|percentile|pi|pow|radians|rand|range|round|sin|sqrt|stddev_population|stddev_sample|stddev|sum|tan|variance_population|variance_sample|variance|char_length|concat|concat_separator|contains|count|encode_uri_component|find_first|find_last|json_parse|json_stringify|left|length|levenshtein_distance|like|lower|ltrim|md5|random_token|regex_matches|regex_split|regex_test|regex_replace|reverse|right|rtrim|sha1|sha512|split|soundex|substitute|substring|tokens|to_base64|to_hex|trim|upper|uuid|to_bool|to_number|to_string|to_array|to_list|is_null|is_bool|is_number|is_string|is_array|is_list|is_object|is_document|is_datestring|is_key|typename|",
        r = this.createKeywordMapper({
      "support.function": n,
      keyword: e,
      "constant.language": t
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: "//.*$"
      }, {
        token: "string",
        regex: '".*?"'
      }, {
        token: "string",
        regex: "'.*?'"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "paren.lparen",
        regex: "[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\)]"
      }, {
        token: "text",
        regex: "\\s+"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.AqlHighlightRules = s;
}), ace.define("ace/mode/aql", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/aql_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./aql_highlight_rules").AqlHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = "//", this.$id = "ace/mode/aql";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/aql"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-asciidoc.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-asciidoc.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/asciidoc_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    function t(e) {
      var t = /\w/.test(e) ? "\\b" : "(?:\\B|^)";
      return t + e + "[^" + e + "].*?" + e + "(?![\\w*])";
    }

    var e = "[a-zA-Z\xA1-\uFFFF]+\\b";
    this.$rules = {
      start: [{
        token: "empty",
        regex: /$/
      }, {
        token: "literal",
        regex: /^\.{4,}\s*$/,
        next: "listingBlock"
      }, {
        token: "literal",
        regex: /^-{4,}\s*$/,
        next: "literalBlock"
      }, {
        token: "string",
        regex: /^\+{4,}\s*$/,
        next: "passthroughBlock"
      }, {
        token: "keyword",
        regex: /^={4,}\s*$/
      }, {
        token: "text",
        regex: /^\s*$/
      }, {
        token: "empty",
        regex: "",
        next: "dissallowDelimitedBlock"
      }],
      dissallowDelimitedBlock: [{
        include: "paragraphEnd"
      }, {
        token: "comment",
        regex: "^//.+$"
      }, {
        token: "keyword",
        regex: "^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):"
      }, {
        include: "listStart"
      }, {
        token: "literal",
        regex: /^\s+.+$/,
        next: "indentedBlock"
      }, {
        token: "empty",
        regex: "",
        next: "text"
      }],
      paragraphEnd: [{
        token: "doc.comment",
        regex: /^\/{4,}\s*$/,
        next: "commentBlock"
      }, {
        token: "tableBlock",
        regex: /^\s*[|!]=+\s*$/,
        next: "tableBlock"
      }, {
        token: "keyword",
        regex: /^(?:--|''')\s*$/,
        next: "start"
      }, {
        token: "option",
        regex: /^\[.*\]\s*$/,
        next: "start"
      }, {
        token: "pageBreak",
        regex: /^>{3,}$/,
        next: "start"
      }, {
        token: "literal",
        regex: /^\.{4,}\s*$/,
        next: "listingBlock"
      }, {
        token: "titleUnderline",
        regex: /^(?:={2,}|-{2,}|~{2,}|\^{2,}|\+{2,})\s*$/,
        next: "start"
      }, {
        token: "singleLineTitle",
        regex: /^={1,5}\s+\S.*$/,
        next: "start"
      }, {
        token: "otherBlock",
        regex: /^(?:\*{2,}|_{2,})\s*$/,
        next: "start"
      }, {
        token: "optionalTitle",
        regex: /^\.[^.\s].+$/,
        next: "start"
      }],
      listStart: [{
        token: "keyword",
        regex: /^\s*(?:\d+\.|[a-zA-Z]\.|[ixvmIXVM]+\)|\*{1,5}|-|\.{1,5})\s/,
        next: "listText"
      }, {
        token: "meta.tag",
        regex: /^.+(?::{2,4}|;;)(?: |$)/,
        next: "listText"
      }, {
        token: "support.function.list.callout",
        regex: /^(?:<\d+>|\d+>|>) /,
        next: "text"
      }, {
        token: "keyword",
        regex: /^\+\s*$/,
        next: "start"
      }],
      text: [{
        token: ["link", "variable.language"],
        regex: /((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[.*?\])/
      }, {
        token: "link",
        regex: /(?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+/
      }, {
        token: "link",
        regex: /\b[\w\.\/\-]+@[\w\.\/\-]+\b/
      }, {
        include: "macros"
      }, {
        include: "paragraphEnd"
      }, {
        token: "literal",
        regex: /\+{3,}/,
        next: "smallPassthrough"
      }, {
        token: "escape",
        regex: /\((?:C|TM|R)\)|\.{3}|->|<-|=>|<=|&#(?:\d+|x[a-fA-F\d]+);|(?: |^)--(?=\s+\S)/
      }, {
        token: "escape",
        regex: /\\[_*'`+#]|\\{2}[_*'`+#]{2}/
      }, {
        token: "keyword",
        regex: /\s\+$/
      }, {
        token: "text",
        regex: e
      }, {
        token: ["keyword", "string", "keyword"],
        regex: /(<<[\w\d\-$]+,)(.*?)(>>|$)/
      }, {
        token: "keyword",
        regex: /<<[\w\d\-$]+,?|>>/
      }, {
        token: "constant.character",
        regex: /\({2,3}.*?\){2,3}/
      }, {
        token: "keyword",
        regex: /\[\[.+?\]\]/
      }, {
        token: "support",
        regex: /^\[{3}[\w\d =\-]+\]{3}/
      }, {
        include: "quotes"
      }, {
        token: "empty",
        regex: /^\s*$/,
        next: "start"
      }],
      listText: [{
        include: "listStart"
      }, {
        include: "text"
      }],
      indentedBlock: [{
        token: "literal",
        regex: /^[\s\w].+$/,
        next: "indentedBlock"
      }, {
        token: "literal",
        regex: "",
        next: "start"
      }],
      listingBlock: [{
        token: "literal",
        regex: /^\.{4,}\s*$/,
        next: "dissallowDelimitedBlock"
      }, {
        token: "constant.numeric",
        regex: "<\\d+>"
      }, {
        token: "literal",
        regex: "[^<]+"
      }, {
        token: "literal",
        regex: "<"
      }],
      literalBlock: [{
        token: "literal",
        regex: /^-{4,}\s*$/,
        next: "dissallowDelimitedBlock"
      }, {
        token: "constant.numeric",
        regex: "<\\d+>"
      }, {
        token: "literal",
        regex: "[^<]+"
      }, {
        token: "literal",
        regex: "<"
      }],
      passthroughBlock: [{
        token: "literal",
        regex: /^\+{4,}\s*$/,
        next: "dissallowDelimitedBlock"
      }, {
        token: "literal",
        regex: e + "|\\d+"
      }, {
        include: "macros"
      }, {
        token: "literal",
        regex: "."
      }],
      smallPassthrough: [{
        token: "literal",
        regex: /[+]{3,}/,
        next: "dissallowDelimitedBlock"
      }, {
        token: "literal",
        regex: /^\s*$/,
        next: "dissallowDelimitedBlock"
      }, {
        token: "literal",
        regex: e + "|\\d+"
      }, {
        include: "macros"
      }],
      commentBlock: [{
        token: "doc.comment",
        regex: /^\/{4,}\s*$/,
        next: "dissallowDelimitedBlock"
      }, {
        token: "doc.comment",
        regex: "^.*$"
      }],
      tableBlock: [{
        token: "tableBlock",
        regex: /^\s*\|={3,}\s*$/,
        next: "dissallowDelimitedBlock"
      }, {
        token: "tableBlock",
        regex: /^\s*!={3,}\s*$/,
        next: "innerTableBlock"
      }, {
        token: "tableBlock",
        regex: /\|/
      }, {
        include: "text",
        noEscape: !0
      }],
      innerTableBlock: [{
        token: "tableBlock",
        regex: /^\s*!={3,}\s*$/,
        next: "tableBlock"
      }, {
        token: "tableBlock",
        regex: /^\s*|={3,}\s*$/,
        next: "dissallowDelimitedBlock"
      }, {
        token: "tableBlock",
        regex: /!/
      }],
      macros: [{
        token: "macro",
        regex: /{[\w\-$]+}/
      }, {
        token: ["text", "string", "text", "constant.character", "text"],
        regex: /({)([\w\-$]+)(:)?(.+)?(})/
      }, {
        token: ["text", "markup.list.macro", "keyword", "string"],
        regex: /(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/
      }, {
        token: ["markup.list.macro", "keyword", "string"],
        regex: /([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/
      }, {
        token: ["markup.list.macro", "keyword"],
        regex: /([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/
      }, {
        token: "keyword",
        regex: /^:.+?:(?= |$)/
      }],
      quotes: [{
        token: "string.italic",
        regex: /__[^_\s].*?__/
      }, {
        token: "string.italic",
        regex: t("_")
      }, {
        token: "keyword.bold",
        regex: /\*\*[^*\s].*?\*\*/
      }, {
        token: "keyword.bold",
        regex: t("\\*")
      }, {
        token: "literal",
        regex: t("\\+")
      }, {
        token: "literal",
        regex: /\+\+[^+\s].*?\+\+/
      }, {
        token: "literal",
        regex: /\$\$.+?\$\$/
      }, {
        token: "literal",
        regex: t("`")
      }, {
        token: "keyword",
        regex: t("^")
      }, {
        token: "keyword",
        regex: t("~")
      }, {
        token: "keyword",
        regex: /##?/
      }, {
        token: "keyword",
        regex: /(?:\B|^)``|\b''/
      }]
    };
    var n = {
      macro: "constant.character",
      tableBlock: "doc.comment",
      titleUnderline: "markup.heading",
      singleLineTitle: "markup.heading",
      pageBreak: "string",
      option: "string.regexp",
      otherBlock: "markup.list",
      literal: "support.function",
      optionalTitle: "constant.numeric",
      escape: "constant.language.escape",
      link: "markup.underline.list"
    };

    for (var r in this.$rules) {
      var i = this.$rules[r];

      for (var s = i.length; s--;) {
        var o = i[s];

        if (o.include || typeof o == "string") {
          var u = [s, 1].concat(this.$rules[o.include || o]);
          o.noEscape && (u = u.filter(function (e) {
            return !e.next;
          })), i.splice.apply(i, u);
        } else o.token in n && (o.token = n[o.token]);
      }
    }
  };

  r.inherits(s, i), t.AsciidocHighlightRules = s;
}), ace.define("ace/mode/folding/asciidoc", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.foldingStartMarker = /^(?:\|={10,}|[\.\/=\-~^+]{4,}\s*$|={1,5} )/, this.singleLineHeadingRe = /^={1,5}(?=\s+\S)/, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      return this.foldingStartMarker.test(r) ? r[0] == "=" ? this.singleLineHeadingRe.test(r) ? "start" : e.getLine(n - 1).length != e.getLine(n).length ? "" : "start" : e.bgTokenizer.getState(n) == "dissallowDelimitedBlock" ? "end" : "start" : "";
    }, this.getFoldWidgetRange = function (e, t, n) {
      function l(t) {
        return f = e.getTokens(t)[0], f && f.type;
      }

      function d() {
        var t = f.value.match(p);
        if (t) return t[0].length;
        var r = c.indexOf(f.value[0]) + 1;
        return r == 1 && e.getLine(n - 1).length != e.getLine(n).length ? Infinity : r;
      }

      var r = e.getLine(n),
          i = r.length,
          o = e.getLength(),
          u = n,
          a = n;
      if (!r.match(this.foldingStartMarker)) return;
      var f,
          c = ["=", "-", "~", "^", "+"],
          h = "markup.heading",
          p = this.singleLineHeadingRe;

      if (l(n) == h) {
        var v = d();

        while (++n < o) {
          if (l(n) != h) continue;
          var m = d();
          if (m <= v) break;
        }

        var g = f && f.value.match(this.singleLineHeadingRe);
        a = g ? n - 1 : n - 2;
        if (a > u) while (a > u && (!l(a) || f.value[0] == "[")) {
          a--;
        }

        if (a > u) {
          var y = e.getLine(a).length;
          return new s(u, i, a, y);
        }
      } else {
        var b = e.bgTokenizer.getState(n);

        if (b == "dissallowDelimitedBlock") {
          while (n-- > 0) {
            if (e.bgTokenizer.getState(n).lastIndexOf("Block") == -1) break;
          }

          a = n + 1;

          if (a < u) {
            var y = e.getLine(n).length;
            return new s(a, 5, u, i - 5);
          }
        } else {
          while (++n < o) {
            if (e.bgTokenizer.getState(n) == "dissallowDelimitedBlock") break;
          }

          a = n;

          if (a > u) {
            var y = e.getLine(n).length;
            return new s(u, 5, a, y - 5);
          }
        }
      }
    };
  }.call(o.prototype);
}), ace.define("ace/mode/asciidoc", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/asciidoc_highlight_rules", "ace/mode/folding/asciidoc"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./asciidoc_highlight_rules").AsciidocHighlightRules,
      o = e("./folding/asciidoc").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.type = "text", this.getNextLineIndent = function (e, t, n) {
      if (e == "listblock") {
        var r = /^((?:.+)?)([-+*][ ]+)/.exec(t);
        return r ? new Array(r[1].length + 1).join(" ") + r[2] : "";
      }

      return this.$getIndent(t);
    }, this.$id = "ace/mode/asciidoc";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/asciidoc"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-asl.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-asl.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/asl_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "Default|DefinitionBlock|Device|Method|Else|ElseIf|For|Function|If|Include|Method|Return|Scope|Switch|Case|While|Break|BreakPoint|Continue|NoOp|Wait|True|False|AccessAs|Acquire|Alias|BankField|Buffer|Concatenate|ConcatenateResTemplate|CondRefOf|Connection|CopyObject|CreateBitField|CreateByteField|CreateDWordField|CreateField|CreateQWordField|CreateWordField|DataTableRegion|Debug|DMA|DWordIO|DWordMemory|DWordSpace|EisaId|EISAID|EndDependentFn|Event|ExtendedIO|ExtendedMemory|ExtendedSpace|External|Fatal|Field|FindSetLeftBit|FindSetRightBit|FixedDMA|FixedIO|Fprintf|FromBCD|GpioInt|GpioIo|I2CSerialBusV2|IndexField|Interrupt|IO|IRQ|IRQNoFlags|Load|LoadTable|Match|Memory32|Memory32Fixed|Mid|Mutex|Name|Notify|Offset|ObjectType|OperationRegion|Package|PowerResource|Printf|QWordIO|QWordMemory|QWordSpace|RawDataBuffer|Register|Release|Reset|ResourceTemplate|Signal|SizeOf|Sleep|SPISerialBusV2|Stall|StartDependentFn|StartDependentFnNoPri|Store|ThermalZone|Timer|ToBCD|ToBuffer|ToDecimalString|ToInteger|ToPLD|ToString|ToUUID|UARTSerialBusV2|Unicode|Unload|VendorLong|VendorShort|WordBusNumber|WordIO|WordSpace",
        t = "Add|And|Decrement|Divide|Increment|Index|LAnd|LEqual|LGreater|LGreaterEqual|LLess|LLessEqual|LNot|LNotEqual|LOr|Mod|Multiply|NAnd|NOr|Not|Or|RefOf|Revision|ShiftLeft|ShiftRight|Subtract|XOr|DerefOf",
        n = "AttribQuick|AttribSendReceive|AttribByte|AttribBytes|AttribRawBytes|AttribRawProcessBytes|AttribWord|AttribBlock|AttribProcessCall|AttribBlockProcessCall|AnyAcc|ByteAcc|WordAcc|DWordAcc|QWordAcc|BufferAcc|AddressRangeMemory|AddressRangeReserved|AddressRangeNVS|AddressRangeACPI|RegionSpaceKeyword|FFixedHW|PCC|AddressingMode7Bit|AddressingMode10Bit|DataBitsFive|DataBitsSix|DataBitsSeven|DataBitsEight|DataBitsNine|BusMaster|NotBusMaster|ClockPhaseFirst|ClockPhaseSecond|ClockPolarityLow|ClockPolarityHigh|SubDecode|PosDecode|BigEndianing|LittleEndian|FlowControlNone|FlowControlXon|FlowControlHardware|Edge|Level|ActiveHigh|ActiveLow|ActiveBoth|Decode16|Decode10|IoRestrictionNone|IoRestrictionInputOnly|IoRestrictionOutputOnly|IoRestrictionNoneAndPreserve|Lock|NoLock|MTR|MEQ|MLE|MLT|MGE|MGT|MaxFixed|MaxNotFixed|Cacheable|WriteCombining|Prefetchable|NonCacheable|MinFixed|MinNotFixed|ParityTypeNone|ParityTypeSpace|ParityTypeMark|ParityTypeOdd|ParityTypeEven|PullDefault|PullUp|PullDown|PullNone|PolarityHigh|PolarityLow|ISAOnlyRanges|NonISAOnlyRanges|EntireRange|ReadWrite|ReadOnly|UserDefRegionSpace|SystemIO|SystemMemory|PCI_Config|EmbeddedControl|SMBus|SystemCMOS|PciBarTarget|IPMI|GeneralPurposeIO|GenericSerialBus|ResourceConsumer|ResourceProducer|Serialized|NotSerialized|Shared|Exclusive|SharedAndWake|ExclusiveAndWake|ControllerInitiated|DeviceInitiated|StopBitsZero|StopBitsOne|StopBitsOnePlusHalf|StopBitsTwo|Width8Bit|Width16Bit|Width32Bit|Width64Bit|Width128Bit|Width256Bit|SparseTranslation|DenseTranslation|TypeTranslation|TypeStatic|Preserve|WriteAsOnes|WriteAsZeros|Transfer8|Transfer16|Transfer8_16|ThreeWireMode|FourWireMode",
        r = "UnknownObj|IntObj|StrObj|BuffObj|PkgObj|FieldUnitObj|DeviceObj|EventObj|MethodObj|MutexObj|OpRegionObj|PowerResObj|ProcessorObj|ThermalZoneObj|BuffFieldObj|DDBHandleObj",
        s = "__FILE__|__PATH__|__LINE__|__DATE__|__IASL__",
        o = "One|Ones|Zero",
        u = "Memory24|Processor",
        a = this.createKeywordMapper({
      keyword: e,
      "constant.numeric": o,
      "keyword.operator": t,
      "constant.language": s,
      "storage.type": r,
      "constant.library": n,
      "invalid.deprecated": u
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\[",
        next: "ignoredfield"
      }, {
        token: "variable",
        regex: "\\Local[0-7]|\\Arg[0-6]"
      }, {
        token: "keyword",
        regex: "#\\s*(?:define|elif|else|endif|error|if|ifdef|ifndef|include|includebuffer|line|pragma|undef|warning)\\b",
        next: "directive"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "constant.character",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: /0[xX][0-9a-fA-F]+\b/
      }, {
        token: "constant.numeric",
        regex: /[0-9]+\b/
      }, {
        token: a,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: /[!\~\*\/%+-<>\^|=&]/
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      ignoredfield: [{
        token: "comment",
        regex: "\\]",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      directive: [{
        token: "constant.other.multiline",
        regex: /\\/
      }, {
        token: "constant.other.multiline",
        regex: /.*\\/
      }, {
        token: "constant.other",
        regex: "\\s*<.+?>*s",
        next: "start"
      }, {
        token: "constant.other",
        regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]*s',
        next: "start"
      }, {
        token: "constant.other",
        regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",
        next: "start"
      }, {
        token: "constant.other",
        regex: /[^\\\/]+/,
        next: "start"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]);
  };

  r.inherits(o, s), t.ASLHighlightRules = o;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/asl", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/asl_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./asl_highlight_rules").ASLHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.$id = "ace/mode/asl";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/asl"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-assembly_x86.js":
/*!*************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-assembly_x86.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/assembly_x86_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "keyword.control.assembly",
        regex: "\\b(?:aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vtestps|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(?:n?e|n?z)?|call|j(?:mp|n?e|ge?|ae?|le?|be?|n?o|n?z))\\b",
        caseInsensitive: !0
      }, {
        token: "variable.parameter.register.assembly",
        regex: "\\b(?:CS|DS|ES|FS|GS|SS|RAX|EAX|RBX|EBX|RCX|ECX|RDX|EDX|RCX|RIP|EIP|IP|RSP|ESP|SP|RSI|ESI|SI|RDI|EDI|DI|RFLAGS|EFLAGS|FLAGS|R8-15|(?:Y|X)MM(?:[0-9]|10|11|12|13|14|15)|(?:A|B|C|D)(?:X|H|L)|CR(?:[0-4]|DR(?:[0-7]|TR6|TR7|EFER)))\\b",
        caseInsensitive: !0
      }, {
        token: "constant.character.decimal.assembly",
        regex: "\\b[0-9]+\\b"
      }, {
        token: "constant.character.hexadecimal.assembly",
        regex: "\\b0x[A-F0-9]+\\b",
        caseInsensitive: !0
      }, {
        token: "constant.character.hexadecimal.assembly",
        regex: "\\b[A-F0-9]+h\\b",
        caseInsensitive: !0
      }, {
        token: "string.assembly",
        regex: /'([^\\']|\\.)*'/
      }, {
        token: "string.assembly",
        regex: /"([^\\"]|\\.)*"/
      }, {
        token: "support.function.directive.assembly",
        regex: "^\\[",
        push: [{
          token: "support.function.directive.assembly",
          regex: "\\]$",
          next: "pop"
        }, {
          defaultToken: "support.function.directive.assembly"
        }]
      }, {
        token: ["support.function.directive.assembly", "support.function.directive.assembly", "entity.name.function.assembly"],
        regex: "(^struc)( )([_a-zA-Z][_a-zA-Z0-9]*)"
      }, {
        token: "support.function.directive.assembly",
        regex: "^endstruc\\b"
      }, {
        token: ["support.function.directive.assembly", "entity.name.function.assembly", "support.function.directive.assembly", "constant.character.assembly"],
        regex: "^(%macro )([_a-zA-Z][_a-zA-Z0-9]*)( )([0-9]+)"
      }, {
        token: "support.function.directive.assembly",
        regex: "^%endmacro"
      }, {
        token: ["text", "support.function.directive.assembly", "text", "entity.name.function.assembly"],
        regex: "(\\s*)(%define|%xdefine|%idefine|%undef|%assign|%defstr|%strcat|%strlen|%substr|%00|%0|%rotate|%rep|%endrep|%include|\\$\\$|\\$|%unmacro|%if|%elif|%else|%endif|%(?:el)?ifdef|%(?:el)?ifmacro|%(?:el)?ifctx|%(?:el)?ifidn|%(?:el)?ifidni|%(?:el)?ifid|%(?:el)?ifnum|%(?:el)?ifstr|%(?:el)?iftoken|%(?:el)?ifempty|%(?:el)?ifenv|%pathsearch|%depend|%use|%push|%pop|%repl|%arg|%stacksize|%local|%error|%warning|%fatal|%line|%!|%comment|%endcomment|__NASM_VERSION_ID__|__NASM_VER__|__FILE__|__LINE__|__BITS__|__OUTPUT_FORMAT__|__DATE__|__TIME__|__DATE_NUM__|_TIME__NUM__|__UTC_DATE__|__UTC_TIME__|__UTC_DATE_NUM__|__UTC_TIME_NUM__|__POSIX_TIME__|__PASS__|ISTRUC|AT|IEND|BITS 16|BITS 32|BITS 64|USE16|USE32|__SECT__|ABSOLUTE|EXTERN|GLOBAL|COMMON|CPU|FLOAT)\\b( ?)((?:[_a-zA-Z][_a-zA-Z0-9]*)?)",
        caseInsensitive: !0
      }, {
        token: "support.function.directive.assembly",
        regex: "\\b(?:d[bwdqtoy]|res[bwdqto]|equ|times|align|alignb|sectalign|section|ptr|byte|word|dword|qword|incbin)\\b",
        caseInsensitive: !0
      }, {
        token: "entity.name.function.assembly",
        regex: "^\\s*%%[\\w.]+?:$"
      }, {
        token: "entity.name.function.assembly",
        regex: "^\\s*%\\$[\\w.]+?:$"
      }, {
        token: "entity.name.function.assembly",
        regex: "^[\\w.]+?:"
      }, {
        token: "entity.name.function.assembly",
        regex: "^[\\w.]+?\\b"
      }, {
        token: "comment.assembly",
        regex: ";.*$"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["asm"],
    name: "Assembly x86",
    scopeName: "source.assembly"
  }, r.inherits(s, i), t.AssemblyX86HighlightRules = s;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/assembly_x86", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/assembly_x86_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./assembly_x86_highlight_rules").AssemblyX86HighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = [";"], this.$id = "ace/mode/assembly_x86";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/assembly_x86"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-autohotkey.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-autohotkey.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/autohotkey_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "And|ByRef|Case|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Else|ElseIf|EndFunc|EndIf|EndSelect|EndSwitch|EndWith|Enum|Exit|ExitLoop|False|For|Func|Global|If|In|Local|Next|Not|Or|ReDim|Return|Select|Step|Switch|Then|To|True|Until|WEnd|While|With|Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitRotate|BitShift|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|ControlTreeView|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCallbackFree|DllCallbackGetPtr|DllCallbackRegister|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFSLink|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GUICreate|GUICtrlCreateAvi|GUICtrlCreateButton|GUICtrlCreateCheckbox|GUICtrlCreateCombo|GUICtrlCreateContextMenu|GUICtrlCreateDate|GUICtrlCreateDummy|GUICtrlCreateEdit|GUICtrlCreateGraphic|GUICtrlCreateGroup|GUICtrlCreateIcon|GUICtrlCreateInput|GUICtrlCreateLabel|GUICtrlCreateList|GUICtrlCreateListView|GUICtrlCreateListViewItem|GUICtrlCreateMenu|GUICtrlCreateMenuItem|GUICtrlCreateMonthCal|GUICtrlCreateObj|GUICtrlCreatePic|GUICtrlCreateProgress|GUICtrlCreateRadio|GUICtrlCreateSlider|GUICtrlCreateTab|GUICtrlCreateTabItem|GUICtrlCreateTreeView|GUICtrlCreateTreeViewItem|GUICtrlCreateUpdown|GUICtrlDelete|GUICtrlGetHandle|GUICtrlGetState|GUICtrlRead|GUICtrlRecvMsg|GUICtrlRegisterListViewSort|GUICtrlSendMsg|GUICtrlSendToDummy|GUICtrlSetBkColor|GUICtrlSetColor|GUICtrlSetCursor|GUICtrlSetData|GUICtrlSetFont|GUICtrlSetDefColor|GUICtrlSetDefBkColor|GUICtrlSetGraphic|GUICtrlSetImage|GUICtrlSetLimit|GUICtrlSetOnEvent|GUICtrlSetPos|GUICtrlSetResizing|GUICtrlSetState|GUICtrlSetStyle|GUICtrlSetTip|GUIDelete|GUIGetCursorInfo|GUIGetMsg|GUIGetStyle|GUIRegisterMsg|GUISetAccelerators()|GUISetBkColor|GUISetCoord|GUISetCursor|GUISetFont|GUISetHelp|GUISetIcon|GUISetOnEvent|GUISetState|GUISetStyle|GUIStartGroup|GUISwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsPtr|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Opt|Ping|PixelChecksum|PixelGetColor|PixelSearch|PluginClose|PluginOpen|ProcessClose|ProcessExists|ProcessGetStats|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProgressOn|ProgressSet|Ptr|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAs|RunAsWait|RunWait|Send|SendKeepActive|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdioClose|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPRecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|UDPShutdown|UDPStartup|VarGetType|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive|ArrayAdd|ArrayBinarySearch|ArrayConcatenate|ArrayDelete|ArrayDisplay|ArrayFindAll|ArrayInsert|ArrayMax|ArrayMaxIndex|ArrayMin|ArrayMinIndex|ArrayPop|ArrayPush|ArrayReverse|ArraySearch|ArraySort|ArraySwap|ArrayToClip|ArrayToString|ArrayTrim|ChooseColor|ChooseFont|ClipBoard_ChangeChain|ClipBoard_Close|ClipBoard_CountFormats|ClipBoard_Empty|ClipBoard_EnumFormats|ClipBoard_FormatStr|ClipBoard_GetData|ClipBoard_GetDataEx|ClipBoard_GetFormatName|ClipBoard_GetOpenWindow|ClipBoard_GetOwner|ClipBoard_GetPriorityFormat|ClipBoard_GetSequenceNumber|ClipBoard_GetViewer|ClipBoard_IsFormatAvailable|ClipBoard_Open|ClipBoard_RegisterFormat|ClipBoard_SetData|ClipBoard_SetDataEx|ClipBoard_SetViewer|ClipPutFile|ColorConvertHSLtoRGB|ColorConvertRGBtoHSL|ColorGetBlue|ColorGetGreen|ColorGetRed|Date_Time_CompareFileTime|Date_Time_DOSDateTimeToArray|Date_Time_DOSDateTimeToFileTime|Date_Time_DOSDateTimeToStr|Date_Time_DOSDateToArray|Date_Time_DOSDateToStr|Date_Time_DOSTimeToArray|Date_Time_DOSTimeToStr|Date_Time_EncodeFileTime|Date_Time_EncodeSystemTime|Date_Time_FileTimeToArray|Date_Time_FileTimeToDOSDateTime|Date_Time_FileTimeToLocalFileTime|Date_Time_FileTimeToStr|Date_Time_FileTimeToSystemTime|Date_Time_GetFileTime|Date_Time_GetLocalTime|Date_Time_GetSystemTime|Date_Time_GetSystemTimeAdjustment|Date_Time_GetSystemTimeAsFileTime|Date_Time_GetSystemTimes|Date_Time_GetTickCount|Date_Time_GetTimeZoneInformation|Date_Time_LocalFileTimeToFileTime|Date_Time_SetFileTime|Date_Time_SetLocalTime|Date_Time_SetSystemTime|Date_Time_SetSystemTimeAdjustment|Date_Time_SetTimeZoneInformation|Date_Time_SystemTimeToArray|Date_Time_SystemTimeToDateStr|Date_Time_SystemTimeToDateTimeStr|Date_Time_SystemTimeToFileTime|Date_Time_SystemTimeToTimeStr|Date_Time_SystemTimeToTzSpecificLocalTime|Date_Time_TzSpecificLocalTimeToSystemTime|DateAdd|DateDayOfWeek|DateDaysInMonth|DateDiff|DateIsLeapYear|DateIsValid|DateTimeFormat|DateTimeSplit|DateToDayOfWeek|DateToDayOfWeekISO|DateToDayValue|DateToMonth|DayValueToDate|DebugBugReportEnv|DebugOut|DebugSetup|Degree|EventLog__Backup|EventLog__Clear|EventLog__Close|EventLog__Count|EventLog__DeregisterSource|EventLog__Full|EventLog__Notify|EventLog__Oldest|EventLog__Open|EventLog__OpenBackup|EventLog__Read|EventLog__RegisterSource|EventLog__Report|FileCountLines|FileCreate|FileListToArray|FilePrint|FileReadToArray|FileWriteFromArray|FileWriteLog|FileWriteToLine|GDIPlus_ArrowCapCreate|GDIPlus_ArrowCapDispose|GDIPlus_ArrowCapGetFillState|GDIPlus_ArrowCapGetHeight|GDIPlus_ArrowCapGetMiddleInset|GDIPlus_ArrowCapGetWidth|GDIPlus_ArrowCapSetFillState|GDIPlus_ArrowCapSetHeight|GDIPlus_ArrowCapSetMiddleInset|GDIPlus_ArrowCapSetWidth|GDIPlus_BitmapCloneArea|GDIPlus_BitmapCreateFromFile|GDIPlus_BitmapCreateFromGraphics|GDIPlus_BitmapCreateFromHBITMAP|GDIPlus_BitmapCreateHBITMAPFromBitmap|GDIPlus_BitmapDispose|GDIPlus_BitmapLockBits|GDIPlus_BitmapUnlockBits|GDIPlus_BrushClone|GDIPlus_BrushCreateSolid|GDIPlus_BrushDispose|GDIPlus_BrushGetType|GDIPlus_CustomLineCapDispose|GDIPlus_Decoders|GDIPlus_DecodersGetCount|GDIPlus_DecodersGetSize|GDIPlus_Encoders|GDIPlus_EncodersGetCLSID|GDIPlus_EncodersGetCount|GDIPlus_EncodersGetParamList|GDIPlus_EncodersGetParamListSize|GDIPlus_EncodersGetSize|GDIPlus_FontCreate|GDIPlus_FontDispose|GDIPlus_FontFamilyCreate|GDIPlus_FontFamilyDispose|GDIPlus_GraphicsClear|GDIPlus_GraphicsCreateFromHDC|GDIPlus_GraphicsCreateFromHWND|GDIPlus_GraphicsDispose|GDIPlus_GraphicsDrawArc|GDIPlus_GraphicsDrawBezier|GDIPlus_GraphicsDrawClosedCurve|GDIPlus_GraphicsDrawCurve|GDIPlus_GraphicsDrawEllipse|GDIPlus_GraphicsDrawImage|GDIPlus_GraphicsDrawImageRect|GDIPlus_GraphicsDrawImageRectRect|GDIPlus_GraphicsDrawLine|GDIPlus_GraphicsDrawPie|GDIPlus_GraphicsDrawPolygon|GDIPlus_GraphicsDrawRect|GDIPlus_GraphicsDrawString|GDIPlus_GraphicsDrawStringEx|GDIPlus_GraphicsFillClosedCurve|GDIPlus_GraphicsFillEllipse|GDIPlus_GraphicsFillPie|GDIPlus_GraphicsFillRect|GDIPlus_GraphicsGetDC|GDIPlus_GraphicsGetSmoothingMode|GDIPlus_GraphicsMeasureString|GDIPlus_GraphicsReleaseDC|GDIPlus_GraphicsSetSmoothingMode|GDIPlus_GraphicsSetTransform|GDIPlus_ImageDispose|GDIPlus_ImageGetGraphicsContext|GDIPlus_ImageGetHeight|GDIPlus_ImageGetWidth|GDIPlus_ImageLoadFromFile|GDIPlus_ImageSaveToFile|GDIPlus_ImageSaveToFileEx|GDIPlus_MatrixCreate|GDIPlus_MatrixDispose|GDIPlus_MatrixRotate|GDIPlus_ParamAdd|GDIPlus_ParamInit|GDIPlus_PenCreate|GDIPlus_PenDispose|GDIPlus_PenGetAlignment|GDIPlus_PenGetColor|GDIPlus_PenGetCustomEndCap|GDIPlus_PenGetDashCap|GDIPlus_PenGetDashStyle|GDIPlus_PenGetEndCap|GDIPlus_PenGetWidth|GDIPlus_PenSetAlignment|GDIPlus_PenSetColor|GDIPlus_PenSetCustomEndCap|GDIPlus_PenSetDashCap|GDIPlus_PenSetDashStyle|GDIPlus_PenSetEndCap|GDIPlus_PenSetWidth|GDIPlus_RectFCreate|GDIPlus_Shutdown|GDIPlus_Startup|GDIPlus_StringFormatCreate|GDIPlus_StringFormatDispose|GetIP|GUICtrlAVI_Close|GUICtrlAVI_Create|GUICtrlAVI_Destroy|GUICtrlAVI_Open|GUICtrlAVI_OpenEx|GUICtrlAVI_Play|GUICtrlAVI_Seek|GUICtrlAVI_Show|GUICtrlAVI_Stop|GUICtrlButton_Click|GUICtrlButton_Create|GUICtrlButton_Destroy|GUICtrlButton_Enable|GUICtrlButton_GetCheck|GUICtrlButton_GetFocus|GUICtrlButton_GetIdealSize|GUICtrlButton_GetImage|GUICtrlButton_GetImageList|GUICtrlButton_GetState|GUICtrlButton_GetText|GUICtrlButton_GetTextMargin|GUICtrlButton_SetCheck|GUICtrlButton_SetFocus|GUICtrlButton_SetImage|GUICtrlButton_SetImageList|GUICtrlButton_SetSize|GUICtrlButton_SetState|GUICtrlButton_SetStyle|GUICtrlButton_SetText|GUICtrlButton_SetTextMargin|GUICtrlButton_Show|GUICtrlComboBox_AddDir|GUICtrlComboBox_AddString|GUICtrlComboBox_AutoComplete|GUICtrlComboBox_BeginUpdate|GUICtrlComboBox_Create|GUICtrlComboBox_DeleteString|GUICtrlComboBox_Destroy|GUICtrlComboBox_EndUpdate|GUICtrlComboBox_FindString|GUICtrlComboBox_FindStringExact|GUICtrlComboBox_GetComboBoxInfo|GUICtrlComboBox_GetCount|GUICtrlComboBox_GetCurSel|GUICtrlComboBox_GetDroppedControlRect|GUICtrlComboBox_GetDroppedControlRectEx|GUICtrlComboBox_GetDroppedState|GUICtrlComboBox_GetDroppedWidth|GUICtrlComboBox_GetEditSel|GUICtrlComboBox_GetEditText|GUICtrlComboBox_GetExtendedUI|GUICtrlComboBox_GetHorizontalExtent|GUICtrlComboBox_GetItemHeight|GUICtrlComboBox_GetLBText|GUICtrlComboBox_GetLBTextLen|GUICtrlComboBox_GetList|GUICtrlComboBox_GetListArray|GUICtrlComboBox_GetLocale|GUICtrlComboBox_GetLocaleCountry|GUICtrlComboBox_GetLocaleLang|GUICtrlComboBox_GetLocalePrimLang|GUICtrlComboBox_GetLocaleSubLang|GUICtrlComboBox_GetMinVisible|GUICtrlComboBox_GetTopIndex|GUICtrlComboBox_InitStorage|GUICtrlComboBox_InsertString|GUICtrlComboBox_LimitText|GUICtrlComboBox_ReplaceEditSel|GUICtrlComboBox_ResetContent|GUICtrlComboBox_SelectString|GUICtrlComboBox_SetCurSel|GUICtrlComboBox_SetDroppedWidth|GUICtrlComboBox_SetEditSel|GUICtrlComboBox_SetEditText|GUICtrlComboBox_SetExtendedUI|GUICtrlComboBox_SetHorizontalExtent|GUICtrlComboBox_SetItemHeight|GUICtrlComboBox_SetMinVisible|GUICtrlComboBox_SetTopIndex|GUICtrlComboBox_ShowDropDown|GUICtrlComboBoxEx_AddDir|GUICtrlComboBoxEx_AddString|GUICtrlComboBoxEx_BeginUpdate|GUICtrlComboBoxEx_Create|GUICtrlComboBoxEx_CreateSolidBitMap|GUICtrlComboBoxEx_DeleteString|GUICtrlComboBoxEx_Destroy|GUICtrlComboBoxEx_EndUpdate|GUICtrlComboBoxEx_FindStringExact|GUICtrlComboBoxEx_GetComboBoxInfo|GUICtrlComboBoxEx_GetComboControl|GUICtrlComboBoxEx_GetCount|GUICtrlComboBoxEx_GetCurSel|GUICtrlComboBoxEx_GetDroppedControlRect|GUICtrlComboBoxEx_GetDroppedControlRectEx|GUICtrlComboBoxEx_GetDroppedState|GUICtrlComboBoxEx_GetDroppedWidth|GUICtrlComboBoxEx_GetEditControl|GUICtrlComboBoxEx_GetEditSel|GUICtrlComboBoxEx_GetEditText|GUICtrlComboBoxEx_GetExtendedStyle|GUICtrlComboBoxEx_GetExtendedUI|GUICtrlComboBoxEx_GetImageList|GUICtrlComboBoxEx_GetItem|GUICtrlComboBoxEx_GetItemEx|GUICtrlComboBoxEx_GetItemHeight|GUICtrlComboBoxEx_GetItemImage|GUICtrlComboBoxEx_GetItemIndent|GUICtrlComboBoxEx_GetItemOverlayImage|GUICtrlComboBoxEx_GetItemParam|GUICtrlComboBoxEx_GetItemSelectedImage|GUICtrlComboBoxEx_GetItemText|GUICtrlComboBoxEx_GetItemTextLen|GUICtrlComboBoxEx_GetList|GUICtrlComboBoxEx_GetListArray|GUICtrlComboBoxEx_GetLocale|GUICtrlComboBoxEx_GetLocaleCountry|GUICtrlComboBoxEx_GetLocaleLang|GUICtrlComboBoxEx_GetLocalePrimLang|GUICtrlComboBoxEx_GetLocaleSubLang|GUICtrlComboBoxEx_GetMinVisible|GUICtrlComboBoxEx_GetTopIndex|GUICtrlComboBoxEx_InitStorage|GUICtrlComboBoxEx_InsertString|GUICtrlComboBoxEx_LimitText|GUICtrlComboBoxEx_ReplaceEditSel|GUICtrlComboBoxEx_ResetContent|GUICtrlComboBoxEx_SetCurSel|GUICtrlComboBoxEx_SetDroppedWidth|GUICtrlComboBoxEx_SetEditSel|GUICtrlComboBoxEx_SetEditText|GUICtrlComboBoxEx_SetExtendedStyle|GUICtrlComboBoxEx_SetExtendedUI|GUICtrlComboBoxEx_SetImageList|GUICtrlComboBoxEx_SetItem|GUICtrlComboBoxEx_SetItemEx|GUICtrlComboBoxEx_SetItemHeight|GUICtrlComboBoxEx_SetItemImage|GUICtrlComboBoxEx_SetItemIndent|GUICtrlComboBoxEx_SetItemOverlayImage|GUICtrlComboBoxEx_SetItemParam|GUICtrlComboBoxEx_SetItemSelectedImage|GUICtrlComboBoxEx_SetMinVisible|GUICtrlComboBoxEx_SetTopIndex|GUICtrlComboBoxEx_ShowDropDown|GUICtrlDTP_Create|GUICtrlDTP_Destroy|GUICtrlDTP_GetMCColor|GUICtrlDTP_GetMCFont|GUICtrlDTP_GetMonthCal|GUICtrlDTP_GetRange|GUICtrlDTP_GetRangeEx|GUICtrlDTP_GetSystemTime|GUICtrlDTP_GetSystemTimeEx|GUICtrlDTP_SetFormat|GUICtrlDTP_SetMCColor|GUICtrlDTP_SetMCFont|GUICtrlDTP_SetRange|GUICtrlDTP_SetRangeEx|GUICtrlDTP_SetSystemTime|GUICtrlDTP_SetSystemTimeEx|GUICtrlEdit_AppendText|GUICtrlEdit_BeginUpdate|GUICtrlEdit_CanUndo|GUICtrlEdit_CharFromPos|GUICtrlEdit_Create|GUICtrlEdit_Destroy|GUICtrlEdit_EmptyUndoBuffer|GUICtrlEdit_EndUpdate|GUICtrlEdit_Find|GUICtrlEdit_FmtLines|GUICtrlEdit_GetFirstVisibleLine|GUICtrlEdit_GetLimitText|GUICtrlEdit_GetLine|GUICtrlEdit_GetLineCount|GUICtrlEdit_GetMargins|GUICtrlEdit_GetModify|GUICtrlEdit_GetPasswordChar|GUICtrlEdit_GetRECT|GUICtrlEdit_GetRECTEx|GUICtrlEdit_GetSel|GUICtrlEdit_GetText|GUICtrlEdit_GetTextLen|GUICtrlEdit_HideBalloonTip|GUICtrlEdit_InsertText|GUICtrlEdit_LineFromChar|GUICtrlEdit_LineIndex|GUICtrlEdit_LineLength|GUICtrlEdit_LineScroll|GUICtrlEdit_PosFromChar|GUICtrlEdit_ReplaceSel|GUICtrlEdit_Scroll|GUICtrlEdit_SetLimitText|GUICtrlEdit_SetMargins|GUICtrlEdit_SetModify|GUICtrlEdit_SetPasswordChar|GUICtrlEdit_SetReadOnly|GUICtrlEdit_SetRECT|GUICtrlEdit_SetRECTEx|GUICtrlEdit_SetRECTNP|GUICtrlEdit_SetRectNPEx|GUICtrlEdit_SetSel|GUICtrlEdit_SetTabStops|GUICtrlEdit_SetText|GUICtrlEdit_ShowBalloonTip|GUICtrlEdit_Undo|GUICtrlHeader_AddItem|GUICtrlHeader_ClearFilter|GUICtrlHeader_ClearFilterAll|GUICtrlHeader_Create|GUICtrlHeader_CreateDragImage|GUICtrlHeader_DeleteItem|GUICtrlHeader_Destroy|GUICtrlHeader_EditFilter|GUICtrlHeader_GetBitmapMargin|GUICtrlHeader_GetImageList|GUICtrlHeader_GetItem|GUICtrlHeader_GetItemAlign|GUICtrlHeader_GetItemBitmap|GUICtrlHeader_GetItemCount|GUICtrlHeader_GetItemDisplay|GUICtrlHeader_GetItemFlags|GUICtrlHeader_GetItemFormat|GUICtrlHeader_GetItemImage|GUICtrlHeader_GetItemOrder|GUICtrlHeader_GetItemParam|GUICtrlHeader_GetItemRect|GUICtrlHeader_GetItemRectEx|GUICtrlHeader_GetItemText|GUICtrlHeader_GetItemWidth|GUICtrlHeader_GetOrderArray|GUICtrlHeader_GetUnicodeFormat|GUICtrlHeader_HitTest|GUICtrlHeader_InsertItem|GUICtrlHeader_Layout|GUICtrlHeader_OrderToIndex|GUICtrlHeader_SetBitmapMargin|GUICtrlHeader_SetFilterChangeTimeout|GUICtrlHeader_SetHotDivider|GUICtrlHeader_SetImageList|GUICtrlHeader_SetItem|GUICtrlHeader_SetItemAlign|GUICtrlHeader_SetItemBitmap|GUICtrlHeader_SetItemDisplay|GUICtrlHeader_SetItemFlags|GUICtrlHeader_SetItemFormat|GUICtrlHeader_SetItemImage|GUICtrlHeader_SetItemOrder|GUICtrlHeader_SetItemParam|GUICtrlHeader_SetItemText|GUICtrlHeader_SetItemWidth|GUICtrlHeader_SetOrderArray|GUICtrlHeader_SetUnicodeFormat|GUICtrlIpAddress_ClearAddress|GUICtrlIpAddress_Create|GUICtrlIpAddress_Destroy|GUICtrlIpAddress_Get|GUICtrlIpAddress_GetArray|GUICtrlIpAddress_GetEx|GUICtrlIpAddress_IsBlank|GUICtrlIpAddress_Set|GUICtrlIpAddress_SetArray|GUICtrlIpAddress_SetEx|GUICtrlIpAddress_SetFocus|GUICtrlIpAddress_SetFont|GUICtrlIpAddress_SetRange|GUICtrlIpAddress_ShowHide|GUICtrlListBox_AddFile|GUICtrlListBox_AddString|GUICtrlListBox_BeginUpdate|GUICtrlListBox_Create|GUICtrlListBox_DeleteString|GUICtrlListBox_Destroy|GUICtrlListBox_Dir|GUICtrlListBox_EndUpdate|GUICtrlListBox_FindInText|GUICtrlListBox_FindString|GUICtrlListBox_GetAnchorIndex|GUICtrlListBox_GetCaretIndex|GUICtrlListBox_GetCount|GUICtrlListBox_GetCurSel|GUICtrlListBox_GetHorizontalExtent|GUICtrlListBox_GetItemData|GUICtrlListBox_GetItemHeight|GUICtrlListBox_GetItemRect|GUICtrlListBox_GetItemRectEx|GUICtrlListBox_GetListBoxInfo|GUICtrlListBox_GetLocale|GUICtrlListBox_GetLocaleCountry|GUICtrlListBox_GetLocaleLang|GUICtrlListBox_GetLocalePrimLang|GUICtrlListBox_GetLocaleSubLang|GUICtrlListBox_GetSel|GUICtrlListBox_GetSelCount|GUICtrlListBox_GetSelItems|GUICtrlListBox_GetSelItemsText|GUICtrlListBox_GetText|GUICtrlListBox_GetTextLen|GUICtrlListBox_GetTopIndex|GUICtrlListBox_InitStorage|GUICtrlListBox_InsertString|GUICtrlListBox_ItemFromPoint|GUICtrlListBox_ReplaceString|GUICtrlListBox_ResetContent|GUICtrlListBox_SelectString|GUICtrlListBox_SelItemRange|GUICtrlListBox_SelItemRangeEx|GUICtrlListBox_SetAnchorIndex|GUICtrlListBox_SetCaretIndex|GUICtrlListBox_SetColumnWidth|GUICtrlListBox_SetCurSel|GUICtrlListBox_SetHorizontalExtent|GUICtrlListBox_SetItemData|GUICtrlListBox_SetItemHeight|GUICtrlListBox_SetLocale|GUICtrlListBox_SetSel|GUICtrlListBox_SetTabStops|GUICtrlListBox_SetTopIndex|GUICtrlListBox_Sort|GUICtrlListBox_SwapString|GUICtrlListBox_UpdateHScroll|GUICtrlListView_AddArray|GUICtrlListView_AddColumn|GUICtrlListView_AddItem|GUICtrlListView_AddSubItem|GUICtrlListView_ApproximateViewHeight|GUICtrlListView_ApproximateViewRect|GUICtrlListView_ApproximateViewWidth|GUICtrlListView_Arrange|GUICtrlListView_BeginUpdate|GUICtrlListView_CancelEditLabel|GUICtrlListView_ClickItem|GUICtrlListView_CopyItems|GUICtrlListView_Create|GUICtrlListView_CreateDragImage|GUICtrlListView_CreateSolidBitMap|GUICtrlListView_DeleteAllItems|GUICtrlListView_DeleteColumn|GUICtrlListView_DeleteItem|GUICtrlListView_DeleteItemsSelected|GUICtrlListView_Destroy|GUICtrlListView_DrawDragImage|GUICtrlListView_EditLabel|GUICtrlListView_EnableGroupView|GUICtrlListView_EndUpdate|GUICtrlListView_EnsureVisible|GUICtrlListView_FindInText|GUICtrlListView_FindItem|GUICtrlListView_FindNearest|GUICtrlListView_FindParam|GUICtrlListView_FindText|GUICtrlListView_GetBkColor|GUICtrlListView_GetBkImage|GUICtrlListView_GetCallbackMask|GUICtrlListView_GetColumn|GUICtrlListView_GetColumnCount|GUICtrlListView_GetColumnOrder|GUICtrlListView_GetColumnOrderArray|GUICtrlListView_GetColumnWidth|GUICtrlListView_GetCounterPage|GUICtrlListView_GetEditControl|GUICtrlListView_GetExtendedListViewStyle|GUICtrlListView_GetGroupInfo|GUICtrlListView_GetGroupViewEnabled|GUICtrlListView_GetHeader|GUICtrlListView_GetHotCursor|GUICtrlListView_GetHotItem|GUICtrlListView_GetHoverTime|GUICtrlListView_GetImageList|GUICtrlListView_GetISearchString|GUICtrlListView_GetItem|GUICtrlListView_GetItemChecked|GUICtrlListView_GetItemCount|GUICtrlListView_GetItemCut|GUICtrlListView_GetItemDropHilited|GUICtrlListView_GetItemEx|GUICtrlListView_GetItemFocused|GUICtrlListView_GetItemGroupID|GUICtrlListView_GetItemImage|GUICtrlListView_GetItemIndent|GUICtrlListView_GetItemParam|GUICtrlListView_GetItemPosition|GUICtrlListView_GetItemPositionX|GUICtrlListView_GetItemPositionY|GUICtrlListView_GetItemRect|GUICtrlListView_GetItemRectEx|GUICtrlListView_GetItemSelected|GUICtrlListView_GetItemSpacing|GUICtrlListView_GetItemSpacingX|GUICtrlListView_GetItemSpacingY|GUICtrlListView_GetItemState|GUICtrlListView_GetItemStateImage|GUICtrlListView_GetItemText|GUICtrlListView_GetItemTextArray|GUICtrlListView_GetItemTextString|GUICtrlListView_GetNextItem|GUICtrlListView_GetNumberOfWorkAreas|GUICtrlListView_GetOrigin|GUICtrlListView_GetOriginX|GUICtrlListView_GetOriginY|GUICtrlListView_GetOutlineColor|GUICtrlListView_GetSelectedColumn|GUICtrlListView_GetSelectedCount|GUICtrlListView_GetSelectedIndices|GUICtrlListView_GetSelectionMark|GUICtrlListView_GetStringWidth|GUICtrlListView_GetSubItemRect|GUICtrlListView_GetTextBkColor|GUICtrlListView_GetTextColor|GUICtrlListView_GetToolTips|GUICtrlListView_GetTopIndex|GUICtrlListView_GetUnicodeFormat|GUICtrlListView_GetView|GUICtrlListView_GetViewDetails|GUICtrlListView_GetViewLarge|GUICtrlListView_GetViewList|GUICtrlListView_GetViewRect|GUICtrlListView_GetViewSmall|GUICtrlListView_GetViewTile|GUICtrlListView_HideColumn|GUICtrlListView_HitTest|GUICtrlListView_InsertColumn|GUICtrlListView_InsertGroup|GUICtrlListView_InsertItem|GUICtrlListView_JustifyColumn|GUICtrlListView_MapIDToIndex|GUICtrlListView_MapIndexToID|GUICtrlListView_RedrawItems|GUICtrlListView_RegisterSortCallBack|GUICtrlListView_RemoveAllGroups|GUICtrlListView_RemoveGroup|GUICtrlListView_Scroll|GUICtrlListView_SetBkColor|GUICtrlListView_SetBkImage|GUICtrlListView_SetCallBackMask|GUICtrlListView_SetColumn|GUICtrlListView_SetColumnOrder|GUICtrlListView_SetColumnOrderArray|GUICtrlListView_SetColumnWidth|GUICtrlListView_SetExtendedListViewStyle|GUICtrlListView_SetGroupInfo|GUICtrlListView_SetHotItem|GUICtrlListView_SetHoverTime|GUICtrlListView_SetIconSpacing|GUICtrlListView_SetImageList|GUICtrlListView_SetItem|GUICtrlListView_SetItemChecked|GUICtrlListView_SetItemCount|GUICtrlListView_SetItemCut|GUICtrlListView_SetItemDropHilited|GUICtrlListView_SetItemEx|GUICtrlListView_SetItemFocused|GUICtrlListView_SetItemGroupID|GUICtrlListView_SetItemImage|GUICtrlListView_SetItemIndent|GUICtrlListView_SetItemParam|GUICtrlListView_SetItemPosition|GUICtrlListView_SetItemPosition32|GUICtrlListView_SetItemSelected|GUICtrlListView_SetItemState|GUICtrlListView_SetItemStateImage|GUICtrlListView_SetItemText|GUICtrlListView_SetOutlineColor|GUICtrlListView_SetSelectedColumn|GUICtrlListView_SetSelectionMark|GUICtrlListView_SetTextBkColor|GUICtrlListView_SetTextColor|GUICtrlListView_SetToolTips|GUICtrlListView_SetUnicodeFormat|GUICtrlListView_SetView|GUICtrlListView_SetWorkAreas|GUICtrlListView_SimpleSort|GUICtrlListView_SortItems|GUICtrlListView_SubItemHitTest|GUICtrlListView_UnRegisterSortCallBack|GUICtrlMenu_AddMenuItem|GUICtrlMenu_AppendMenu|GUICtrlMenu_CheckMenuItem|GUICtrlMenu_CheckRadioItem|GUICtrlMenu_CreateMenu|GUICtrlMenu_CreatePopup|GUICtrlMenu_DeleteMenu|GUICtrlMenu_DestroyMenu|GUICtrlMenu_DrawMenuBar|GUICtrlMenu_EnableMenuItem|GUICtrlMenu_FindItem|GUICtrlMenu_FindParent|GUICtrlMenu_GetItemBmp|GUICtrlMenu_GetItemBmpChecked|GUICtrlMenu_GetItemBmpUnchecked|GUICtrlMenu_GetItemChecked|GUICtrlMenu_GetItemCount|GUICtrlMenu_GetItemData|GUICtrlMenu_GetItemDefault|GUICtrlMenu_GetItemDisabled|GUICtrlMenu_GetItemEnabled|GUICtrlMenu_GetItemGrayed|GUICtrlMenu_GetItemHighlighted|GUICtrlMenu_GetItemID|GUICtrlMenu_GetItemInfo|GUICtrlMenu_GetItemRect|GUICtrlMenu_GetItemRectEx|GUICtrlMenu_GetItemState|GUICtrlMenu_GetItemStateEx|GUICtrlMenu_GetItemSubMenu|GUICtrlMenu_GetItemText|GUICtrlMenu_GetItemType|GUICtrlMenu_GetMenu|GUICtrlMenu_GetMenuBackground|GUICtrlMenu_GetMenuBarInfo|GUICtrlMenu_GetMenuContextHelpID|GUICtrlMenu_GetMenuData|GUICtrlMenu_GetMenuDefaultItem|GUICtrlMenu_GetMenuHeight|GUICtrlMenu_GetMenuInfo|GUICtrlMenu_GetMenuStyle|GUICtrlMenu_GetSystemMenu|GUICtrlMenu_InsertMenuItem|GUICtrlMenu_InsertMenuItemEx|GUICtrlMenu_IsMenu|GUICtrlMenu_LoadMenu|GUICtrlMenu_MapAccelerator|GUICtrlMenu_MenuItemFromPoint|GUICtrlMenu_RemoveMenu|GUICtrlMenu_SetItemBitmaps|GUICtrlMenu_SetItemBmp|GUICtrlMenu_SetItemBmpChecked|GUICtrlMenu_SetItemBmpUnchecked|GUICtrlMenu_SetItemChecked|GUICtrlMenu_SetItemData|GUICtrlMenu_SetItemDefault|GUICtrlMenu_SetItemDisabled|GUICtrlMenu_SetItemEnabled|GUICtrlMenu_SetItemGrayed|GUICtrlMenu_SetItemHighlighted|GUICtrlMenu_SetItemID|GUICtrlMenu_SetItemInfo|GUICtrlMenu_SetItemState|GUICtrlMenu_SetItemSubMenu|GUICtrlMenu_SetItemText|GUICtrlMenu_SetItemType|GUICtrlMenu_SetMenu|GUICtrlMenu_SetMenuBackground|GUICtrlMenu_SetMenuContextHelpID|GUICtrlMenu_SetMenuData|GUICtrlMenu_SetMenuDefaultItem|GUICtrlMenu_SetMenuHeight|GUICtrlMenu_SetMenuInfo|GUICtrlMenu_SetMenuStyle|GUICtrlMenu_TrackPopupMenu|GUICtrlMonthCal_Create|GUICtrlMonthCal_Destroy|GUICtrlMonthCal_GetColor|GUICtrlMonthCal_GetColorArray|GUICtrlMonthCal_GetCurSel|GUICtrlMonthCal_GetCurSelStr|GUICtrlMonthCal_GetFirstDOW|GUICtrlMonthCal_GetFirstDOWStr|GUICtrlMonthCal_GetMaxSelCount|GUICtrlMonthCal_GetMaxTodayWidth|GUICtrlMonthCal_GetMinReqHeight|GUICtrlMonthCal_GetMinReqRect|GUICtrlMonthCal_GetMinReqRectArray|GUICtrlMonthCal_GetMinReqWidth|GUICtrlMonthCal_GetMonthDelta|GUICtrlMonthCal_GetMonthRange|GUICtrlMonthCal_GetMonthRangeMax|GUICtrlMonthCal_GetMonthRangeMaxStr|GUICtrlMonthCal_GetMonthRangeMin|GUICtrlMonthCal_GetMonthRangeMinStr|GUICtrlMonthCal_GetMonthRangeSpan|GUICtrlMonthCal_GetRange|GUICtrlMonthCal_GetRangeMax|GUICtrlMonthCal_GetRangeMaxStr|GUICtrlMonthCal_GetRangeMin|GUICtrlMonthCal_GetRangeMinStr|GUICtrlMonthCal_GetSelRange|GUICtrlMonthCal_GetSelRangeMax|GUICtrlMonthCal_GetSelRangeMaxStr|GUICtrlMonthCal_GetSelRangeMin|GUICtrlMonthCal_GetSelRangeMinStr|GUICtrlMonthCal_GetToday|GUICtrlMonthCal_GetTodayStr|GUICtrlMonthCal_GetUnicodeFormat|GUICtrlMonthCal_HitTest|GUICtrlMonthCal_SetColor|GUICtrlMonthCal_SetCurSel|GUICtrlMonthCal_SetDayState|GUICtrlMonthCal_SetFirstDOW|GUICtrlMonthCal_SetMaxSelCount|GUICtrlMonthCal_SetMonthDelta|GUICtrlMonthCal_SetRange|GUICtrlMonthCal_SetSelRange|GUICtrlMonthCal_SetToday|GUICtrlMonthCal_SetUnicodeFormat|GUICtrlRebar_AddBand|GUICtrlRebar_AddToolBarBand|GUICtrlRebar_BeginDrag|GUICtrlRebar_Create|GUICtrlRebar_DeleteBand|GUICtrlRebar_Destroy|GUICtrlRebar_DragMove|GUICtrlRebar_EndDrag|GUICtrlRebar_GetBandBackColor|GUICtrlRebar_GetBandBorders|GUICtrlRebar_GetBandBordersEx|GUICtrlRebar_GetBandChildHandle|GUICtrlRebar_GetBandChildSize|GUICtrlRebar_GetBandCount|GUICtrlRebar_GetBandForeColor|GUICtrlRebar_GetBandHeaderSize|GUICtrlRebar_GetBandID|GUICtrlRebar_GetBandIdealSize|GUICtrlRebar_GetBandLength|GUICtrlRebar_GetBandLParam|GUICtrlRebar_GetBandMargins|GUICtrlRebar_GetBandMarginsEx|GUICtrlRebar_GetBandRect|GUICtrlRebar_GetBandRectEx|GUICtrlRebar_GetBandStyle|GUICtrlRebar_GetBandStyleBreak|GUICtrlRebar_GetBandStyleChildEdge|GUICtrlRebar_GetBandStyleFixedBMP|GUICtrlRebar_GetBandStyleFixedSize|GUICtrlRebar_GetBandStyleGripperAlways|GUICtrlRebar_GetBandStyleHidden|GUICtrlRebar_GetBandStyleHideTitle|GUICtrlRebar_GetBandStyleNoGripper|GUICtrlRebar_GetBandStyleTopAlign|GUICtrlRebar_GetBandStyleUseChevron|GUICtrlRebar_GetBandStyleVariableHeight|GUICtrlRebar_GetBandText|GUICtrlRebar_GetBarHeight|GUICtrlRebar_GetBKColor|GUICtrlRebar_GetColorScheme|GUICtrlRebar_GetRowCount|GUICtrlRebar_GetRowHeight|GUICtrlRebar_GetTextColor|GUICtrlRebar_GetToolTips|GUICtrlRebar_GetUnicodeFormat|GUICtrlRebar_HitTest|GUICtrlRebar_IDToIndex|GUICtrlRebar_MaximizeBand|GUICtrlRebar_MinimizeBand|GUICtrlRebar_MoveBand|GUICtrlRebar_SetBandBackColor|GUICtrlRebar_SetBandForeColor|GUICtrlRebar_SetBandHeaderSize|GUICtrlRebar_SetBandID|GUICtrlRebar_SetBandIdealSize|GUICtrlRebar_SetBandLength|GUICtrlRebar_SetBandLParam|GUICtrlRebar_SetBandStyle|GUICtrlRebar_SetBandStyleBreak|GUICtrlRebar_SetBandStyleChildEdge|GUICtrlRebar_SetBandStyleFixedBMP|GUICtrlRebar_SetBandStyleFixedSize|GUICtrlRebar_SetBandStyleGripperAlways|GUICtrlRebar_SetBandStyleHidden|GUICtrlRebar_SetBandStyleHideTitle|GUICtrlRebar_SetBandStyleNoGripper|GUICtrlRebar_SetBandStyleTopAlign|GUICtrlRebar_SetBandStyleUseChevron|GUICtrlRebar_SetBandStyleVariableHeight|GUICtrlRebar_SetBandText|GUICtrlRebar_SetBKColor|GUICtrlRebar_SetColorScheme|GUICtrlRebar_SetTextColor|GUICtrlRebar_SetToolTips|GUICtrlRebar_SetUnicodeFormat|GUICtrlRebar_ShowBand|GUICtrlSlider_ClearSel|GUICtrlSlider_ClearTics|GUICtrlSlider_Create|GUICtrlSlider_Destroy|GUICtrlSlider_GetBuddy|GUICtrlSlider_GetChannelRect|GUICtrlSlider_GetLineSize|GUICtrlSlider_GetNumTics|GUICtrlSlider_GetPageSize|GUICtrlSlider_GetPos|GUICtrlSlider_GetPTics|GUICtrlSlider_GetRange|GUICtrlSlider_GetRangeMax|GUICtrlSlider_GetRangeMin|GUICtrlSlider_GetSel|GUICtrlSlider_GetSelEnd|GUICtrlSlider_GetSelStart|GUICtrlSlider_GetThumbLength|GUICtrlSlider_GetThumbRect|GUICtrlSlider_GetThumbRectEx|GUICtrlSlider_GetTic|GUICtrlSlider_GetTicPos|GUICtrlSlider_GetToolTips|GUICtrlSlider_GetUnicodeFormat|GUICtrlSlider_SetBuddy|GUICtrlSlider_SetLineSize|GUICtrlSlider_SetPageSize|GUICtrlSlider_SetPos|GUICtrlSlider_SetRange|GUICtrlSlider_SetRangeMax|GUICtrlSlider_SetRangeMin|GUICtrlSlider_SetSel|GUICtrlSlider_SetSelEnd|GUICtrlSlider_SetSelStart|GUICtrlSlider_SetThumbLength|GUICtrlSlider_SetTic|GUICtrlSlider_SetTicFreq|GUICtrlSlider_SetTipSide|GUICtrlSlider_SetToolTips|GUICtrlSlider_SetUnicodeFormat|GUICtrlStatusBar_Create|GUICtrlStatusBar_Destroy|GUICtrlStatusBar_EmbedControl|GUICtrlStatusBar_GetBorders|GUICtrlStatusBar_GetBordersHorz|GUICtrlStatusBar_GetBordersRect|GUICtrlStatusBar_GetBordersVert|GUICtrlStatusBar_GetCount|GUICtrlStatusBar_GetHeight|GUICtrlStatusBar_GetIcon|GUICtrlStatusBar_GetParts|GUICtrlStatusBar_GetRect|GUICtrlStatusBar_GetRectEx|GUICtrlStatusBar_GetText|GUICtrlStatusBar_GetTextFlags|GUICtrlStatusBar_GetTextLength|GUICtrlStatusBar_GetTextLengthEx|GUICtrlStatusBar_GetTipText|GUICtrlStatusBar_GetUnicodeFormat|GUICtrlStatusBar_GetWidth|GUICtrlStatusBar_IsSimple|GUICtrlStatusBar_Resize|GUICtrlStatusBar_SetBkColor|GUICtrlStatusBar_SetIcon|GUICtrlStatusBar_SetMinHeight|GUICtrlStatusBar_SetParts|GUICtrlStatusBar_SetSimple|GUICtrlStatusBar_SetText|GUICtrlStatusBar_SetTipText|GUICtrlStatusBar_SetUnicodeFormat|GUICtrlStatusBar_ShowHide|GUICtrlTab_Create|GUICtrlTab_DeleteAllItems|GUICtrlTab_DeleteItem|GUICtrlTab_DeselectAll|GUICtrlTab_Destroy|GUICtrlTab_FindTab|GUICtrlTab_GetCurFocus|GUICtrlTab_GetCurSel|GUICtrlTab_GetDisplayRect|GUICtrlTab_GetDisplayRectEx|GUICtrlTab_GetExtendedStyle|GUICtrlTab_GetImageList|GUICtrlTab_GetItem|GUICtrlTab_GetItemCount|GUICtrlTab_GetItemImage|GUICtrlTab_GetItemParam|GUICtrlTab_GetItemRect|GUICtrlTab_GetItemRectEx|GUICtrlTab_GetItemState|GUICtrlTab_GetItemText|GUICtrlTab_GetRowCount|GUICtrlTab_GetToolTips|GUICtrlTab_GetUnicodeFormat|GUICtrlTab_HighlightItem|GUICtrlTab_HitTest|GUICtrlTab_InsertItem|GUICtrlTab_RemoveImage|GUICtrlTab_SetCurFocus|GUICtrlTab_SetCurSel|GUICtrlTab_SetExtendedStyle|GUICtrlTab_SetImageList|GUICtrlTab_SetItem|GUICtrlTab_SetItemImage|GUICtrlTab_SetItemParam|GUICtrlTab_SetItemSize|GUICtrlTab_SetItemState|GUICtrlTab_SetItemText|GUICtrlTab_SetMinTabWidth|GUICtrlTab_SetPadding|GUICtrlTab_SetToolTips|GUICtrlTab_SetUnicodeFormat|GUICtrlToolbar_AddBitmap|GUICtrlToolbar_AddButton|GUICtrlToolbar_AddButtonSep|GUICtrlToolbar_AddString|GUICtrlToolbar_ButtonCount|GUICtrlToolbar_CheckButton|GUICtrlToolbar_ClickAccel|GUICtrlToolbar_ClickButton|GUICtrlToolbar_ClickIndex|GUICtrlToolbar_CommandToIndex|GUICtrlToolbar_Create|GUICtrlToolbar_Customize|GUICtrlToolbar_DeleteButton|GUICtrlToolbar_Destroy|GUICtrlToolbar_EnableButton|GUICtrlToolbar_FindToolbar|GUICtrlToolbar_GetAnchorHighlight|GUICtrlToolbar_GetBitmapFlags|GUICtrlToolbar_GetButtonBitmap|GUICtrlToolbar_GetButtonInfo|GUICtrlToolbar_GetButtonInfoEx|GUICtrlToolbar_GetButtonParam|GUICtrlToolbar_GetButtonRect|GUICtrlToolbar_GetButtonRectEx|GUICtrlToolbar_GetButtonSize|GUICtrlToolbar_GetButtonState|GUICtrlToolbar_GetButtonStyle|GUICtrlToolbar_GetButtonText|GUICtrlToolbar_GetColorScheme|GUICtrlToolbar_GetDisabledImageList|GUICtrlToolbar_GetExtendedStyle|GUICtrlToolbar_GetHotImageList|GUICtrlToolbar_GetHotItem|GUICtrlToolbar_GetImageList|GUICtrlToolbar_GetInsertMark|GUICtrlToolbar_GetInsertMarkColor|GUICtrlToolbar_GetMaxSize|GUICtrlToolbar_GetMetrics|GUICtrlToolbar_GetPadding|GUICtrlToolbar_GetRows|GUICtrlToolbar_GetString|GUICtrlToolbar_GetStyle|GUICtrlToolbar_GetStyleAltDrag|GUICtrlToolbar_GetStyleCustomErase|GUICtrlToolbar_GetStyleFlat|GUICtrlToolbar_GetStyleList|GUICtrlToolbar_GetStyleRegisterDrop|GUICtrlToolbar_GetStyleToolTips|GUICtrlToolbar_GetStyleTransparent|GUICtrlToolbar_GetStyleWrapable|GUICtrlToolbar_GetTextRows|GUICtrlToolbar_GetToolTips|GUICtrlToolbar_GetUnicodeFormat|GUICtrlToolbar_HideButton|GUICtrlToolbar_HighlightButton|GUICtrlToolbar_HitTest|GUICtrlToolbar_IndexToCommand|GUICtrlToolbar_InsertButton|GUICtrlToolbar_InsertMarkHitTest|GUICtrlToolbar_IsButtonChecked|GUICtrlToolbar_IsButtonEnabled|GUICtrlToolbar_IsButtonHidden|GUICtrlToolbar_IsButtonHighlighted|GUICtrlToolbar_IsButtonIndeterminate|GUICtrlToolbar_IsButtonPressed|GUICtrlToolbar_LoadBitmap|GUICtrlToolbar_LoadImages|GUICtrlToolbar_MapAccelerator|GUICtrlToolbar_MoveButton|GUICtrlToolbar_PressButton|GUICtrlToolbar_SetAnchorHighlight|GUICtrlToolbar_SetBitmapSize|GUICtrlToolbar_SetButtonBitMap|GUICtrlToolbar_SetButtonInfo|GUICtrlToolbar_SetButtonInfoEx|GUICtrlToolbar_SetButtonParam|GUICtrlToolbar_SetButtonSize|GUICtrlToolbar_SetButtonState|GUICtrlToolbar_SetButtonStyle|GUICtrlToolbar_SetButtonText|GUICtrlToolbar_SetButtonWidth|GUICtrlToolbar_SetCmdID|GUICtrlToolbar_SetColorScheme|GUICtrlToolbar_SetDisabledImageList|GUICtrlToolbar_SetDrawTextFlags|GUICtrlToolbar_SetExtendedStyle|GUICtrlToolbar_SetHotImageList|GUICtrlToolbar_SetHotItem|GUICtrlToolbar_SetImageList|GUICtrlToolbar_SetIndent|GUICtrlToolbar_SetIndeterminate|GUICtrlToolbar_SetInsertMark|GUICtrlToolbar_SetInsertMarkColor|GUICtrlToolbar_SetMaxTextRows|GUICtrlToolbar_SetMetrics|GUICtrlToolbar_SetPadding|GUICtrlToolbar_SetParent|GUICtrlToolbar_SetRows|GUICtrlToolbar_SetStyle|GUICtrlToolbar_SetStyleAltDrag|GUICtrlToolbar_SetStyleCustomErase|GUICtrlToolbar_SetStyleFlat|GUICtrlToolbar_SetStyleList|GUICtrlToolbar_SetStyleRegisterDrop|GUICtrlToolbar_SetStyleToolTips|GUICtrlToolbar_SetStyleTransparent|GUICtrlToolbar_SetStyleWrapable|GUICtrlToolbar_SetToolTips|GUICtrlToolbar_SetUnicodeFormat|GUICtrlToolbar_SetWindowTheme|GUICtrlTreeView_Add|GUICtrlTreeView_AddChild|GUICtrlTreeView_AddChildFirst|GUICtrlTreeView_AddFirst|GUICtrlTreeView_BeginUpdate|GUICtrlTreeView_ClickItem|GUICtrlTreeView_Create|GUICtrlTreeView_CreateDragImage|GUICtrlTreeView_CreateSolidBitMap|GUICtrlTreeView_Delete|GUICtrlTreeView_DeleteAll|GUICtrlTreeView_DeleteChildren|GUICtrlTreeView_Destroy|GUICtrlTreeView_DisplayRect|GUICtrlTreeView_DisplayRectEx|GUICtrlTreeView_EditText|GUICtrlTreeView_EndEdit|GUICtrlTreeView_EndUpdate|GUICtrlTreeView_EnsureVisible|GUICtrlTreeView_Expand|GUICtrlTreeView_ExpandedOnce|GUICtrlTreeView_FindItem|GUICtrlTreeView_FindItemEx|GUICtrlTreeView_GetBkColor|GUICtrlTreeView_GetBold|GUICtrlTreeView_GetChecked|GUICtrlTreeView_GetChildCount|GUICtrlTreeView_GetChildren|GUICtrlTreeView_GetCount|GUICtrlTreeView_GetCut|GUICtrlTreeView_GetDropTarget|GUICtrlTreeView_GetEditControl|GUICtrlTreeView_GetExpanded|GUICtrlTreeView_GetFirstChild|GUICtrlTreeView_GetFirstItem|GUICtrlTreeView_GetFirstVisible|GUICtrlTreeView_GetFocused|GUICtrlTreeView_GetHeight|GUICtrlTreeView_GetImageIndex|GUICtrlTreeView_GetImageListIconHandle|GUICtrlTreeView_GetIndent|GUICtrlTreeView_GetInsertMarkColor|GUICtrlTreeView_GetISearchString|GUICtrlTreeView_GetItemByIndex|GUICtrlTreeView_GetItemHandle|GUICtrlTreeView_GetItemParam|GUICtrlTreeView_GetLastChild|GUICtrlTreeView_GetLineColor|GUICtrlTreeView_GetNext|GUICtrlTreeView_GetNextChild|GUICtrlTreeView_GetNextSibling|GUICtrlTreeView_GetNextVisible|GUICtrlTreeView_GetNormalImageList|GUICtrlTreeView_GetParentHandle|GUICtrlTreeView_GetParentParam|GUICtrlTreeView_GetPrev|GUICtrlTreeView_GetPrevChild|GUICtrlTreeView_GetPrevSibling|GUICtrlTreeView_GetPrevVisible|GUICtrlTreeView_GetScrollTime|GUICtrlTreeView_GetSelected|GUICtrlTreeView_GetSelectedImageIndex|GUICtrlTreeView_GetSelection|GUICtrlTreeView_GetSiblingCount|GUICtrlTreeView_GetState|GUICtrlTreeView_GetStateImageIndex|GUICtrlTreeView_GetStateImageList|GUICtrlTreeView_GetText|GUICtrlTreeView_GetTextColor|GUICtrlTreeView_GetToolTips|GUICtrlTreeView_GetTree|GUICtrlTreeView_GetUnicodeFormat|GUICtrlTreeView_GetVisible|GUICtrlTreeView_GetVisibleCount|GUICtrlTreeView_HitTest|GUICtrlTreeView_HitTestEx|GUICtrlTreeView_HitTestItem|GUICtrlTreeView_Index|GUICtrlTreeView_InsertItem|GUICtrlTreeView_IsFirstItem|GUICtrlTreeView_IsParent|GUICtrlTreeView_Level|GUICtrlTreeView_SelectItem|GUICtrlTreeView_SelectItemByIndex|GUICtrlTreeView_SetBkColor|GUICtrlTreeView_SetBold|GUICtrlTreeView_SetChecked|GUICtrlTreeView_SetCheckedByIndex|GUICtrlTreeView_SetChildren|GUICtrlTreeView_SetCut|GUICtrlTreeView_SetDropTarget|GUICtrlTreeView_SetFocused|GUICtrlTreeView_SetHeight|GUICtrlTreeView_SetIcon|GUICtrlTreeView_SetImageIndex|GUICtrlTreeView_SetIndent|GUICtrlTreeView_SetInsertMark|GUICtrlTreeView_SetInsertMarkColor|GUICtrlTreeView_SetItemHeight|GUICtrlTreeView_SetItemParam|GUICtrlTreeView_SetLineColor|GUICtrlTreeView_SetNormalImageList|GUICtrlTreeView_SetScrollTime|GUICtrlTreeView_SetSelected|GUICtrlTreeView_SetSelectedImageIndex|GUICtrlTreeView_SetState|GUICtrlTreeView_SetStateImageIndex|GUICtrlTreeView_SetStateImageList|GUICtrlTreeView_SetText|GUICtrlTreeView_SetTextColor|GUICtrlTreeView_SetToolTips|GUICtrlTreeView_SetUnicodeFormat|GUICtrlTreeView_Sort|GUIImageList_Add|GUIImageList_AddBitmap|GUIImageList_AddIcon|GUIImageList_AddMasked|GUIImageList_BeginDrag|GUIImageList_Copy|GUIImageList_Create|GUIImageList_Destroy|GUIImageList_DestroyIcon|GUIImageList_DragEnter|GUIImageList_DragLeave|GUIImageList_DragMove|GUIImageList_Draw|GUIImageList_DrawEx|GUIImageList_Duplicate|GUIImageList_EndDrag|GUIImageList_GetBkColor|GUIImageList_GetIcon|GUIImageList_GetIconHeight|GUIImageList_GetIconSize|GUIImageList_GetIconSizeEx|GUIImageList_GetIconWidth|GUIImageList_GetImageCount|GUIImageList_GetImageInfoEx|GUIImageList_Remove|GUIImageList_ReplaceIcon|GUIImageList_SetBkColor|GUIImageList_SetIconSize|GUIImageList_SetImageCount|GUIImageList_Swap|GUIScrollBars_EnableScrollBar|GUIScrollBars_GetScrollBarInfoEx|GUIScrollBars_GetScrollBarRect|GUIScrollBars_GetScrollBarRGState|GUIScrollBars_GetScrollBarXYLineButton|GUIScrollBars_GetScrollBarXYThumbBottom|GUIScrollBars_GetScrollBarXYThumbTop|GUIScrollBars_GetScrollInfo|GUIScrollBars_GetScrollInfoEx|GUIScrollBars_GetScrollInfoMax|GUIScrollBars_GetScrollInfoMin|GUIScrollBars_GetScrollInfoPage|GUIScrollBars_GetScrollInfoPos|GUIScrollBars_GetScrollInfoTrackPos|GUIScrollBars_GetScrollPos|GUIScrollBars_GetScrollRange|GUIScrollBars_Init|GUIScrollBars_ScrollWindow|GUIScrollBars_SetScrollInfo|GUIScrollBars_SetScrollInfoMax|GUIScrollBars_SetScrollInfoMin|GUIScrollBars_SetScrollInfoPage|GUIScrollBars_SetScrollInfoPos|GUIScrollBars_SetScrollRange|GUIScrollBars_ShowScrollBar|GUIToolTip_Activate|GUIToolTip_AddTool|GUIToolTip_AdjustRect|GUIToolTip_BitsToTTF|GUIToolTip_Create|GUIToolTip_DelTool|GUIToolTip_Destroy|GUIToolTip_EnumTools|GUIToolTip_GetBubbleHeight|GUIToolTip_GetBubbleSize|GUIToolTip_GetBubbleWidth|GUIToolTip_GetCurrentTool|GUIToolTip_GetDelayTime|GUIToolTip_GetMargin|GUIToolTip_GetMarginEx|GUIToolTip_GetMaxTipWidth|GUIToolTip_GetText|GUIToolTip_GetTipBkColor|GUIToolTip_GetTipTextColor|GUIToolTip_GetTitleBitMap|GUIToolTip_GetTitleText|GUIToolTip_GetToolCount|GUIToolTip_GetToolInfo|GUIToolTip_HitTest|GUIToolTip_NewToolRect|GUIToolTip_Pop|GUIToolTip_PopUp|GUIToolTip_SetDelayTime|GUIToolTip_SetMargin|GUIToolTip_SetMaxTipWidth|GUIToolTip_SetTipBkColor|GUIToolTip_SetTipTextColor|GUIToolTip_SetTitle|GUIToolTip_SetToolInfo|GUIToolTip_SetWindowTheme|GUIToolTip_ToolExists|GUIToolTip_ToolToArray|GUIToolTip_TrackActivate|GUIToolTip_TrackPosition|GUIToolTip_TTFToBits|GUIToolTip_Update|GUIToolTip_UpdateTipText|HexToString|IE_Example|IE_Introduction|IE_VersionInfo|IEAction|IEAttach|IEBodyReadHTML|IEBodyReadText|IEBodyWriteHTML|IECreate|IECreateEmbedded|IEDocGetObj|IEDocInsertHTML|IEDocInsertText|IEDocReadHTML|IEDocWriteHTML|IEErrorHandlerDeRegister|IEErrorHandlerRegister|IEErrorNotify|IEFormElementCheckBoxSelect|IEFormElementGetCollection|IEFormElementGetObjByName|IEFormElementGetValue|IEFormElementOptionSelect|IEFormElementRadioSelect|IEFormElementSetValue|IEFormGetCollection|IEFormGetObjByName|IEFormImageClick|IEFormReset|IEFormSubmit|IEFrameGetCollection|IEFrameGetObjByName|IEGetObjById|IEGetObjByName|IEHeadInsertEventScript|IEImgClick|IEImgGetCollection|IEIsFrameSet|IELinkClickByIndex|IELinkClickByText|IELinkGetCollection|IELoadWait|IELoadWaitTimeout|IENavigate|IEPropertyGet|IEPropertySet|IEQuit|IETableGetCollection|IETableWriteToArray|IETagNameAllGetCollection|IETagNameGetCollection|Iif|INetExplorerCapable|INetGetSource|INetMail|INetSmtpMail|IsPressed|MathCheckDiv|Max|MemGlobalAlloc|MemGlobalFree|MemGlobalLock|MemGlobalSize|MemGlobalUnlock|MemMoveMemory|MemMsgBox|MemShowError|MemVirtualAlloc|MemVirtualAllocEx|MemVirtualFree|MemVirtualFreeEx|Min|MouseTrap|NamedPipes_CallNamedPipe|NamedPipes_ConnectNamedPipe|NamedPipes_CreateNamedPipe|NamedPipes_CreatePipe|NamedPipes_DisconnectNamedPipe|NamedPipes_GetNamedPipeHandleState|NamedPipes_GetNamedPipeInfo|NamedPipes_PeekNamedPipe|NamedPipes_SetNamedPipeHandleState|NamedPipes_TransactNamedPipe|NamedPipes_WaitNamedPipe|Net_Share_ConnectionEnum|Net_Share_FileClose|Net_Share_FileEnum|Net_Share_FileGetInfo|Net_Share_PermStr|Net_Share_ResourceStr|Net_Share_SessionDel|Net_Share_SessionEnum|Net_Share_SessionGetInfo|Net_Share_ShareAdd|Net_Share_ShareCheck|Net_Share_ShareDel|Net_Share_ShareEnum|Net_Share_ShareGetInfo|Net_Share_ShareSetInfo|Net_Share_StatisticsGetSvr|Net_Share_StatisticsGetWrk|Now|NowCalc|NowCalcDate|NowDate|NowTime|PathFull|PathMake|PathSplit|ProcessGetName|ProcessGetPriority|Radian|ReplaceStringInFile|RunDOS|ScreenCapture_Capture|ScreenCapture_CaptureWnd|ScreenCapture_SaveImage|ScreenCapture_SetBMPFormat|ScreenCapture_SetJPGQuality|ScreenCapture_SetTIFColorDepth|ScreenCapture_SetTIFCompression|Security__AdjustTokenPrivileges|Security__GetAccountSid|Security__GetLengthSid|Security__GetTokenInformation|Security__ImpersonateSelf|Security__IsValidSid|Security__LookupAccountName|Security__LookupAccountSid|Security__LookupPrivilegeValue|Security__OpenProcessToken|Security__OpenThreadToken|Security__OpenThreadTokenEx|Security__SetPrivilege|Security__SidToStringSid|Security__SidTypeStr|Security__StringSidToSid|SendMessage|SendMessageA|SetDate|SetTime|Singleton|SoundClose|SoundLength|SoundOpen|SoundPause|SoundPlay|SoundPos|SoundResume|SoundSeek|SoundStatus|SoundStop|SQLite_Changes|SQLite_Close|SQLite_Display2DResult|SQLite_Encode|SQLite_ErrCode|SQLite_ErrMsg|SQLite_Escape|SQLite_Exec|SQLite_FetchData|SQLite_FetchNames|SQLite_GetTable|SQLite_GetTable2d|SQLite_LastInsertRowID|SQLite_LibVersion|SQLite_Open|SQLite_Query|SQLite_QueryFinalize|SQLite_QueryReset|SQLite_QuerySingleRow|SQLite_SaveMode|SQLite_SetTimeout|SQLite_Shutdown|SQLite_SQLiteExe|SQLite_Startup|SQLite_TotalChanges|StringAddComma|StringBetween|StringEncrypt|StringInsert|StringProper|StringRepeat|StringReverse|StringSplit|StringToHex|TCPIpToName|TempFile|TicksToTime|Timer_Diff|Timer_GetTimerID|Timer_Init|Timer_KillAllTimers|Timer_KillTimer|Timer_SetTimer|TimeToTicks|VersionCompare|viClose|viExecCommand|viFindGpib|viGpibBusReset|viGTL|viOpen|viSetAttribute|viSetTimeout|WeekNumberISO|WinAPI_AttachConsole|WinAPI_AttachThreadInput|WinAPI_Beep|WinAPI_BitBlt|WinAPI_CallNextHookEx|WinAPI_Check|WinAPI_ClientToScreen|WinAPI_CloseHandle|WinAPI_CommDlgExtendedError|WinAPI_CopyIcon|WinAPI_CreateBitmap|WinAPI_CreateCompatibleBitmap|WinAPI_CreateCompatibleDC|WinAPI_CreateEvent|WinAPI_CreateFile|WinAPI_CreateFont|WinAPI_CreateFontIndirect|WinAPI_CreateProcess|WinAPI_CreateSolidBitmap|WinAPI_CreateSolidBrush|WinAPI_CreateWindowEx|WinAPI_DefWindowProc|WinAPI_DeleteDC|WinAPI_DeleteObject|WinAPI_DestroyIcon|WinAPI_DestroyWindow|WinAPI_DrawEdge|WinAPI_DrawFrameControl|WinAPI_DrawIcon|WinAPI_DrawIconEx|WinAPI_DrawText|WinAPI_EnableWindow|WinAPI_EnumDisplayDevices|WinAPI_EnumWindows|WinAPI_EnumWindowsPopup|WinAPI_EnumWindowsTop|WinAPI_ExpandEnvironmentStrings|WinAPI_ExtractIconEx|WinAPI_FatalAppExit|WinAPI_FillRect|WinAPI_FindExecutable|WinAPI_FindWindow|WinAPI_FlashWindow|WinAPI_FlashWindowEx|WinAPI_FloatToInt|WinAPI_FlushFileBuffers|WinAPI_FormatMessage|WinAPI_FrameRect|WinAPI_FreeLibrary|WinAPI_GetAncestor|WinAPI_GetAsyncKeyState|WinAPI_GetClassName|WinAPI_GetClientHeight|WinAPI_GetClientRect|WinAPI_GetClientWidth|WinAPI_GetCurrentProcess|WinAPI_GetCurrentProcessID|WinAPI_GetCurrentThread|WinAPI_GetCurrentThreadId|WinAPI_GetCursorInfo|WinAPI_GetDC|WinAPI_GetDesktopWindow|WinAPI_GetDeviceCaps|WinAPI_GetDIBits|WinAPI_GetDlgCtrlID|WinAPI_GetDlgItem|WinAPI_GetFileSizeEx|WinAPI_GetFocus|WinAPI_GetForegroundWindow|WinAPI_GetIconInfo|WinAPI_GetLastError|WinAPI_GetLastErrorMessage|WinAPI_GetModuleHandle|WinAPI_GetMousePos|WinAPI_GetMousePosX|WinAPI_GetMousePosY|WinAPI_GetObject|WinAPI_GetOpenFileName|WinAPI_GetOverlappedResult|WinAPI_GetParent|WinAPI_GetProcessAffinityMask|WinAPI_GetSaveFileName|WinAPI_GetStdHandle|WinAPI_GetStockObject|WinAPI_GetSysColor|WinAPI_GetSysColorBrush|WinAPI_GetSystemMetrics|WinAPI_GetTextExtentPoint32|WinAPI_GetWindow|WinAPI_GetWindowDC|WinAPI_GetWindowHeight|WinAPI_GetWindowLong|WinAPI_GetWindowRect|WinAPI_GetWindowText|WinAPI_GetWindowThreadProcessId|WinAPI_GetWindowWidth|WinAPI_GetXYFromPoint|WinAPI_GlobalMemStatus|WinAPI_GUIDFromString|WinAPI_GUIDFromStringEx|WinAPI_HiWord|WinAPI_InProcess|WinAPI_IntToFloat|WinAPI_InvalidateRect|WinAPI_IsClassName|WinAPI_IsWindow|WinAPI_IsWindowVisible|WinAPI_LoadBitmap|WinAPI_LoadImage|WinAPI_LoadLibrary|WinAPI_LoadLibraryEx|WinAPI_LoadShell32Icon|WinAPI_LoadString|WinAPI_LocalFree|WinAPI_LoWord|WinAPI_MakeDWord|WinAPI_MAKELANGID|WinAPI_MAKELCID|WinAPI_MakeLong|WinAPI_MessageBeep|WinAPI_Mouse_Event|WinAPI_MoveWindow|WinAPI_MsgBox|WinAPI_MulDiv|WinAPI_MultiByteToWideChar|WinAPI_MultiByteToWideCharEx|WinAPI_OpenProcess|WinAPI_PointFromRect|WinAPI_PostMessage|WinAPI_PrimaryLangId|WinAPI_PtInRect|WinAPI_ReadFile|WinAPI_ReadProcessMemory|WinAPI_RectIsEmpty|WinAPI_RedrawWindow|WinAPI_RegisterWindowMessage|WinAPI_ReleaseCapture|WinAPI_ReleaseDC|WinAPI_ScreenToClient|WinAPI_SelectObject|WinAPI_SetBkColor|WinAPI_SetCapture|WinAPI_SetCursor|WinAPI_SetDefaultPrinter|WinAPI_SetDIBits|WinAPI_SetEvent|WinAPI_SetFocus|WinAPI_SetFont|WinAPI_SetHandleInformation|WinAPI_SetLastError|WinAPI_SetParent|WinAPI_SetProcessAffinityMask|WinAPI_SetSysColors|WinAPI_SetTextColor|WinAPI_SetWindowLong|WinAPI_SetWindowPos|WinAPI_SetWindowsHookEx|WinAPI_SetWindowText|WinAPI_ShowCursor|WinAPI_ShowError|WinAPI_ShowMsg|WinAPI_ShowWindow|WinAPI_StringFromGUID|WinAPI_SubLangId|WinAPI_SystemParametersInfo|WinAPI_TwipsPerPixelX|WinAPI_TwipsPerPixelY|WinAPI_UnhookWindowsHookEx|WinAPI_UpdateLayeredWindow|WinAPI_UpdateWindow|WinAPI_ValidateClassName|WinAPI_WaitForInputIdle|WinAPI_WaitForMultipleObjects|WinAPI_WaitForSingleObject|WinAPI_WideCharToMultiByte|WinAPI_WindowFromPoint|WinAPI_WriteConsole|WinAPI_WriteFile|WinAPI_WriteProcessMemory|WinNet_AddConnection|WinNet_AddConnection2|WinNet_AddConnection3|WinNet_CancelConnection|WinNet_CancelConnection2|WinNet_CloseEnum|WinNet_ConnectionDialog|WinNet_ConnectionDialog1|WinNet_DisconnectDialog|WinNet_DisconnectDialog1|WinNet_EnumResource|WinNet_GetConnection|WinNet_GetConnectionPerformance|WinNet_GetLastError|WinNet_GetNetworkInformation|WinNet_GetProviderName|WinNet_GetResourceInformation|WinNet_GetResourceParent|WinNet_GetUniversalName|WinNet_GetUser|WinNet_OpenEnum|WinNet_RestoreConnection|WinNet_UseConnection|Word_VersionInfo|WordAttach|WordCreate|WordDocAdd|WordDocAddLink|WordDocAddPicture|WordDocClose|WordDocFindReplace|WordDocGetCollection|WordDocLinkGetCollection|WordDocOpen|WordDocPrint|WordDocPropertyGet|WordDocPropertySet|WordDocSave|WordDocSaveAs|WordErrorHandlerDeRegister|WordErrorHandlerRegister|WordErrorNotify|WordMacroRun|WordPropertyGet|WordPropertySet|WordQuit|ce|comments-end|comments-start|cs|include|include-once|NoTrayIcon|RequireAdmin|AutoIt3Wrapper_Au3Check_Parameters|AutoIt3Wrapper_Au3Check_Stop_OnWarning|AutoIt3Wrapper_Change2CUI|AutoIt3Wrapper_Compression|AutoIt3Wrapper_cvsWrapper_Parameters|AutoIt3Wrapper_Icon|AutoIt3Wrapper_Outfile|AutoIt3Wrapper_Outfile_Type|AutoIt3Wrapper_Plugin_Funcs|AutoIt3Wrapper_Res_Comment|AutoIt3Wrapper_Res_Description|AutoIt3Wrapper_Res_Field|AutoIt3Wrapper_Res_File_Add|AutoIt3Wrapper_Res_Fileversion|AutoIt3Wrapper_Res_FileVersion_AutoIncrement|AutoIt3Wrapper_Res_Icon_Add|AutoIt3Wrapper_Res_Language|AutoIt3Wrapper_Res_LegalCopyright|AutoIt3Wrapper_res_requestedExecutionLevel|AutoIt3Wrapper_Res_SaveSource|AutoIt3Wrapper_Run_After|AutoIt3Wrapper_Run_Au3check|AutoIt3Wrapper_Run_Before|AutoIt3Wrapper_Run_cvsWrapper|AutoIt3Wrapper_Run_Debug_Mode|AutoIt3Wrapper_Run_Obfuscator|AutoIt3Wrapper_Run_Tidy|AutoIt3Wrapper_Tidy_Stop_OnError|AutoIt3Wrapper_UseAnsi|AutoIt3Wrapper_UseUpx|AutoIt3Wrapper_UseX64|AutoIt3Wrapper_Version|EndRegion|forceref|Obfuscator_Ignore_Funcs|Obfuscator_Ignore_Variables|Obfuscator_Parameters|Region|Tidy_Parameters",
        t = "AppDataCommonDir|AppDataDir|AutoItExe|AutoItPID|AutoItUnicode|AutoItVersion|AutoItX64|COM_EventObj|CommonFilesDir|Compiled|ComputerName|ComSpec|CR|CRLF|DesktopCommonDir|DesktopDepth|DesktopDir|DesktopHeight|DesktopRefresh|DesktopWidth|DocumentsCommonDir|error|exitCode|exitMethod|extended|FavoritesCommonDir|FavoritesDir|GUI_CtrlHandle|GUI_CtrlId|GUI_DragFile|GUI_DragId|GUI_DropId|GUI_WinHandle|HomeDrive|HomePath|HomeShare|HotKeyPressed|HOUR|InetGetActive|InetGetBytesRead|IPAddress1|IPAddress2|IPAddress3|IPAddress4|KBLayout|LF|LogonDNSDomain|LogonDomain|LogonServer|MDAY|MIN|MON|MyDocumentsDir|NumParams|OSBuild|OSLang|OSServicePack|OSTYPE|OSVersion|ProcessorArch|ProgramFilesDir|ProgramsCommonDir|ProgramsDir|ScriptDir|ScriptFullPath|ScriptLineNumber|ScriptName|SEC|StartMenuCommonDir|StartMenuDir|StartupCommonDir|StartupDir|SW_DISABLE|SW_ENABLE|SW_HIDE|SW_LOCK|SW_MAXIMIZE|SW_MINIMIZE|SW_RESTORE|SW_SHOW|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWMINNOACTIVE|SW_SHOWNA|SW_SHOWNOACTIVATE|SW_SHOWNORMAL|SW_UNLOCK|SystemDir|TAB|TempDir|TRAY_ID|TrayIconFlashing|TrayIconVisible|UserName|UserProfileDir|WDAY|WindowsDir|WorkingDir|YDAY|YEAR";
    this.$rules = {
      start: [{
        token: "comment.line.ahk",
        regex: "(?:^| );.*$"
      }, {
        token: "comment.block.ahk",
        regex: "/\\*",
        push: [{
          token: "comment.block.ahk",
          regex: "\\*/",
          next: "pop"
        }, {
          defaultToken: "comment.block.ahk"
        }]
      }, {
        token: "doc.comment.ahk",
        regex: "#cs",
        push: [{
          token: "doc.comment.ahk",
          regex: "#ce",
          next: "pop"
        }, {
          defaultToken: "doc.comment.ahk"
        }]
      }, {
        token: "keyword.command.ahk",
        regex: "(?:\\b|^)(?:allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|include|includeagain|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|noenv|notrayicon|persistent|singleinstance|usehook|winactivateforce|autotrim|blockinput|click|clipwait|continue|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|critical|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|endrepeat|envadd|envdiv|envget|envmult|envset|envsub|envupdate|exit|exitapp|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hideautoitwin|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|repeat|run|runas|runwait|send|sendevent|sendinput|sendmode|sendplay|sendmessage|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|while|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\b",
        caseInsensitive: !0
      }, {
        token: "keyword.control.ahk",
        regex: "(?:\\b|^)(?:if|else|return|loop|break|for|while|global|local|byref)\\b",
        caseInsensitive: !0
      }, {
        token: "support.function.ahk",
        regex: "(?:\\b|^)(?:abs|acos|asc|asin|atan|ceil|chr|cos|dllcall|exp|fileexist|floor|getkeystate|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)\\b",
        caseInsensitive: !0
      }, {
        token: "variable.predefined.ahk",
        regex: "(?:\\b|^)(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\\b",
        caseInsensitive: !0
      }, {
        token: "support.constant.ahk",
        regex: "(?:\\b|^)(?:shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\\b",
        caseInsensitive: !0
      }, {
        token: "variable.parameter",
        regex: "(?:\\b|^)(?:pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|contains|in|is|integer|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|not|or|and|alwaysontop|topmost|top|bottom|transparent|transcolor|redraw|region|id|idlast|processname|minmax|controllist|count|list|capacity|statuscd|eject|lock|unlock|label|filesystem|label|setlabel|serial|type|status|static|seconds|minutes|hours|days|read|parse|logoff|close|error|single|tray|add|rename|check|uncheck|togglecheck|enable|disable|toggleenable|default|nodefault|standard|nostandard|color|delete|deleteall|icon|noicon|tip|click|show|mainwindow|nomainwindow|useerrorlevel|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|theme|caption|delimiter|minimizebox|maximizebox|sysmenu|toolwindow|flash|style|exstyle|check3|checked|checkedgray|readonly|password|hidden|left|right|center|notab|section|move|focus|hide|choose|choosestring|text|pos|enabled|disabled|visible|lastfound|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian)\\b",
        caseInsensitive: !0
      }, {
        keywordMap: {
          "constant.language": e
        },
        regex: "\\w+\\b"
      }, {
        keywordMap: {
          "variable.function": t
        },
        regex: "@\\w+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "keyword.operator.ahk",
        regex: "=|==|<>|:=|<|>|\\*|\\/|\\+|:|\\?|\\-"
      }, {
        token: "punctuation.ahk",
        regex: /#|`|::|,|%/
      }, {
        token: "paren",
        regex: /[{}()]/
      }, {
        token: ["punctuation.quote.double", "string.quoted.ahk", "punctuation.quote.double"],
        regex: '(")((?:[^"]|"")*)(")'
      }, {
        token: ["label.ahk", "punctuation.definition.label.ahk"],
        regex: "^([^: ]+)(:)(?!:)"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    name: "AutoHotKey",
    scopeName: "source.ahk",
    fileTypes: ["ahk"],
    foldingStartMarker: "^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))",
    foldingStopMarker: "^\\s*\\*/|^\\s*\\}"
  }, r.inherits(s, i), t.AutoHotKeyHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/autohotkey", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/autohotkey_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./autohotkey_highlight_rules").AutoHotKeyHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = ";", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/autohotkey";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/autohotkey"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-batchfile.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-batchfile.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/batchfile_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "keyword.command.dosbatch",
        regex: "\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\b",
        caseInsensitive: !0
      }, {
        token: "keyword.control.statement.dosbatch",
        regex: "\\b(?:goto|call|exit)\\b",
        caseInsensitive: !0
      }, {
        token: "keyword.control.conditional.if.dosbatch",
        regex: "\\bif\\s+not\\s+(?:exist|defined|errorlevel|cmdextversion)\\b",
        caseInsensitive: !0
      }, {
        token: "keyword.control.conditional.dosbatch",
        regex: "\\b(?:if|else)\\b",
        caseInsensitive: !0
      }, {
        token: "keyword.control.repeat.dosbatch",
        regex: "\\bfor\\b",
        caseInsensitive: !0
      }, {
        token: "keyword.operator.dosbatch",
        regex: "\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\b"
      }, {
        token: ["doc.comment", "comment"],
        regex: "(?:^|\\b)(rem)($|\\s.*$)",
        caseInsensitive: !0
      }, {
        token: "comment.line.colons.dosbatch",
        regex: "::.*$"
      }, {
        include: "variable"
      }, {
        token: "punctuation.definition.string.begin.shell",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.shell",
          regex: '"',
          next: "pop"
        }, {
          include: "variable"
        }, {
          defaultToken: "string.quoted.double.dosbatch"
        }]
      }, {
        token: "keyword.operator.pipe.dosbatch",
        regex: "[|]"
      }, {
        token: "keyword.operator.redirect.shell",
        regex: "&>|\\d*>&\\d*|\\d*(?:>>|>|<)|\\d*<&|\\d*<>"
      }],
      variable: [{
        token: "constant.numeric",
        regex: "%%\\w+|%[*\\d]|%\\w+%"
      }, {
        token: "constant.numeric",
        regex: "%~\\d+"
      }, {
        token: ["markup.list", "constant.other", "markup.list"],
        regex: "(%)(\\w+)(%?)"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    name: "Batch File",
    scopeName: "source.dosbatch",
    fileTypes: ["bat"]
  }, r.inherits(s, i), t.BatchFileHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/batchfile", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/batchfile_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./batchfile_highlight_rules").BatchFileHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "::", this.blockComment = "", this.$id = "ace/mode/batchfile";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/batchfile"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-c9search.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-c9search.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/c9search_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function o(e, t) {
    try {
      return new RegExp(e, t);
    } catch (n) {}
  }

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      u = function u() {
    this.$rules = {
      start: [{
        tokenNames: ["c9searchresults.constant.numeric", "c9searchresults.text", "c9searchresults.text", "c9searchresults.keyword"],
        regex: /(^\s+[0-9]+)(:)(\d*\s?)([^\r\n]+)/,
        onMatch: function onMatch(e, t, n) {
          var r = this.splitRegex.exec(e),
              i = this.tokenNames,
              s = [{
            type: i[0],
            value: r[1]
          }, {
            type: i[1],
            value: r[2]
          }];
          r[3] && (r[3] == " " ? s[1] = {
            type: i[1],
            value: r[2] + " "
          } : s.push({
            type: i[1],
            value: r[3]
          }));
          var o = n[1],
              u = r[4],
              a,
              f = 0;

          if (o && o.exec) {
            o.lastIndex = 0;

            while (a = o.exec(u)) {
              var l = u.substring(f, a.index);
              f = o.lastIndex, l && s.push({
                type: i[2],
                value: l
              });
              if (a[0]) s.push({
                type: i[3],
                value: a[0]
              });else if (!l) break;
            }
          }

          return f < u.length && s.push({
            type: i[2],
            value: u.substr(f)
          }), s;
        }
      }, {
        regex: "^Searching for [^\\r\\n]*$",
        onMatch: function onMatch(e, t, n) {
          var r = e.split("\x01");
          if (r.length < 3) return "text";
          var s,
              u,
              a = 0,
              f = [{
            value: r[a++] + "'",
            type: "text"
          }, {
            value: u = r[a++],
            type: "text"
          }, {
            value: "'" + r[a++],
            type: "text"
          }];
          r[2] !== " in" && f.push({
            value: "'" + r[a++] + "'",
            type: "text"
          }, {
            value: r[a++],
            type: "text"
          }), f.push({
            value: " " + r[a++] + " ",
            type: "text"
          }), r[a + 1] ? (s = r[a + 1], f.push({
            value: "(" + r[a + 1] + ")",
            type: "text"
          }), a += 1) : a -= 1;

          while (a++ < r.length) {
            r[a] && f.push({
              value: r[a],
              type: "text"
            });
          }

          u && (/regex/.test(s) || (u = i.escapeRegExp(u)), /whole/.test(s) && (u = "\\b" + u + "\\b"));
          var l = u && o("(" + u + ")", / sensitive/.test(s) ? "g" : "ig");
          return l && (n[0] = t, n[1] = l), f;
        }
      }, {
        regex: "^(?=Found \\d+ matches)",
        token: "text",
        next: "numbers"
      }, {
        token: "string",
        regex: "^\\S:?[^:]+",
        next: "numbers"
      }],
      numbers: [{
        regex: "\\d+",
        token: "constant.numeric"
      }, {
        regex: "$",
        token: "text",
        next: "start"
      }]
    }, this.normalizeRules();
  };

  r.inherits(u, s), t.C9SearchHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/c9search", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function () {};

  r.inherits(o, s), function () {
    this.foldingStartMarker = /^(\S.*:|Searching for.*)$/, this.foldingStopMarker = /^(\s+|Found.*)$/, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.doc.getAllLines(n),
          s = r[n],
          o = /^(Found.*|Searching for.*)$/,
          u = /^(\S.*:|\s*)$/,
          a = o.test(s) ? o : u,
          f = n,
          l = n;

      if (this.foldingStartMarker.test(s)) {
        for (var c = n + 1, h = e.getLength(); c < h; c++) {
          if (a.test(r[c])) break;
        }

        l = c;
      } else if (this.foldingStopMarker.test(s)) {
        for (var c = n - 1; c >= 0; c--) {
          s = r[c];
          if (a.test(s)) break;
        }

        f = c;
      }

      if (f != l) {
        var p = s.length;
        return a === o && (p = s.search(/\(Found[^)]+\)$|$/)), new i(f, p, l, 0);
      }
    };
  }.call(o.prototype);
}), ace.define("ace/mode/c9search", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/c9search_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/folding/c9search"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./c9search_highlight_rules").C9SearchHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./folding/c9search").FoldMode,
      a = function a() {
    this.HighlightRules = s, this.$outdent = new o(), this.foldingRules = new u();
  };

  r.inherits(a, i), function () {
    this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t);
      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/c9search";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/c9search"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-c_cpp.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-c_cpp.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/c_cpp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",
      u = function u() {
    var e = "break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",
        t = "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",
        n = "const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",
        r = "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",
        s = "NULL|true|false|TRUE|FALSE|nullptr",
        u = this.$keywords = this.createKeywordMapper({
      "keyword.control": e,
      "storage.type": t,
      "storage.modifier": n,
      "keyword.operator": r,
      "variable.language": "this",
      "constant.language": s
    }, "identifier"),
        a = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*\\b",
        f = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,
        l = "%" + /(\d+\$)?/.source + /[#0\- +']*/.source + /[,;:_]?/.source + /((-?\d+)|\*(-?\d+\$)?)?/.source + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;
    this.$rules = {
      start: [{
        token: "comment",
        regex: "//$",
        next: "start"
      }, {
        token: "comment",
        regex: "//",
        next: "singleLineComment"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: "'(?:" + f + "|.)?'"
      }, {
        token: "string.start",
        regex: '"',
        stateName: "qqstring",
        next: [{
          token: "string",
          regex: /\\\s*$/,
          next: "qqstring"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          token: "constant.language.escape",
          regex: l
        }, {
          token: "string.end",
          regex: '"|$',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: 'R"\\(',
        stateName: "rawString",
        next: [{
          token: "string.end",
          regex: '\\)"',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "keyword",
        regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b",
        next: "directive"
      }, {
        token: "keyword",
        regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"
      }, {
        token: "support.function.C99.c",
        regex: o
      }, {
        token: u,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      singleLineComment: [{
        token: "comment",
        regex: /\\$/,
        next: "singleLineComment"
      }, {
        token: "comment",
        regex: /$/,
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      directive: [{
        token: "constant.other.multiline",
        regex: /\\/
      }, {
        token: "constant.other.multiline",
        regex: /.*\\/
      }, {
        token: "constant.other",
        regex: "\\s*<.+?>",
        next: "start"
      }, {
        token: "constant.other",
        regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',
        next: "start"
      }, {
        token: "constant.other",
        regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",
        next: "start"
      }, {
        token: "constant.other",
        regex: /[^\\\/]+/,
        next: "start"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(u, s), t.c_cppHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/c_cpp", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/c_cpp_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./c_cpp_highlight_rules").c_cppHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[]\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/c_cpp", this.snippetFileId = "ace/snippets/c_cpp";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/c_cpp"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-cirru.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-cirru.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/cirru_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "constant.numeric",
        regex: /[\d\.]+/
      }, {
        token: "comment.line.double-dash",
        regex: /--/,
        next: "comment"
      }, {
        token: "storage.modifier",
        regex: /\(/
      }, {
        token: "storage.modifier",
        regex: /,/,
        next: "line"
      }, {
        token: "support.function",
        regex: /[^\(\)"\s{}\[\]]+/,
        next: "line"
      }, {
        token: "string.quoted.double",
        regex: /"/,
        next: "string"
      }, {
        token: "storage.modifier",
        regex: /\)/
      }],
      comment: [{
        token: "comment.line.double-dash",
        regex: / +[^\n]+/,
        next: "start"
      }],
      string: [{
        token: "string.quoted.double",
        regex: /"/,
        next: "line"
      }, {
        token: "constant.character.escape",
        regex: /\\/,
        next: "escape"
      }, {
        token: "string.quoted.double",
        regex: /[^\\"]+/
      }],
      escape: [{
        token: "constant.character.escape",
        regex: /./,
        next: "string"
      }],
      line: [{
        token: "constant.numeric",
        regex: /[\d\.]+/
      }, {
        token: "markup.raw",
        regex: /^\s*/,
        next: "start"
      }, {
        token: "storage.modifier",
        regex: /\$/,
        next: "start"
      }, {
        token: "variable.parameter",
        regex: /[^\(\)"\s{}\[\]]+/
      }, {
        token: "storage.modifier",
        regex: /\(/,
        next: "start"
      }, {
        token: "storage.modifier",
        regex: /\)/
      }, {
        token: "markup.raw",
        regex: /^ */,
        next: "start"
      }, {
        token: "string.quoted.double",
        regex: /"/,
        next: "string"
      }]
    };
  };

  r.inherits(s, i), t.CirruHighlightRules = s;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/cirru", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/cirru_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./cirru_highlight_rules").CirruHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "--", this.$id = "ace/mode/cirru";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/cirru"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-clojure.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-clojure.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/clojure_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "* *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *e *err* *file* *flush-on-newline* *in* *macro-meta* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *use-context-classloader* *warn-on-reflection* + - -> ->> .. / < <= = == > &gt; >= &gt;= accessor aclone add-classpath add-watch agent agent-errors aget alength alias all-ns alter alter-meta! alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* butlast byte byte-array bytes cast char char-array char-escape-string char-name-string char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement concat cond condp conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec decimal? declare definline defmacro defmethod defmulti defn defn- defonce defstruct delay delay? deliver deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? doall doc dorun doseq dosync dotimes doto double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq eval even? every? false? ffirst file-seq filter find find-doc find-ns find-var first float float-array float? floats flush fn fn? fnext for force format future future-call future-cancel future-cancelled? future-done? future? gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator hash hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc init-proxy instance? int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array make-hierarchy map map? mapcat max max-key memfn memoize merge merge-with meta method-sig methods min min-key mod name namespace neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext num number? odd? or parents partial partition pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers primitives-classnames print print-ctor print-doc print-dup print-method print-namespace-doc print-simple print-special-doc print-str printf println println-str prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot rand rand-int range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string reduce ref ref-history-count ref-max-history ref-min-history ref-set refer refer-clojure release-pending-sends rem remove remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest resultset-seq reverse reversible? rseq rsubseq second select-keys send send-off seq seq? seque sequence sequential? set set-validator! set? short short-array shorts shutdown-agents slurp some sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-form-anchor special-symbol? split-at split-with str stream? string? struct struct-map subs subseq subvec supers swap! symbol symbol? sync syntax-symbol-anchor take take-last take-nth take-while test the-ns time to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-dec unchecked-divide unchecked-inc unchecked-multiply unchecked-negate unchecked-remainder unchecked-subtract underive unquote unquote-splicing update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector? when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context with-local-vars with-meta with-open with-out-str with-precision xml-seq zero? zipmap",
        t = "throw try var def do fn if let loop monitor-enter monitor-exit new quote recur set!",
        n = "true false nil",
        r = this.createKeywordMapper({
      keyword: t,
      "constant.language": n,
      "support.function": e
    }, "identifier", !1, " ");
    this.$rules = {
      start: [{
        token: "comment",
        regex: ";.*$"
      }, {
        token: "keyword",
        regex: "[\\(|\\)]"
      }, {
        token: "keyword",
        regex: "[\\'\\(]"
      }, {
        token: "keyword",
        regex: "[\\[|\\]]"
      }, {
        token: "keyword",
        regex: "[\\{|\\}|\\#\\{|\\#\\}]"
      }, {
        token: "keyword",
        regex: "[\\&]"
      }, {
        token: "keyword",
        regex: "[\\#\\^\\{]"
      }, {
        token: "keyword",
        regex: "[\\%]"
      }, {
        token: "keyword",
        regex: "[@]"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language",
        regex: "[!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+||=|!=|<=|>=|<>|<|>|!|&&]"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b"
      }, {
        token: "string",
        regex: '"',
        next: "string"
      }, {
        token: "constant",
        regex: /:[^()\[\]{}'"\^%`,;\s]+/
      }, {
        token: "string.regexp",
        regex: '/#"(?:\\.|(?:\\")|[^""\n])*"/g'
      }],
      string: [{
        token: "constant.language.escape",
        regex: "\\\\.|\\\\$"
      }, {
        token: "string",
        regex: '[^"\\\\]+'
      }, {
        token: "string",
        regex: '"',
        next: "start"
      }]
    };
  };

  r.inherits(s, i), t.ClojureHighlightRules = s;
}), ace.define("ace/mode/matching_parens_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\)/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\))/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      var t = e.match(/^(\s+)/);
      return t ? t[1] : "";
    };
  }).call(i.prototype), t.MatchingParensOutdent = i;
}), ace.define("ace/mode/clojure", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/clojure_highlight_rules", "ace/mode/matching_parens_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./clojure_highlight_rules").ClojureHighlightRules,
      o = e("./matching_parens_outdent").MatchingParensOutdent,
      u = function u() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = ";", this.minorIndentFunctions = ["defn", "defn-", "defmacro", "def", "deftest", "testing"], this.$toIndent = function (e) {
      return e.split("").map(function (e) {
        return /\s/.exec(e) ? e : " ";
      }).join("");
    }, this.$calculateIndent = function (e, t) {
      var n = this.$getIndent(e),
          r = 0,
          i,
          s;

      for (var o = e.length - 1; o >= 0; o--) {
        s = e[o], s === "(" ? (r--, i = !0) : s === "(" || s === "[" || s === "{" ? (r--, i = !1) : (s === ")" || s === "]" || s === "}") && r++;
        if (r < 0) break;
      }

      if (!(r < 0 && i)) return r < 0 && !i ? this.$toIndent(e.substring(0, o + 1)) : r > 0 ? (n = n.substring(0, n.length - t.length), n) : n;
      o += 1;
      var u = o,
          a = "";

      for (;;) {
        s = e[o];
        if (s === " " || s === "	") return this.minorIndentFunctions.indexOf(a) !== -1 ? this.$toIndent(e.substring(0, u - 1) + t) : this.$toIndent(e.substring(0, o + 1));
        if (s === undefined) return this.$toIndent(e.substring(0, u - 1) + t);
        a += e[o], o++;
      }
    }, this.getNextLineIndent = function (e, t, n) {
      return this.$calculateIndent(t, n);
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/clojure", this.snippetFileId = "ace/snippets/clojure";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/clojure"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-cobol.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-cobol.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/cobol_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT",
        t = "true|false|null",
        n = "count|min|max|avg|sum|rank|now|coalesce|main",
        r = this.createKeywordMapper({
      "support.function": n,
      keyword: e,
      "constant.language": t
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\*.*$"
      }, {
        token: "string",
        regex: '".*?"'
      }, {
        token: "string",
        regex: "'.*?'"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "paren.lparen",
        regex: "[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\)]"
      }, {
        token: "text",
        regex: "\\s+"
      }]
    };
  };

  r.inherits(s, i), t.CobolHighlightRules = s;
}), ace.define("ace/mode/cobol", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/cobol_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./cobol_highlight_rules").CobolHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = "*", this.$id = "ace/mode/cobol";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/cobol"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-coffee.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-coffee.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/coffee_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function s() {
    var e = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",
        t = "this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes|yield|export|import|default",
        n = "true|false|null|undefined|NaN|Infinity",
        r = "case|const|function|var|void|with|enum|implements|interface|let|package|private|protected|public|static",
        i = "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",
        s = "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",
        o = "window|arguments|prototype|document",
        u = this.createKeywordMapper({
      keyword: t,
      "constant.language": n,
      "invalid.illegal": r,
      "language.support.class": i,
      "language.support.function": s,
      "variable.language": o
    }, "identifier"),
        a = {
      token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"],
      regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source
    },
        f = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;
    this.$rules = {
      start: [{
        token: "constant.numeric",
        regex: "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"
      }, {
        stateName: "qdoc",
        token: "string",
        regex: "'''",
        next: [{
          token: "string",
          regex: "'''",
          next: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "qqdoc",
        token: "string",
        regex: '"""',
        next: [{
          token: "string",
          regex: '"""',
          next: "start"
        }, {
          token: "paren.string",
          regex: "#{",
          push: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "qstring",
        token: "string",
        regex: "'",
        next: [{
          token: "string",
          regex: "'",
          next: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "qqstring",
        token: "string.start",
        regex: '"',
        next: [{
          token: "string.end",
          regex: '"',
          next: "start"
        }, {
          token: "paren.string",
          regex: "#{",
          push: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "js",
        token: "string",
        regex: "`",
        next: [{
          token: "string",
          regex: "`",
          next: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        regex: "[{}]",
        onMatch: function onMatch(e, t, n) {
          this.next = "";
          if (e == "{" && n.length) return n.unshift("start", t), "paren";

          if (e == "}" && n.length) {
            n.shift(), this.next = n.shift() || "";
            if (this.next.indexOf("string") != -1) return "paren.string";
          }

          return "paren";
        }
      }, {
        token: "string.regex",
        regex: "///",
        next: "heregex"
      }, {
        token: "string.regex",
        regex: /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/
      }, {
        token: "comment",
        regex: "###(?!#)",
        next: "comment"
      }, {
        token: "comment",
        regex: "#.*"
      }, {
        token: ["punctuation.operator", "text", "identifier"],
        regex: "(\\.)(\\s*)(" + r + ")"
      }, {
        token: "punctuation.operator",
        regex: "\\.{1,3}"
      }, {
        token: ["keyword", "text", "language.support.class", "text", "keyword", "text", "language.support.class"],
        regex: "(class)(\\s+)(" + e + ")(?:(\\s+)(extends)(\\s+)(" + e + "))?"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text"].concat(a.token),
        regex: "(" + e + ")(\\s*)([=:])(\\s*)" + a.regex
      }, a, {
        token: "variable",
        regex: "@(?:" + e + ")?"
      }, {
        token: u,
        regex: e
      }, {
        token: "punctuation.operator",
        regex: "\\,|\\."
      }, {
        token: "storage.type",
        regex: "[\\-=]>"
      }, {
        token: "keyword.operator",
        regex: "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"
      }, {
        token: "paren.lparen",
        regex: "[({[]"
      }, {
        token: "paren.rparen",
        regex: "[\\]})]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      heregex: [{
        token: "string.regex",
        regex: ".*?///[imgy]{0,4}",
        next: "start"
      }, {
        token: "comment.regex",
        regex: "\\s+(?:#.*)?"
      }, {
        token: "string.regex",
        regex: "\\S+"
      }],
      comment: [{
        token: "comment",
        regex: "###",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.normalizeRules();
  }

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules;
  r.inherits(s, i), t.CoffeeHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/coffee", ["require", "exports", "module", "ace/mode/coffee_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/folding/coffee", "ace/range", "ace/mode/text", "ace/worker/worker_client", "ace/lib/oop"], function (e, t, n) {
  "use strict";

  function l() {
    this.HighlightRules = r, this.$outdent = new i(), this.foldingRules = new s();
  }

  var r = e("./coffee_highlight_rules").CoffeeHighlightRules,
      i = e("./matching_brace_outdent").MatchingBraceOutdent,
      s = e("./folding/coffee").FoldMode,
      o = e("../range").Range,
      u = e("./text").Mode,
      a = e("../worker/worker_client").WorkerClient,
      f = e("../lib/oop");
  f.inherits(l, u), function () {
    var e = /(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/;
    this.lineCommentStart = "#", this.blockComment = {
      start: "###",
      end: "###"
    }, this.getNextLineIndent = function (t, n, r) {
      var i = this.$getIndent(n),
          s = this.getTokenizer().getLineTokens(n, t).tokens;
      return (!s.length || s[s.length - 1].type !== "comment") && t === "start" && e.test(n) && (i += r), i;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new a(["ace"], "ace/mode/coffee_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/coffee", this.snippetFileId = "ace/snippets/coffee";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/coffee"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-coldfusion.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-coldfusion.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/coldfusion_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      s = e("./html_highlight_rules").HtmlHighlightRules,
      o = function o() {
    s.call(this), this.$rules.tag[2].token = function (e, t) {
      var n = t.slice(0, 2) == "cf" ? "keyword" : "meta.tag";
      return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", n + ".tag-name.xml"];
    };
    var e = Object.keys(this.$rules).filter(function (e) {
      return /^(js|css)-/.test(e);
    });
    this.embedRules({
      cfmlComment: [{
        regex: "<!---",
        token: "comment.start",
        push: "cfmlComment"
      }, {
        regex: "--->",
        token: "comment.end",
        next: "pop"
      }, {
        defaultToken: "comment"
      }]
    }, "", [{
      regex: "<!---",
      token: "comment.start",
      push: "cfmlComment"
    }], ["comment", "start", "tag_whitespace", "cdata"].concat(e)), this.$rules.cfTag = [{
      include: "attributes"
    }, {
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      next: "pop"
    }];
    var t = {
      token: function token(e, t) {
        return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "keyword.tag-name.xml"];
      },
      regex: "(</?)(cf[-_a-zA-Z0-9:.]+)",
      push: "cfTag"
    };
    e.forEach(function (e) {
      this.$rules[e].unshift(t);
    }, this), this.embedTagRules(new i({
      jsx: !1
    }).getRules(), "cfjs-", "cfscript"), this.normalizeRules();
  };

  r.inherits(o, s), t.ColdfusionHighlightRules = o;
}), ace.define("ace/mode/coldfusion", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/html", "ace/mode/coldfusion_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./html").Mode,
      o = e("./coldfusion_highlight_rules").ColdfusionHighlightRules,
      u = "cfabort|cfapplication|cfargument|cfassociate|cfbreak|cfcache|cfcollection|cfcookie|cfdbinfo|cfdirectory|cfdump|cfelse|cfelseif|cferror|cfexchangecalendar|cfexchangeconnection|cfexchangecontact|cfexchangefilter|cfexchangetask|cfexit|cffeed|cffile|cfflush|cfftp|cfheader|cfhtmlhead|cfhttpparam|cfimage|cfimport|cfinclude|cfindex|cfinsert|cfinvokeargument|cflocation|cflog|cfmailparam|cfNTauthenticate|cfobject|cfobjectcache|cfparam|cfpdfformparam|cfprint|cfprocparam|cfprocresult|cfproperty|cfqueryparam|cfregistry|cfreportparam|cfrethrow|cfreturn|cfschedule|cfsearch|cfset|cfsetting|cfthrow|cfzipparam)".split("|"),
      a = function a() {
    s.call(this), this.HighlightRules = o;
  };

  r.inherits(a, s), function () {
    this.voidElements = r.mixin(i.arrayToMap(u), this.voidElements), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.$id = "ace/mode/coldfusion";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/coldfusion"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-crystal.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-crystal.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/crystal_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "puts|initialize|previous_def|typeof|as|pointerof|sizeof|instance_sizeof",
        t = "if|end|else|elsif|unless|case|when|break|while|next|until|def|return|class|new|getter|setter|property|lib|fun|do|struct|private|protected|public|module|super|abstract|include|extend|begin|enum|raise|yield|with|alias|rescue|ensure|macro|uninitialized|union|type|require",
        n = "true|TRUE|false|FALSE|nil|NIL|__LINE__|__END_LINE__|__FILE__|__DIR__",
        r = "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|root_url|flash|session|cookies|params|request|response|logger|self",
        i = this.$keywords = this.createKeywordMapper({
      keyword: t,
      "constant.language": n,
      "variable.language": r,
      "support.function": e
    }, "identifier"),
        s = "(?:0[xX][\\dA-Fa-f]+)",
        o = "(?:[0-9][\\d_]*)",
        u = "(?:0o[0-7][0-7]*)",
        a = "(?:0[bB][01]+)",
        f = "(?:[+-]?)(?:" + s + "|" + o + "|" + u + "|" + a + ")(?:_?[iIuU](?:8|16|32|64))?\\b",
        l = /\\(?:[nsrtvfbae'"\\]|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4}|u{[\da-fA-F]{1,6}})/,
        c = /\\(?:[nsrtvfbae'"\\]|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4}|u{[\da-fA-F]{1,6}}|u{(:?[\da-fA-F]{2}\s)*[\da-fA-F]{2}})/;
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "string.regexp",
        regex: "[/]",
        push: [{
          token: "constant.language.escape",
          regex: c
        }, {
          token: "string.regexp",
          regex: "[/][imx]*(?=[).,;\\s]|$)",
          next: "pop"
        }, {
          defaultToken: "string.regexp"
        }]
      }, [{
        regex: "[{}]",
        onMatch: function onMatch(e, t, n) {
          this.next = e == "{" ? this.nextState : "";
          if (e == "{" && n.length) return n.unshift("start", t), "paren.lparen";

          if (e == "}" && n.length) {
            n.shift(), this.next = n.shift();
            if (this.next.indexOf("string") != -1) return "paren.end";
          }

          return e == "{" ? "paren.lparen" : "paren.rparen";
        },
        nextState: "start"
      }, {
        token: "string.start",
        regex: /"/,
        push: [{
          token: "constant.language.escape",
          regex: c
        }, {
          token: "string",
          regex: /\\#{/
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /"/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /`/,
        push: [{
          token: "constant.language.escape",
          regex: c
        }, {
          token: "string",
          regex: /\\#{/
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /`/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "rpstring",
        token: "string.start",
        regex: /%[Qx]?\(/,
        push: [{
          token: "constant.language.escape",
          regex: c
        }, {
          token: "string.start",
          regex: /\(/,
          push: "rpstring"
        }, {
          token: "string.end",
          regex: /\)/,
          next: "pop"
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "spstring",
        token: "string.start",
        regex: /%[Qx]?\[/,
        push: [{
          token: "constant.language.escape",
          regex: c
        }, {
          token: "string.start",
          regex: /\[/,
          push: "spstring"
        }, {
          token: "string.end",
          regex: /]/,
          next: "pop"
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "fpstring",
        token: "string.start",
        regex: /%[Qx]?{/,
        push: [{
          token: "constant.language.escape",
          regex: c
        }, {
          token: "string.start",
          regex: /{/,
          push: "fpstring"
        }, {
          token: "string.end",
          regex: /}/,
          next: "pop"
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "tpstring",
        token: "string.start",
        regex: /%[Qx]?</,
        push: [{
          token: "constant.language.escape",
          regex: c
        }, {
          token: "string.start",
          regex: /</,
          push: "tpstring"
        }, {
          token: "string.end",
          regex: />/,
          next: "pop"
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "ppstring",
        token: "string.start",
        regex: /%[Qx]?\|/,
        push: [{
          token: "constant.language.escape",
          regex: c
        }, {
          token: "string.end",
          regex: /\|/,
          next: "pop"
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "rpqstring",
        token: "string.start",
        regex: /%[qwir]\(/,
        push: [{
          token: "string.start",
          regex: /\(/,
          push: "rpqstring"
        }, {
          token: "string.end",
          regex: /\)/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "spqstring",
        token: "string.start",
        regex: /%[qwir]\[/,
        push: [{
          token: "string.start",
          regex: /\[/,
          push: "spqstring"
        }, {
          token: "string.end",
          regex: /]/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "fpqstring",
        token: "string.start",
        regex: /%[qwir]{/,
        push: [{
          token: "string.start",
          regex: /{/,
          push: "fpqstring"
        }, {
          token: "string.end",
          regex: /}/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "tpqstring",
        token: "string.start",
        regex: /%[qwir]</,
        push: [{
          token: "string.start",
          regex: /</,
          push: "tpqstring"
        }, {
          token: "string.end",
          regex: />/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "ppqstring",
        token: "string.start",
        regex: /%[qwir]\|/,
        push: [{
          token: "string.end",
          regex: /\|/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /'/,
        push: [{
          token: "constant.language.escape",
          regex: l
        }, {
          token: "string.end",
          regex: /'|$/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }], {
        token: "text",
        regex: "::"
      }, {
        token: "variable.instance",
        regex: "@{1,2}[a-zA-Z_\\d]+"
      }, {
        token: "variable.fresh",
        regex: "%[a-zA-Z_\\d]+"
      }, {
        token: "support.class",
        regex: "[A-Z][a-zA-Z_\\d]+"
      }, {
        token: "constant.other.symbol",
        regex: "[:](?:(?:===|<=>|\\[]\\?|\\[]=|\\[]|>>|\\*\\*|<<|==|!=|>=|<=|!~|=~|<|\\+|-|\\*|\\/|%|&|\\||\\^|>|!|~)|(?:(?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?))"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?(?:_?[fF](?:32|64))?\\b"
      }, {
        token: "constant.numeric",
        regex: f
      }, {
        token: "constant.other.symbol",
        regex: ':"',
        push: [{
          token: "constant.language.escape",
          regex: c
        }, {
          token: "constant.other.symbol",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "constant.other.symbol"
        }]
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: "support.function",
        regex: "(?:is_a\\?|nil\\?|responds_to\\?|as\\?)"
      }, {
        token: i,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$!?]*\\b"
      }, {
        token: "variable.system",
        regex: "\\$\\!|\\$\\?"
      }, {
        token: "punctuation.separator.key-value",
        regex: "=>"
      }, {
        stateName: "heredoc",
        onMatch: function onMatch(e, t, n) {
          var r = "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[3]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "string",
            value: i[2]
          }, {
            type: "support.class",
            value: i[3]
          }, {
            type: "string",
            value: i[4]
          }];
        },
        regex: "(<<-)([']?)([\\w]+)([']?)",
        rules: {
          heredoc: [{
            token: "string",
            regex: "^ +"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" ? t[0] : e;
        }
      }, {
        token: "punctuation.operator",
        regex: /[.]\s*(?![.])/,
        push: [{
          token: "punctuation.operator",
          regex: /[.]\s*(?![.])/
        }, {
          token: "support.function",
          regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
        }, {
          regex: "",
          token: "empty",
          next: "pop"
        }]
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|\\?|\\:|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\^|\\|"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.CrystalHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/crystal", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/crystal_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./crystal_highlight_rules").CrystalHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/coffee").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[]\s*$/),
            u = t.match(/^\s*(class|def|module)\s.*$/),
            a = t.match(/.*do(\s*|\s+\|.*\|\s*)$/),
            f = t.match(/^\s*(if|else|when)\s*/);
        if (o || u || a || f) r += n;
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return /^\s+(end|else)$/.test(t + n) || this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n);
      if (/}/.test(r)) return this.$outdent.autoOutdent(t, n);
      var i = this.$getIndent(r),
          s = t.getLine(n - 1),
          o = this.$getIndent(s),
          a = t.getTabString();
      o.length <= i.length && i.slice(-a.length) == a && t.remove(new u(n, i.length - a.length, n, i.length));
    }, this.$id = "ace/mode/crystal";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/crystal"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-csharp.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-csharp.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/csharp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = this.createKeywordMapper({
      "variable.language": "this",
      keyword: "abstract|async|await|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|partial|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic",
      "constant.language": "null|true|false"
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))?'/
      }, {
        token: "string",
        start: '"',
        end: '"|$',
        next: [{
          token: "constant.language.escape",
          regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/
        }, {
          token: "invalid",
          regex: /\\./
        }]
      }, {
        token: "string",
        start: '@"',
        end: '"',
        next: [{
          token: "constant.language.escape",
          regex: '""'
        }]
      }, {
        token: "string",
        start: /\$"/,
        end: '"|$',
        next: [{
          token: "constant.language.escape",
          regex: /\\(:?$)|{{/
        }, {
          token: "constant.language.escape",
          regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/
        }, {
          token: "invalid",
          regex: /\\./
        }]
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: e,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "keyword",
        regex: "^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)"
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(o, s), t.CSharpHighlightRules = o;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/folding/csharp", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./cstyle").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.usingRe = /^\s*using \S/, this.getFoldWidgetRangeBase = this.getFoldWidgetRange, this.getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = this.getFoldWidgetBase(e, t, n);

      if (!r) {
        var i = e.getLine(n);
        if (/^\s*#region\b/.test(i)) return "start";
        var s = this.usingRe;

        if (s.test(i)) {
          var o = e.getLine(n - 1),
              u = e.getLine(n + 1);
          if (!s.test(o) && s.test(u)) return "start";
        }
      }

      return r;
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.getFoldWidgetRangeBase(e, t, n);
      if (r) return r;
      var i = e.getLine(n);
      if (this.usingRe.test(i)) return this.getUsingStatementBlock(e, i, n);
      if (/^\s*#region\b/.test(i)) return this.getRegionBlock(e, i, n);
    }, this.getUsingStatementBlock = function (e, t, n) {
      var r = t.match(this.usingRe)[0].length - 1,
          s = e.getLength(),
          o = n,
          u = n;

      while (++n < s) {
        t = e.getLine(n);
        if (/^\s*$/.test(t)) continue;
        if (!this.usingRe.test(t)) break;
        u = n;
      }

      if (u > o) {
        var a = e.getLine(u).length;
        return new i(o, r, u, a);
      }
    }, this.getRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*#(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/csharp", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/csharp_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/csharp"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./csharp_highlight_rules").CSharpHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/csharp").FoldMode,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[]\s*$/);
        o && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      return null;
    }, this.$id = "ace/mode/csharp";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/csharp"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-csound_document.js":
/*!****************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-csound_document.js ***!
  \****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/csound_preprocessor_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    this.embeddedRulePrefix = e === undefined ? "" : e, this.semicolonComments = {
      token: "comment.line.semicolon.csound",
      regex: ";.*$"
    }, this.comments = [{
      token: "punctuation.definition.comment.begin.csound",
      regex: "/\\*",
      push: [{
        token: "punctuation.definition.comment.end.csound",
        regex: "\\*/",
        next: "pop"
      }, {
        defaultToken: "comment.block.csound"
      }]
    }, {
      token: "comment.line.double-slash.csound",
      regex: "//.*$"
    }, this.semicolonComments], this.macroUses = [{
      token: ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"],
      regex: /(\$[A-Z_a-z]\w*\.?)(\()/,
      next: "macro parameter value list"
    }, {
      token: "entity.name.function.preprocessor.csound",
      regex: /\$[A-Z_a-z]\w*(?:\.|\b)/
    }], this.numbers = [{
      token: "constant.numeric.float.csound",
      regex: /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/
    }, {
      token: ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"],
      regex: /(0[Xx])([0-9A-Fa-f]+)/
    }, {
      token: "constant.numeric.integer.decimal.csound",
      regex: /\d+/
    }], this.bracedStringContents = [{
      token: "constant.character.escape.csound",
      regex: /\\(?:[\\abnrt"]|[0-7]{1,3})/
    }, {
      token: "constant.character.placeholder.csound",
      regex: /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/
    }, {
      token: "constant.character.escape.csound",
      regex: /%%/
    }], this.quotedStringContents = [this.macroUses, this.bracedStringContents];
    var t = [this.comments, {
      token: "keyword.preprocessor.csound",
      regex: /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#include/,
      push: [this.comments, {
        token: "string.csound",
        regex: /([^ \t])(?:.*?\1)/,
        next: "pop"
      }]
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#includestr/,
      push: [this.comments, {
        token: "string.csound",
        regex: /([^ \t])(?:.*?\1)/,
        next: "pop"
      }]
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#[ \t]*define/,
      next: "define directive"
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#(?:ifn?def|undef)\b/,
      next: "macro directive"
    }, this.macroUses];
    this.$rules = {
      start: t,
      "define directive": [this.comments, {
        token: "entity.name.function.preprocessor.csound",
        regex: /[A-Z_a-z]\w*/
      }, {
        token: "punctuation.definition.macro-parameter-name-list.begin.csound",
        regex: /\(/,
        next: "macro parameter name list"
      }, {
        token: "punctuation.definition.macro.begin.csound",
        regex: /#/,
        next: "macro body"
      }],
      "macro parameter name list": [{
        token: "variable.parameter.preprocessor.csound",
        regex: /[A-Z_a-z]\w*/
      }, {
        token: "punctuation.definition.macro-parameter-name-list.end.csound",
        regex: /\)/,
        next: "define directive"
      }],
      "macro body": [{
        token: "constant.character.escape.csound",
        regex: /\\#/
      }, {
        token: "punctuation.definition.macro.end.csound",
        regex: /#/,
        next: "start"
      }, t],
      "macro directive": [this.comments, {
        token: "entity.name.function.preprocessor.csound",
        regex: /[A-Z_a-z]\w*/,
        next: "start"
      }],
      "macro parameter value list": [{
        token: "punctuation.definition.macro-parameter-value-list.end.csound",
        regex: /\)/,
        next: "start"
      }, {
        token: "punctuation.definition.string.begin.csound",
        regex: /"/,
        next: "macro parameter value quoted string"
      }, this.pushRule({
        token: "punctuation.macro-parameter-value-parenthetical.begin.csound",
        regex: /\(/,
        next: "macro parameter value parenthetical"
      }), {
        token: "punctuation.macro-parameter-value-separator.csound",
        regex: "[#']"
      }],
      "macro parameter value quoted string": [{
        token: "constant.character.escape.csound",
        regex: /\\[#'()]/
      }, {
        token: "invalid.illegal.csound",
        regex: /[#'()]/
      }, {
        token: "punctuation.definition.string.end.csound",
        regex: /"/,
        next: "macro parameter value list"
      }, this.quotedStringContents, {
        defaultToken: "string.quoted.csound"
      }],
      "macro parameter value parenthetical": [{
        token: "constant.character.escape.csound",
        regex: /\\\)/
      }, this.popRule({
        token: "punctuation.macro-parameter-value-parenthetical.end.csound",
        regex: /\)/
      }), this.pushRule({
        token: "punctuation.macro-parameter-value-parenthetical.begin.csound",
        regex: /\(/,
        next: "macro parameter value parenthetical"
      }), t]
    };
  };

  r.inherits(s, i), function () {
    this.pushRule = function (e) {
      if (Array.isArray(e.next)) for (var t = 0; t < e.next.length; t++) {
        e.next[t] = this.embeddedRulePrefix + e.next[t];
      }
      return {
        regex: e.regex,
        onMatch: function onMatch(t, n, r, i) {
          r.length === 0 && r.push(n);
          if (Array.isArray(e.next)) for (var s = 0; s < e.next.length; s++) {
            r.push(e.next[s]);
          } else r.push(e.next);
          return this.next = r[r.length - 1], e.token;
        },

        get next() {
          return Array.isArray(e.next) ? e.next[e.next.length - 1] : e.next;
        },

        set next(t) {
          Array.isArray(e.next) || (e.next = t);
        },

        get token() {
          return e.token;
        }

      };
    }, this.popRule = function (e) {
      return e.next && (e.next = this.embeddedRulePrefix + e.next), {
        regex: e.regex,
        onMatch: function onMatch(t, n, r, i) {
          return r.pop(), e.next ? (r.push(e.next), this.next = r[r.length - 1]) : this.next = r.length > 1 ? r[r.length - 1] : r.pop(), e.token;
        }
      };
    };
  }.call(s.prototype), t.CsoundPreprocessorHighlightRules = s;
}), ace.define("ace/mode/csound_score_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/csound_preprocessor_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules,
      s = function s(e) {
    i.call(this, e), this.quotedStringContents.push({
      token: "invalid.illegal.csound-score",
      regex: /[^"]*$/
    });
    var t = this.$rules.start;
    t.push({
      token: "keyword.control.csound-score",
      regex: /[abCdefiqstvxy]/
    }, {
      token: "invalid.illegal.csound-score",
      regex: /w/
    }, {
      token: "constant.numeric.language.csound-score",
      regex: /z/
    }, {
      token: ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"],
      regex: /([nNpP][pP])(\d+)/
    }, {
      token: "keyword.other.csound-score",
      regex: /[mn]/,
      push: [{
        token: "empty",
        regex: /$/,
        next: "pop"
      }, this.comments, {
        token: "entity.name.label.csound-score",
        regex: /[A-Z_a-z]\w*/
      }]
    }, {
      token: "keyword.preprocessor.csound-score",
      regex: /r\b/,
      next: "repeat section"
    }, this.numbers, {
      token: "keyword.operator.csound-score",
      regex: "[!+\\-*/^%&|<>#~.]"
    }, this.pushRule({
      token: "punctuation.definition.string.begin.csound-score",
      regex: /"/,
      next: "quoted string"
    }), this.pushRule({
      token: "punctuation.braced-loop.begin.csound-score",
      regex: /{/,
      next: "loop after left brace"
    })), this.addRules({
      "repeat section": [{
        token: "empty",
        regex: /$/,
        next: "start"
      }, this.comments, {
        token: "constant.numeric.integer.decimal.csound-score",
        regex: /\d+/,
        next: "repeat section before label"
      }],
      "repeat section before label": [{
        token: "empty",
        regex: /$/,
        next: "start"
      }, this.comments, {
        token: "entity.name.label.csound-score",
        regex: /[A-Z_a-z]\w*/,
        next: "start"
      }],
      "quoted string": [this.popRule({
        token: "punctuation.definition.string.end.csound-score",
        regex: /"/
      }), this.quotedStringContents, {
        defaultToken: "string.quoted.csound-score"
      }],
      "loop after left brace": [this.popRule({
        token: "constant.numeric.integer.decimal.csound-score",
        regex: /\d+/,
        next: "loop after repeat count"
      }), this.comments, {
        token: "invalid.illegal.csound",
        regex: /\S.*/
      }],
      "loop after repeat count": [this.popRule({
        token: "entity.name.function.preprocessor.csound-score",
        regex: /[A-Z_a-z]\w*\b/,
        next: "loop after macro name"
      }), this.comments, {
        token: "invalid.illegal.csound",
        regex: /\S.*/
      }],
      "loop after macro name": [t, this.popRule({
        token: "punctuation.braced-loop.end.csound-score",
        regex: /}/
      })]
    }), this.normalizeRules();
  };

  r.inherits(s, i), t.CsoundScoreHighlightRules = s;
}), ace.define("ace/mode/lua_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",
        t = "true|false|nil|_G|_VERSION",
        n = "string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",
        r = "string|package|os|io|math|debug|table|coroutine",
        i = "setn|foreach|foreachi|gcinfo|log10|maxn",
        s = this.createKeywordMapper({
      keyword: e,
      "support.function": n,
      "keyword.deprecated": i,
      "constant.library": r,
      "constant.language": t,
      "variable.language": "self"
    }, "identifier"),
        o = "(?:(?:[1-9]\\d*)|(?:0))",
        u = "(?:0[xX][\\dA-Fa-f]+)",
        a = "(?:" + o + "|" + u + ")",
        f = "(?:\\.\\d+)",
        l = "(?:\\d+)",
        c = "(?:(?:" + l + "?" + f + ")|(?:" + l + "\\.))",
        h = "(?:" + c + ")";
    this.$rules = {
      start: [{
        stateName: "bracketedComment",
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.length - 2, t), "comment";
        },
        regex: /\-\-\[=*\[/,
        next: [{
          onMatch: function onMatch(e, t, n) {
            return e.length == n[1] ? (n.shift(), n.shift(), this.next = n.shift()) : this.next = "", "comment";
          },
          regex: /\]=*\]/,
          next: "start"
        }, {
          defaultToken: "comment"
        }]
      }, {
        token: "comment",
        regex: "\\-\\-.*$"
      }, {
        stateName: "bracketedString",
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.length, t), "string.start";
        },
        regex: /\[=*\[/,
        next: [{
          onMatch: function onMatch(e, t, n) {
            return e.length == n[1] ? (n.shift(), n.shift(), this.next = n.shift()) : this.next = "", "string.end";
          },
          regex: /\]=*\]/,
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: '"(?:[^\\\\]|\\\\.)*?"'
      }, {
        token: "string",
        regex: "'(?:[^\\\\]|\\\\.)*?'"
      }, {
        token: "constant.numeric",
        regex: h
      }, {
        token: "constant.numeric",
        regex: a + "\\b"
      }, {
        token: s,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text",
        regex: "\\s+|\\w+"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.LuaHighlightRules = s;
}), ace.define("ace/mode/python_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal",
        t = "True|False|None|NotImplemented|Ellipsis|__debug__",
        n = "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes",
        r = this.createKeywordMapper({
      "invalid.deprecated": "debugger",
      "support.function": n,
      "variable.language": "self|cls",
      "constant.language": t,
      keyword: e
    }, "identifier"),
        i = "[uU]?",
        s = "[rR]",
        o = "[fF]",
        u = "(?:[rR][fF]|[fF][rR])",
        a = "(?:(?:[1-9]\\d*)|(?:0))",
        f = "(?:0[oO]?[0-7]+)",
        l = "(?:0[xX][\\dA-Fa-f]+)",
        c = "(?:0[bB][01]+)",
        h = "(?:" + a + "|" + f + "|" + l + "|" + c + ")",
        p = "(?:[eE][+-]?\\d+)",
        d = "(?:\\.\\d+)",
        v = "(?:\\d+)",
        m = "(?:(?:" + v + "?" + d + ")|(?:" + v + "\\.))",
        g = "(?:(?:" + m + "|" + v + ")" + p + ")",
        y = "(?:" + g + "|" + m + ")",
        b = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "string",
        regex: i + '"{3}',
        next: "qqstring3"
      }, {
        token: "string",
        regex: i + '"(?=.)',
        next: "qqstring"
      }, {
        token: "string",
        regex: i + "'{3}",
        next: "qstring3"
      }, {
        token: "string",
        regex: i + "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: s + '"{3}',
        next: "rawqqstring3"
      }, {
        token: "string",
        regex: s + '"(?=.)',
        next: "rawqqstring"
      }, {
        token: "string",
        regex: s + "'{3}",
        next: "rawqstring3"
      }, {
        token: "string",
        regex: s + "'(?=.)",
        next: "rawqstring"
      }, {
        token: "string",
        regex: o + '"{3}',
        next: "fqqstring3"
      }, {
        token: "string",
        regex: o + '"(?=.)',
        next: "fqqstring"
      }, {
        token: "string",
        regex: o + "'{3}",
        next: "fqstring3"
      }, {
        token: "string",
        regex: o + "'(?=.)",
        next: "fqstring"
      }, {
        token: "string",
        regex: u + '"{3}',
        next: "rfqqstring3"
      }, {
        token: "string",
        regex: u + '"(?=.)',
        next: "rfqqstring"
      }, {
        token: "string",
        regex: u + "'{3}",
        next: "rfqstring3"
      }, {
        token: "string",
        regex: u + "'(?=.)",
        next: "rfqstring"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "punctuation",
        regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        include: "constants"
      }],
      qqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqqstring3: [{
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqstring3: [{
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rawqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rawqstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      fqqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "fqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqqstring3: [{
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqstring3: [{
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rfqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqstring: [{
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstringParRules: [{
        token: "paren.lparen",
        regex: "[\\[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)]"
      }, {
        token: "string",
        regex: "\\s+"
      }, {
        token: "string",
        regex: "'[^']*'"
      }, {
        token: "string",
        regex: '"[^"]*"'
      }, {
        token: "function.support",
        regex: "(!s|!r|!a)"
      }, {
        include: "constants"
      }, {
        token: "paren.rparen",
        regex: "}",
        next: "pop"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }],
      constants: [{
        token: "constant.numeric",
        regex: "(?:" + y + "|\\d+)[jJ]\\b"
      }, {
        token: "constant.numeric",
        regex: y
      }, {
        token: "constant.numeric",
        regex: h + "[lL]\\b"
      }, {
        token: "constant.numeric",
        regex: h + "\\b"
      }, {
        token: ["punctuation", "function.support"],
        regex: "(\\.)([a-zA-Z_]+)\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.PythonHighlightRules = s;
}), ace.define("ace/mode/csound_orchestra_highlight_rules", ["require", "exports", "module", "ace/lib/lang", "ace/lib/oop", "ace/mode/csound_preprocessor_highlight_rules", "ace/mode/csound_score_highlight_rules", "ace/mode/lua_highlight_rules", "ace/mode/python_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/lang"),
      i = e("../lib/oop"),
      s = e("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules,
      o = e("./csound_score_highlight_rules").CsoundScoreHighlightRules,
      u = e("./lua_highlight_rules").LuaHighlightRules,
      a = e("./python_highlight_rules").PythonHighlightRules,
      f = function f(e) {
    s.call(this, e);
    var t = ["ATSadd", "ATSaddnz", "ATSbufread", "ATScross", "ATSinfo", "ATSinterpread", "ATSpartialtap", "ATSread", "ATSreadnz", "ATSsinnoi", "FLbox", "FLbutBank", "FLbutton", "FLcloseButton", "FLcolor", "FLcolor2", "FLcount", "FLexecButton", "FLgetsnap", "FLgroup", "FLgroupEnd", "FLgroup_end", "FLhide", "FLhvsBox", "FLhvsBoxSetValue", "FLjoy", "FLkeyIn", "FLknob", "FLlabel", "FLloadsnap", "FLmouse", "FLpack", "FLpackEnd", "FLpack_end", "FLpanel", "FLpanelEnd", "FLpanel_end", "FLprintk", "FLprintk2", "FLroller", "FLrun", "FLsavesnap", "FLscroll", "FLscrollEnd", "FLscroll_end", "FLsetAlign", "FLsetBox", "FLsetColor", "FLsetColor2", "FLsetFont", "FLsetPosition", "FLsetSize", "FLsetSnapGroup", "FLsetText", "FLsetTextColor", "FLsetTextSize", "FLsetTextType", "FLsetVal", "FLsetVal_i", "FLsetVali", "FLsetsnap", "FLshow", "FLslidBnk", "FLslidBnk2", "FLslidBnk2Set", "FLslidBnk2Setk", "FLslidBnkGetHandle", "FLslidBnkSet", "FLslidBnkSetk", "FLslider", "FLtabs", "FLtabsEnd", "FLtabs_end", "FLtext", "FLupdate", "FLvalue", "FLvkeybd", "FLvslidBnk", "FLvslidBnk2", "FLxyin", "JackoAudioIn", "JackoAudioInConnect", "JackoAudioOut", "JackoAudioOutConnect", "JackoFreewheel", "JackoInfo", "JackoInit", "JackoMidiInConnect", "JackoMidiOut", "JackoMidiOutConnect", "JackoNoteOut", "JackoOn", "JackoTransport", "K35_hpf", "K35_lpf", "MixerClear", "MixerGetLevel", "MixerReceive", "MixerSend", "MixerSetLevel", "MixerSetLevel_i", "OSCbundle", "OSCcount", "OSCinit", "OSCinitM", "OSClisten", "OSCraw", "OSCsend", "OSCsend_lo", "S", "STKBandedWG", "STKBeeThree", "STKBlowBotl", "STKBlowHole", "STKBowed", "STKBrass", "STKClarinet", "STKDrummer", "STKFMVoices", "STKFlute", "STKHevyMetl", "STKMandolin", "STKModalBar", "STKMoog", "STKPercFlut", "STKPlucked", "STKResonate", "STKRhodey", "STKSaxofony", "STKShakers", "STKSimple", "STKSitar", "STKStifKarp", "STKTubeBell", "STKVoicForm", "STKWhistle", "STKWurley", "a", "abs", "active", "adsr", "adsyn", "adsynt", "adsynt2", "aftouch", "alpass", "alwayson", "ampdb", "ampdbfs", "ampmidi", "ampmidicurve", "ampmidid", "areson", "aresonk", "atone", "atonek", "atonex", "babo", "balance", "balance2", "bamboo", "barmodel", "bbcutm", "bbcuts", "beadsynt", "beosc", "betarand", "bexprnd", "bformdec1", "bformenc1", "binit", "biquad", "biquada", "birnd", "bpf", "bpfcos", "bqrez", "butbp", "butbr", "buthp", "butlp", "butterbp", "butterbr", "butterhp", "butterlp", "button", "buzz", "c2r", "cabasa", "cauchy", "cauchyi", "cbrt", "ceil", "cell", "cent", "centroid", "ceps", "cepsinv", "chanctrl", "changed2", "chani", "chano", "chebyshevpoly", "checkbox", "chn_S", "chn_a", "chn_k", "chnclear", "chnexport", "chnget", "chngeta", "chngeti", "chngetk", "chngetks", "chngets", "chnmix", "chnparams", "chnset", "chnseta", "chnseti", "chnsetk", "chnsetks", "chnsets", "chuap", "clear", "clfilt", "clip", "clockoff", "clockon", "cmp", "cmplxprod", "comb", "combinv", "compilecsd", "compileorc", "compilestr", "compress", "compress2", "connect", "control", "convle", "convolve", "copya2ftab", "copyf2array", "cos", "cosh", "cosinv", "cosseg", "cossegb", "cossegr", "cps2pch", "cpsmidi", "cpsmidib", "cpsmidinn", "cpsoct", "cpspch", "cpstmid", "cpstun", "cpstuni", "cpsxpch", "cpumeter", "cpuprc", "cross2", "crossfm", "crossfmi", "crossfmpm", "crossfmpmi", "crosspm", "crosspmi", "crunch", "ctlchn", "ctrl14", "ctrl21", "ctrl7", "ctrlinit", "cuserrnd", "dam", "date", "dates", "db", "dbamp", "dbfsamp", "dcblock", "dcblock2", "dconv", "dct", "dctinv", "deinterleave", "delay", "delay1", "delayk", "delayr", "delayw", "deltap", "deltap3", "deltapi", "deltapn", "deltapx", "deltapxw", "denorm", "diff", "diode_ladder", "directory", "diskgrain", "diskin", "diskin2", "dispfft", "display", "distort", "distort1", "divz", "doppler", "dot", "downsamp", "dripwater", "dssiactivate", "dssiaudio", "dssictls", "dssiinit", "dssilist", "dumpk", "dumpk2", "dumpk3", "dumpk4", "duserrnd", "dust", "dust2", "envlpx", "envlpxr", "ephasor", "eqfil", "evalstr", "event", "event_i", "exciter", "exitnow", "exp", "expcurve", "expon", "exprand", "exprandi", "expseg", "expsega", "expsegb", "expsegba", "expsegr", "fareylen", "fareyleni", "faustaudio", "faustcompile", "faustctl", "faustdsp", "faustgen", "faustplay", "fft", "fftinv", "ficlose", "filebit", "filelen", "filenchnls", "filepeak", "filescal", "filesr", "filevalid", "fillarray", "filter2", "fin", "fini", "fink", "fiopen", "flanger", "flashtxt", "flooper", "flooper2", "floor", "fluidAllOut", "fluidCCi", "fluidCCk", "fluidControl", "fluidEngine", "fluidInfo", "fluidLoad", "fluidNote", "fluidOut", "fluidProgramSelect", "fluidSetInterpMethod", "fmanal", "fmax", "fmb3", "fmbell", "fmin", "fmmetal", "fmod", "fmpercfl", "fmrhode", "fmvoice", "fmwurlie", "fof", "fof2", "fofilter", "fog", "fold", "follow", "follow2", "foscil", "foscili", "fout", "fouti", "foutir", "foutk", "fprintks", "fprints", "frac", "fractalnoise", "framebuffer", "freeverb", "ftaudio", "ftchnls", "ftconv", "ftcps", "ftexists", "ftfree", "ftgen", "ftgenonce", "ftgentmp", "ftlen", "ftload", "ftloadk", "ftlptim", "ftmorf", "ftom", "ftprint", "ftresize", "ftresizei", "ftsamplebank", "ftsave", "ftsavek", "ftslice", "ftsr", "gain", "gainslider", "gauss", "gaussi", "gausstrig", "gbuzz", "genarray", "genarray_i", "gendy", "gendyc", "gendyx", "getcfg", "getcol", "getftargs", "getrow", "getrowlin", "getseed", "gogobel", "grain", "grain2", "grain3", "granule", "gtf", "guiro", "harmon", "harmon2", "harmon3", "harmon4", "hdf5read", "hdf5write", "hilbert", "hilbert2", "hrtfearly", "hrtfmove", "hrtfmove2", "hrtfreverb", "hrtfstat", "hsboscil", "hvs1", "hvs2", "hvs3", "hypot", "i", "ihold", "imagecreate", "imagefree", "imagegetpixel", "imageload", "imagesave", "imagesetpixel", "imagesize", "in", "in32", "inch", "inh", "init", "initc14", "initc21", "initc7", "inleta", "inletf", "inletk", "inletkid", "inletv", "ino", "inq", "inrg", "ins", "insglobal", "insremot", "int", "integ", "interleave", "interp", "invalue", "inx", "inz", "jacktransport", "jitter", "jitter2", "joystick", "jspline", "k", "la_i_add_mc", "la_i_add_mr", "la_i_add_vc", "la_i_add_vr", "la_i_assign_mc", "la_i_assign_mr", "la_i_assign_t", "la_i_assign_vc", "la_i_assign_vr", "la_i_conjugate_mc", "la_i_conjugate_mr", "la_i_conjugate_vc", "la_i_conjugate_vr", "la_i_distance_vc", "la_i_distance_vr", "la_i_divide_mc", "la_i_divide_mr", "la_i_divide_vc", "la_i_divide_vr", "la_i_dot_mc", "la_i_dot_mc_vc", "la_i_dot_mr", "la_i_dot_mr_vr", "la_i_dot_vc", "la_i_dot_vr", "la_i_get_mc", "la_i_get_mr", "la_i_get_vc", "la_i_get_vr", "la_i_invert_mc", "la_i_invert_mr", "la_i_lower_solve_mc", "la_i_lower_solve_mr", "la_i_lu_det_mc", "la_i_lu_det_mr", "la_i_lu_factor_mc", "la_i_lu_factor_mr", "la_i_lu_solve_mc", "la_i_lu_solve_mr", "la_i_mc_create", "la_i_mc_set", "la_i_mr_create", "la_i_mr_set", "la_i_multiply_mc", "la_i_multiply_mr", "la_i_multiply_vc", "la_i_multiply_vr", "la_i_norm1_mc", "la_i_norm1_mr", "la_i_norm1_vc", "la_i_norm1_vr", "la_i_norm_euclid_mc", "la_i_norm_euclid_mr", "la_i_norm_euclid_vc", "la_i_norm_euclid_vr", "la_i_norm_inf_mc", "la_i_norm_inf_mr", "la_i_norm_inf_vc", "la_i_norm_inf_vr", "la_i_norm_max_mc", "la_i_norm_max_mr", "la_i_print_mc", "la_i_print_mr", "la_i_print_vc", "la_i_print_vr", "la_i_qr_eigen_mc", "la_i_qr_eigen_mr", "la_i_qr_factor_mc", "la_i_qr_factor_mr", "la_i_qr_sym_eigen_mc", "la_i_qr_sym_eigen_mr", "la_i_random_mc", "la_i_random_mr", "la_i_random_vc", "la_i_random_vr", "la_i_size_mc", "la_i_size_mr", "la_i_size_vc", "la_i_size_vr", "la_i_subtract_mc", "la_i_subtract_mr", "la_i_subtract_vc", "la_i_subtract_vr", "la_i_t_assign", "la_i_trace_mc", "la_i_trace_mr", "la_i_transpose_mc", "la_i_transpose_mr", "la_i_upper_solve_mc", "la_i_upper_solve_mr", "la_i_vc_create", "la_i_vc_set", "la_i_vr_create", "la_i_vr_set", "la_k_a_assign", "la_k_add_mc", "la_k_add_mr", "la_k_add_vc", "la_k_add_vr", "la_k_assign_a", "la_k_assign_f", "la_k_assign_mc", "la_k_assign_mr", "la_k_assign_t", "la_k_assign_vc", "la_k_assign_vr", "la_k_conjugate_mc", "la_k_conjugate_mr", "la_k_conjugate_vc", "la_k_conjugate_vr", "la_k_current_f", "la_k_current_vr", "la_k_distance_vc", "la_k_distance_vr", "la_k_divide_mc", "la_k_divide_mr", "la_k_divide_vc", "la_k_divide_vr", "la_k_dot_mc", "la_k_dot_mc_vc", "la_k_dot_mr", "la_k_dot_mr_vr", "la_k_dot_vc", "la_k_dot_vr", "la_k_f_assign", "la_k_get_mc", "la_k_get_mr", "la_k_get_vc", "la_k_get_vr", "la_k_invert_mc", "la_k_invert_mr", "la_k_lower_solve_mc", "la_k_lower_solve_mr", "la_k_lu_det_mc", "la_k_lu_det_mr", "la_k_lu_factor_mc", "la_k_lu_factor_mr", "la_k_lu_solve_mc", "la_k_lu_solve_mr", "la_k_mc_set", "la_k_mr_set", "la_k_multiply_mc", "la_k_multiply_mr", "la_k_multiply_vc", "la_k_multiply_vr", "la_k_norm1_mc", "la_k_norm1_mr", "la_k_norm1_vc", "la_k_norm1_vr", "la_k_norm_euclid_mc", "la_k_norm_euclid_mr", "la_k_norm_euclid_vc", "la_k_norm_euclid_vr", "la_k_norm_inf_mc", "la_k_norm_inf_mr", "la_k_norm_inf_vc", "la_k_norm_inf_vr", "la_k_norm_max_mc", "la_k_norm_max_mr", "la_k_qr_eigen_mc", "la_k_qr_eigen_mr", "la_k_qr_factor_mc", "la_k_qr_factor_mr", "la_k_qr_sym_eigen_mc", "la_k_qr_sym_eigen_mr", "la_k_random_mc", "la_k_random_mr", "la_k_random_vc", "la_k_random_vr", "la_k_subtract_mc", "la_k_subtract_mr", "la_k_subtract_vc", "la_k_subtract_vr", "la_k_t_assign", "la_k_trace_mc", "la_k_trace_mr", "la_k_upper_solve_mc", "la_k_upper_solve_mr", "la_k_vc_set", "la_k_vr_set", "lastcycle", "lenarray", "lfo", "limit", "limit1", "lincos", "line", "linen", "linenr", "lineto", "link_beat_force", "link_beat_get", "link_beat_request", "link_create", "link_enable", "link_is_enabled", "link_metro", "link_peers", "link_tempo_get", "link_tempo_set", "linlin", "linrand", "linseg", "linsegb", "linsegr", "liveconv", "locsend", "locsig", "log", "log10", "log2", "logbtwo", "logcurve", "loopseg", "loopsegp", "looptseg", "loopxseg", "lorenz", "loscil", "loscil3", "loscil3phs", "loscilphs", "loscilx", "lowpass2", "lowres", "lowresx", "lpf18", "lpform", "lpfreson", "lphasor", "lpinterp", "lposcil", "lposcil3", "lposcila", "lposcilsa", "lposcilsa2", "lpread", "lpreson", "lpshold", "lpsholdp", "lpslot", "lua_exec", "lua_iaopcall", "lua_iaopcall_off", "lua_ikopcall", "lua_ikopcall_off", "lua_iopcall", "lua_iopcall_off", "lua_opdef", "mac", "maca", "madsr", "mags", "mandel", "mandol", "maparray", "maparray_i", "marimba", "massign", "max", "max_k", "maxabs", "maxabsaccum", "maxaccum", "maxalloc", "maxarray", "mclock", "mdelay", "median", "mediank", "metro", "metro2", "mfb", "midglobal", "midiarp", "midic14", "midic21", "midic7", "midichannelaftertouch", "midichn", "midicontrolchange", "midictrl", "mididefault", "midifilestatus", "midiin", "midinoteoff", "midinoteoncps", "midinoteonkey", "midinoteonoct", "midinoteonpch", "midion", "midion2", "midiout", "midiout_i", "midipgm", "midipitchbend", "midipolyaftertouch", "midiprogramchange", "miditempo", "midremot", "min", "minabs", "minabsaccum", "minaccum", "minarray", "mincer", "mirror", "mode", "modmatrix", "monitor", "moog", "moogladder", "moogladder2", "moogvcf", "moogvcf2", "moscil", "mp3bitrate", "mp3in", "mp3len", "mp3nchnls", "mp3scal", "mp3sr", "mpulse", "mrtmsg", "mtof", "mton", "multitap", "mute", "mvchpf", "mvclpf1", "mvclpf2", "mvclpf3", "mvclpf4", "mxadsr", "nchnls_hw", "nestedap", "nlalp", "nlfilt", "nlfilt2", "noise", "noteoff", "noteon", "noteondur", "noteondur2", "notnum", "nreverb", "nrpn", "nsamp", "nstance", "nstrnum", "nstrstr", "ntof", "ntom", "ntrpol", "nxtpow2", "octave", "octcps", "octmidi", "octmidib", "octmidinn", "octpch", "olabuffer", "oscbnk", "oscil", "oscil1", "oscil1i", "oscil3", "oscili", "oscilikt", "osciliktp", "oscilikts", "osciln", "oscils", "oscilx", "out", "out32", "outc", "outch", "outh", "outiat", "outic", "outic14", "outipat", "outipb", "outipc", "outkat", "outkc", "outkc14", "outkpat", "outkpb", "outkpc", "outleta", "outletf", "outletk", "outletkid", "outletv", "outo", "outq", "outq1", "outq2", "outq3", "outq4", "outrg", "outs", "outs1", "outs2", "outvalue", "outx", "outz", "p", "p5gconnect", "p5gdata", "pan", "pan2", "pareq", "part2txt", "partials", "partikkel", "partikkelget", "partikkelset", "partikkelsync", "passign", "paulstretch", "pcauchy", "pchbend", "pchmidi", "pchmidib", "pchmidinn", "pchoct", "pchtom", "pconvolve", "pcount", "pdclip", "pdhalf", "pdhalfy", "peak", "pgmassign", "pgmchn", "phaser1", "phaser2", "phasor", "phasorbnk", "phs", "pindex", "pinker", "pinkish", "pitch", "pitchac", "pitchamdf", "planet", "platerev", "plltrack", "pluck", "poisson", "pol2rect", "polyaft", "polynomial", "port", "portk", "poscil", "poscil3", "pow", "powershape", "powoftwo", "pows", "prealloc", "prepiano", "print", "print_type", "printarray", "printf", "printf_i", "printk", "printk2", "printks", "printks2", "prints", "product", "pset", "ptable", "ptable3", "ptablei", "ptablew", "ptrack", "puts", "pvadd", "pvbufread", "pvcross", "pvinterp", "pvoc", "pvread", "pvs2array", "pvs2tab", "pvsadsyn", "pvsanal", "pvsarp", "pvsbandp", "pvsbandr", "pvsbin", "pvsblur", "pvsbuffer", "pvsbufread", "pvsbufread2", "pvscale", "pvscent", "pvsceps", "pvscross", "pvsdemix", "pvsdiskin", "pvsdisp", "pvsenvftw", "pvsfilter", "pvsfread", "pvsfreeze", "pvsfromarray", "pvsftr", "pvsftw", "pvsfwrite", "pvsgain", "pvshift", "pvsifd", "pvsin", "pvsinfo", "pvsinit", "pvslock", "pvsmaska", "pvsmix", "pvsmooth", "pvsmorph", "pvsosc", "pvsout", "pvspitch", "pvstanal", "pvstencil", "pvstrace", "pvsvoc", "pvswarp", "pvsynth", "pwd", "pyassign", "pyassigni", "pyassignt", "pycall", "pycall1", "pycall1i", "pycall1t", "pycall2", "pycall2i", "pycall2t", "pycall3", "pycall3i", "pycall3t", "pycall4", "pycall4i", "pycall4t", "pycall5", "pycall5i", "pycall5t", "pycall6", "pycall6i", "pycall6t", "pycall7", "pycall7i", "pycall7t", "pycall8", "pycall8i", "pycall8t", "pycalli", "pycalln", "pycallni", "pycallt", "pyeval", "pyevali", "pyevalt", "pyexec", "pyexeci", "pyexect", "pyinit", "pylassign", "pylassigni", "pylassignt", "pylcall", "pylcall1", "pylcall1i", "pylcall1t", "pylcall2", "pylcall2i", "pylcall2t", "pylcall3", "pylcall3i", "pylcall3t", "pylcall4", "pylcall4i", "pylcall4t", "pylcall5", "pylcall5i", "pylcall5t", "pylcall6", "pylcall6i", "pylcall6t", "pylcall7", "pylcall7i", "pylcall7t", "pylcall8", "pylcall8i", "pylcall8t", "pylcalli", "pylcalln", "pylcallni", "pylcallt", "pyleval", "pylevali", "pylevalt", "pylexec", "pylexeci", "pylexect", "pylrun", "pylruni", "pylrunt", "pyrun", "pyruni", "pyrunt", "qinf", "qnan", "r2c", "rand", "randc", "randh", "randi", "random", "randomh", "randomi", "rbjeq", "readclock", "readf", "readfi", "readk", "readk2", "readk3", "readk4", "readks", "readscore", "readscratch", "rect2pol", "release", "remoteport", "remove", "repluck", "reshapearray", "reson", "resonk", "resonr", "resonx", "resonxk", "resony", "resonz", "resyn", "reverb", "reverb2", "reverbsc", "rewindscore", "rezzy", "rfft", "rifft", "rms", "rnd", "rnd31", "round", "rspline", "rtclock", "s16b14", "s32b14", "samphold", "sandpaper", "sc_lag", "sc_lagud", "sc_phasor", "sc_trig", "scale", "scalearray", "scanhammer", "scans", "scantable", "scanu", "schedkwhen", "schedkwhennamed", "schedule", "schedulek", "schedwhen", "scoreline", "scoreline_i", "seed", "sekere", "select", "semitone", "sense", "sensekey", "seqtime", "seqtime2", "serialBegin", "serialEnd", "serialFlush", "serialPrint", "serialRead", "serialWrite", "serialWrite_i", "setcol", "setctrl", "setksmps", "setrow", "setscorepos", "sfilist", "sfinstr", "sfinstr3", "sfinstr3m", "sfinstrm", "sfload", "sflooper", "sfpassign", "sfplay", "sfplay3", "sfplay3m", "sfplaym", "sfplist", "sfpreset", "shaker", "shiftin", "shiftout", "signum", "sin", "sinh", "sininv", "sinsyn", "sleighbells", "slicearray", "slicearray_i", "slider16", "slider16f", "slider16table", "slider16tablef", "slider32", "slider32f", "slider32table", "slider32tablef", "slider64", "slider64f", "slider64table", "slider64tablef", "slider8", "slider8f", "slider8table", "slider8tablef", "sliderKawai", "sndloop", "sndwarp", "sndwarpst", "sockrecv", "sockrecvs", "socksend", "socksends", "sorta", "sortd", "soundin", "space", "spat3d", "spat3di", "spat3dt", "spdist", "splitrig", "sprintf", "sprintfk", "spsend", "sqrt", "squinewave", "statevar", "stix", "strcat", "strcatk", "strchar", "strchark", "strcmp", "strcmpk", "strcpy", "strcpyk", "strecv", "streson", "strfromurl", "strget", "strindex", "strindexk", "string2array", "strlen", "strlenk", "strlower", "strlowerk", "strrindex", "strrindexk", "strset", "strstrip", "strsub", "strsubk", "strtod", "strtodk", "strtol", "strtolk", "strupper", "strupperk", "stsend", "subinstr", "subinstrinit", "sum", "sumarray", "svfilter", "syncgrain", "syncloop", "syncphasor", "system", "system_i", "tab", "tab2array", "tab2pvs", "tab_i", "tabifd", "table", "table3", "table3kt", "tablecopy", "tablefilter", "tablefilteri", "tablegpw", "tablei", "tableicopy", "tableigpw", "tableikt", "tableimix", "tablekt", "tablemix", "tableng", "tablera", "tableseg", "tableshuffle", "tableshufflei", "tablew", "tablewa", "tablewkt", "tablexkt", "tablexseg", "tabmorph", "tabmorpha", "tabmorphak", "tabmorphi", "tabplay", "tabrec", "tabrowlin", "tabsum", "tabw", "tabw_i", "tambourine", "tan", "tanh", "taninv", "taninv2", "tbvcf", "tempest", "tempo", "temposcal", "tempoval", "timedseq", "timeinstk", "timeinsts", "timek", "times", "tival", "tlineto", "tone", "tonek", "tonex", "tradsyn", "trandom", "transeg", "transegb", "transegr", "trcross", "trfilter", "trhighest", "trigger", "trigseq", "trim", "trim_i", "trirand", "trlowest", "trmix", "trscale", "trshift", "trsplit", "turnoff", "turnoff2", "turnon", "tvconv", "unirand", "unwrap", "upsamp", "urandom", "urd", "vactrol", "vadd", "vadd_i", "vaddv", "vaddv_i", "vaget", "valpass", "vaset", "vbap", "vbapg", "vbapgmove", "vbaplsinit", "vbapmove", "vbapz", "vbapzmove", "vcella", "vco", "vco2", "vco2ft", "vco2ift", "vco2init", "vcomb", "vcopy", "vcopy_i", "vdel_k", "vdelay", "vdelay3", "vdelayk", "vdelayx", "vdelayxq", "vdelayxs", "vdelayxw", "vdelayxwq", "vdelayxws", "vdivv", "vdivv_i", "vecdelay", "veloc", "vexp", "vexp_i", "vexpseg", "vexpv", "vexpv_i", "vibes", "vibr", "vibrato", "vincr", "vlimit", "vlinseg", "vlowres", "vmap", "vmirror", "vmult", "vmult_i", "vmultv", "vmultv_i", "voice", "vosim", "vphaseseg", "vport", "vpow", "vpow_i", "vpowv", "vpowv_i", "vpvoc", "vrandh", "vrandi", "vsubv", "vsubv_i", "vtaba", "vtabi", "vtabk", "vtable1k", "vtablea", "vtablei", "vtablek", "vtablewa", "vtablewi", "vtablewk", "vtabwa", "vtabwi", "vtabwk", "vwrap", "waveset", "websocket", "weibull", "wgbow", "wgbowedbar", "wgbrass", "wgclar", "wgflute", "wgpluck", "wgpluck2", "wguide1", "wguide2", "wiiconnect", "wiidata", "wiirange", "wiisend", "window", "wrap", "writescratch", "wterrain", "xadsr", "xin", "xout", "xscanmap", "xscans", "xscansmap", "xscanu", "xtratim", "xyscale", "zacl", "zakinit", "zamod", "zar", "zarg", "zaw", "zawm", "zdf_1pole", "zdf_1pole_mode", "zdf_2pole", "zdf_2pole_mode", "zdf_ladder", "zfilter2", "zir", "ziw", "ziwm", "zkcl", "zkmod", "zkr", "zkw", "zkwm"],
        n = ["array", "bformdec", "bformenc", "changed", "copy2ftab", "copy2ttab", "hrtfer", "ktableseg", "lentab", "maxtab", "mintab", "pop", "pop_f", "ptableiw", "push", "push_f", "scalet", "sndload", "soundout", "soundouts", "specaddm", "specdiff", "specdisp", "specfilt", "spechist", "specptrk", "specscal", "specsum", "spectrum", "stack", "sumtab", "tabgen", "tableiw", "tabmap", "tabmap_i", "tabslice", "tb0", "tb0_init", "tb1", "tb10", "tb10_init", "tb11", "tb11_init", "tb12", "tb12_init", "tb13", "tb13_init", "tb14", "tb14_init", "tb15", "tb15_init", "tb1_init", "tb2", "tb2_init", "tb3", "tb3_init", "tb4", "tb4_init", "tb5", "tb5_init", "tb6", "tb6_init", "tb7", "tb7_init", "tb8", "tb8_init", "tb9", "tb9_init", "vbap16", "vbap4", "vbap4move", "vbap8", "vbap8move", "xyin"];
    t = r.arrayToMap(t), n = r.arrayToMap(n), this.lineContinuations = [{
      token: "constant.character.escape.line-continuation.csound",
      regex: /\\$/
    }, this.pushRule({
      token: "constant.character.escape.line-continuation.csound",
      regex: /\\/,
      next: "line continuation"
    })], this.comments.push(this.lineContinuations), this.quotedStringContents.push(this.lineContinuations, {
      token: "invalid.illegal",
      regex: /[^"\\]*$/
    });
    var i = this.$rules.start;
    i.splice(1, 0, {
      token: ["text.csound", "entity.name.label.csound", "entity.punctuation.label.csound", "text.csound"],
      regex: /^([ \t]*)(\w+)(:)([ \t]+|$)/
    }), i.push(this.pushRule({
      token: "keyword.function.csound",
      regex: /\binstr\b/,
      next: "instrument numbers and identifiers"
    }), this.pushRule({
      token: "keyword.function.csound",
      regex: /\bopcode\b/,
      next: "after opcode keyword"
    }), {
      token: "keyword.other.csound",
      regex: /\bend(?:in|op)\b/
    }, {
      token: "variable.language.csound",
      regex: /\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\b/
    }, this.numbers, {
      token: "keyword.operator.csound",
      regex: "\\+=|-=|\\*=|/=|<<|>>|<=|>=|==|!=|&&|\\|\\||[~\xAC]|[=!+\\-*/^%&|<>#?:]"
    }, this.pushRule({
      token: "punctuation.definition.string.begin.csound",
      regex: /"/,
      next: "quoted string"
    }), this.pushRule({
      token: "punctuation.definition.string.begin.csound",
      regex: /{{/,
      next: "braced string"
    }), {
      token: "keyword.control.csound",
      regex: /\b(?:do|else(?:if)?|end(?:if|until)|fi|i(?:f|then)|kthen|od|r(?:ir)?eturn|then|until|while)\b/
    }, this.pushRule({
      token: "keyword.control.csound",
      regex: /\b[ik]?goto\b/,
      next: "goto before label"
    }), this.pushRule({
      token: "keyword.control.csound",
      regex: /\b(?:r(?:einit|igoto)|tigoto)\b/,
      next: "goto before label"
    }), this.pushRule({
      token: "keyword.control.csound",
      regex: /\bc(?:g|in?|k|nk?)goto\b/,
      next: ["goto before label", "goto before argument"]
    }), this.pushRule({
      token: "keyword.control.csound",
      regex: /\btimout\b/,
      next: ["goto before label", "goto before argument", "goto before argument"]
    }), this.pushRule({
      token: "keyword.control.csound",
      regex: /\bloop_[gl][et]\b/,
      next: ["goto before label", "goto before argument", "goto before argument", "goto before argument"]
    }), this.pushRule({
      token: "support.function.csound",
      regex: /\b(?:readscore|scoreline(?:_i)?)\b/,
      next: "Csound score opcode"
    }), this.pushRule({
      token: "support.function.csound",
      regex: /\bpyl?run[it]?\b(?!$)/,
      next: "Python opcode"
    }), this.pushRule({
      token: "support.function.csound",
      regex: /\blua_(?:exec|opdef)\b(?!$)/,
      next: "Lua opcode"
    }), {
      token: "support.variable.csound",
      regex: /\bp\d+\b/
    }, {
      regex: /\b([A-Z_a-z]\w*)(?:(:)([A-Za-z]))?\b/,
      onMatch: function onMatch(e, r, i, s) {
        var o = e.split(this.splitRegex),
            u = o[1],
            a;
        return t.hasOwnProperty(u) ? a = "support.function.csound" : n.hasOwnProperty(u) && (a = "invalid.deprecated.csound"), a ? o[2] ? [{
          type: a,
          value: u
        }, {
          type: "punctuation.type-annotation.csound",
          value: o[2]
        }, {
          type: "type-annotation.storage.type.csound",
          value: o[3]
        }] : a : "text.csound";
      }
    }), this.$rules["macro parameter value list"].splice(2, 0, {
      token: "punctuation.definition.string.begin.csound",
      regex: /{{/,
      next: "macro parameter value braced string"
    });
    var f = new o("csound-score-");
    this.addRules({
      "macro parameter value braced string": [{
        token: "constant.character.escape.csound",
        regex: /\\[#'()]/
      }, {
        token: "invalid.illegal.csound.csound",
        regex: /[#'()]/
      }, {
        token: "punctuation.definition.string.end.csound",
        regex: /}}/,
        next: "macro parameter value list"
      }, {
        defaultToken: "string.braced.csound"
      }],
      "instrument numbers and identifiers": [this.comments, {
        token: "entity.name.function.csound",
        regex: /\d+|[A-Z_a-z]\w*/
      }, this.popRule({
        token: "empty",
        regex: /$/
      })],
      "after opcode keyword": [this.comments, this.popRule({
        token: "empty",
        regex: /$/
      }), this.popRule({
        token: "entity.name.function.opcode.csound",
        regex: /[A-Z_a-z]\w*/,
        next: "opcode type signatures"
      })],
      "opcode type signatures": [this.comments, this.popRule({
        token: "empty",
        regex: /$/
      }), {
        token: "storage.type.csound",
        regex: /\b(?:0|[afijkKoOpPStV\[\]]+)/
      }],
      "quoted string": [this.popRule({
        token: "punctuation.definition.string.end.csound",
        regex: /"/
      }), this.quotedStringContents, {
        defaultToken: "string.quoted.csound"
      }],
      "braced string": [this.popRule({
        token: "punctuation.definition.string.end.csound",
        regex: /}}/
      }), this.bracedStringContents, {
        defaultToken: "string.braced.csound"
      }],
      "goto before argument": [this.popRule({
        token: "text.csound",
        regex: /,/
      }), i],
      "goto before label": [{
        token: "text.csound",
        regex: /\s+/
      }, this.comments, this.popRule({
        token: "entity.name.label.csound",
        regex: /\w+/
      }), this.popRule({
        token: "empty",
        regex: /(?!\w)/
      })],
      "Csound score opcode": [this.comments, {
        token: "punctuation.definition.string.begin.csound",
        regex: /{{/,
        next: f.embeddedRulePrefix + "start"
      }, this.popRule({
        token: "empty",
        regex: /$/
      })],
      "Python opcode": [this.comments, {
        token: "punctuation.definition.string.begin.csound",
        regex: /{{/,
        next: "python-start"
      }, this.popRule({
        token: "empty",
        regex: /$/
      })],
      "Lua opcode": [this.comments, {
        token: "punctuation.definition.string.begin.csound",
        regex: /{{/,
        next: "lua-start"
      }, this.popRule({
        token: "empty",
        regex: /$/
      })],
      "line continuation": [this.popRule({
        token: "empty",
        regex: /$/
      }), this.semicolonComments, {
        token: "invalid.illegal.csound",
        regex: /\S.*/
      }]
    });
    var l = [this.popRule({
      token: "punctuation.definition.string.end.csound",
      regex: /}}/
    })];
    this.embedRules(f.getRules(), f.embeddedRulePrefix, l), this.embedRules(a, "python-", l), this.embedRules(u, "lua-", l), this.normalizeRules();
  };

  i.inherits(f, s), t.CsoundOrchestraHighlightRules = f;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/csound_document_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/csound_orchestra_highlight_rules", "ace/mode/csound_score_highlight_rules", "ace/mode/html_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules,
      s = e("./csound_score_highlight_rules").CsoundScoreHighlightRules,
      o = e("./html_highlight_rules").HtmlHighlightRules,
      u = e("./text_highlight_rules").TextHighlightRules,
      a = function a() {
    var e = new i("csound-"),
        t = new s("csound-score-");
    this.$rules = {
      start: [{
        token: ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"],
        regex: /(<)(CsoundSynthesi[sz]er)(>)/,
        next: "synthesizer"
      }, {
        defaultToken: "text.csound-document"
      }],
      synthesizer: [{
        token: ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"],
        regex: "(</)(CsoundSynthesi[sz]er)(>)",
        next: "start"
      }, {
        token: ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"],
        regex: "(<)(CsInstruments)(>)",
        next: e.embeddedRulePrefix + "start"
      }, {
        token: ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"],
        regex: "(<)(CsScore)(>)",
        next: t.embeddedRulePrefix + "start"
      }, {
        token: ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"],
        regex: "(<)([Hh][Tt][Mm][Ll])(>)",
        next: "html-start"
      }]
    }, this.embedRules(e.getRules(), e.embeddedRulePrefix, [{
      token: ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"],
      regex: "(</)(CsInstruments)(>)",
      next: "synthesizer"
    }]), this.embedRules(t.getRules(), t.embeddedRulePrefix, [{
      token: ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"],
      regex: "(</)(CsScore)(>)",
      next: "synthesizer"
    }]), this.embedRules(o, "html-", [{
      token: ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"],
      regex: "(</)([Hh][Tt][Mm][Ll])(>)",
      next: "synthesizer"
    }]), this.normalizeRules();
  };

  r.inherits(a, u), t.CsoundDocumentHighlightRules = a;
}), ace.define("ace/mode/csound_document", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/csound_document_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./csound_document_highlight_rules").CsoundDocumentHighlightRules,
      o = function o() {
    this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.$id = "ace/mode/csound_document", this.snippetFileId = "ace/snippets/csound_document";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/csound_document"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-csound_orchestra.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-csound_orchestra.js ***!
  \*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/csound_preprocessor_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    this.embeddedRulePrefix = e === undefined ? "" : e, this.semicolonComments = {
      token: "comment.line.semicolon.csound",
      regex: ";.*$"
    }, this.comments = [{
      token: "punctuation.definition.comment.begin.csound",
      regex: "/\\*",
      push: [{
        token: "punctuation.definition.comment.end.csound",
        regex: "\\*/",
        next: "pop"
      }, {
        defaultToken: "comment.block.csound"
      }]
    }, {
      token: "comment.line.double-slash.csound",
      regex: "//.*$"
    }, this.semicolonComments], this.macroUses = [{
      token: ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"],
      regex: /(\$[A-Z_a-z]\w*\.?)(\()/,
      next: "macro parameter value list"
    }, {
      token: "entity.name.function.preprocessor.csound",
      regex: /\$[A-Z_a-z]\w*(?:\.|\b)/
    }], this.numbers = [{
      token: "constant.numeric.float.csound",
      regex: /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/
    }, {
      token: ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"],
      regex: /(0[Xx])([0-9A-Fa-f]+)/
    }, {
      token: "constant.numeric.integer.decimal.csound",
      regex: /\d+/
    }], this.bracedStringContents = [{
      token: "constant.character.escape.csound",
      regex: /\\(?:[\\abnrt"]|[0-7]{1,3})/
    }, {
      token: "constant.character.placeholder.csound",
      regex: /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/
    }, {
      token: "constant.character.escape.csound",
      regex: /%%/
    }], this.quotedStringContents = [this.macroUses, this.bracedStringContents];
    var t = [this.comments, {
      token: "keyword.preprocessor.csound",
      regex: /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#include/,
      push: [this.comments, {
        token: "string.csound",
        regex: /([^ \t])(?:.*?\1)/,
        next: "pop"
      }]
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#includestr/,
      push: [this.comments, {
        token: "string.csound",
        regex: /([^ \t])(?:.*?\1)/,
        next: "pop"
      }]
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#[ \t]*define/,
      next: "define directive"
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#(?:ifn?def|undef)\b/,
      next: "macro directive"
    }, this.macroUses];
    this.$rules = {
      start: t,
      "define directive": [this.comments, {
        token: "entity.name.function.preprocessor.csound",
        regex: /[A-Z_a-z]\w*/
      }, {
        token: "punctuation.definition.macro-parameter-name-list.begin.csound",
        regex: /\(/,
        next: "macro parameter name list"
      }, {
        token: "punctuation.definition.macro.begin.csound",
        regex: /#/,
        next: "macro body"
      }],
      "macro parameter name list": [{
        token: "variable.parameter.preprocessor.csound",
        regex: /[A-Z_a-z]\w*/
      }, {
        token: "punctuation.definition.macro-parameter-name-list.end.csound",
        regex: /\)/,
        next: "define directive"
      }],
      "macro body": [{
        token: "constant.character.escape.csound",
        regex: /\\#/
      }, {
        token: "punctuation.definition.macro.end.csound",
        regex: /#/,
        next: "start"
      }, t],
      "macro directive": [this.comments, {
        token: "entity.name.function.preprocessor.csound",
        regex: /[A-Z_a-z]\w*/,
        next: "start"
      }],
      "macro parameter value list": [{
        token: "punctuation.definition.macro-parameter-value-list.end.csound",
        regex: /\)/,
        next: "start"
      }, {
        token: "punctuation.definition.string.begin.csound",
        regex: /"/,
        next: "macro parameter value quoted string"
      }, this.pushRule({
        token: "punctuation.macro-parameter-value-parenthetical.begin.csound",
        regex: /\(/,
        next: "macro parameter value parenthetical"
      }), {
        token: "punctuation.macro-parameter-value-separator.csound",
        regex: "[#']"
      }],
      "macro parameter value quoted string": [{
        token: "constant.character.escape.csound",
        regex: /\\[#'()]/
      }, {
        token: "invalid.illegal.csound",
        regex: /[#'()]/
      }, {
        token: "punctuation.definition.string.end.csound",
        regex: /"/,
        next: "macro parameter value list"
      }, this.quotedStringContents, {
        defaultToken: "string.quoted.csound"
      }],
      "macro parameter value parenthetical": [{
        token: "constant.character.escape.csound",
        regex: /\\\)/
      }, this.popRule({
        token: "punctuation.macro-parameter-value-parenthetical.end.csound",
        regex: /\)/
      }), this.pushRule({
        token: "punctuation.macro-parameter-value-parenthetical.begin.csound",
        regex: /\(/,
        next: "macro parameter value parenthetical"
      }), t]
    };
  };

  r.inherits(s, i), function () {
    this.pushRule = function (e) {
      if (Array.isArray(e.next)) for (var t = 0; t < e.next.length; t++) {
        e.next[t] = this.embeddedRulePrefix + e.next[t];
      }
      return {
        regex: e.regex,
        onMatch: function onMatch(t, n, r, i) {
          r.length === 0 && r.push(n);
          if (Array.isArray(e.next)) for (var s = 0; s < e.next.length; s++) {
            r.push(e.next[s]);
          } else r.push(e.next);
          return this.next = r[r.length - 1], e.token;
        },

        get next() {
          return Array.isArray(e.next) ? e.next[e.next.length - 1] : e.next;
        },

        set next(t) {
          Array.isArray(e.next) || (e.next = t);
        },

        get token() {
          return e.token;
        }

      };
    }, this.popRule = function (e) {
      return e.next && (e.next = this.embeddedRulePrefix + e.next), {
        regex: e.regex,
        onMatch: function onMatch(t, n, r, i) {
          return r.pop(), e.next ? (r.push(e.next), this.next = r[r.length - 1]) : this.next = r.length > 1 ? r[r.length - 1] : r.pop(), e.token;
        }
      };
    };
  }.call(s.prototype), t.CsoundPreprocessorHighlightRules = s;
}), ace.define("ace/mode/csound_score_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/csound_preprocessor_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules,
      s = function s(e) {
    i.call(this, e), this.quotedStringContents.push({
      token: "invalid.illegal.csound-score",
      regex: /[^"]*$/
    });
    var t = this.$rules.start;
    t.push({
      token: "keyword.control.csound-score",
      regex: /[abCdefiqstvxy]/
    }, {
      token: "invalid.illegal.csound-score",
      regex: /w/
    }, {
      token: "constant.numeric.language.csound-score",
      regex: /z/
    }, {
      token: ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"],
      regex: /([nNpP][pP])(\d+)/
    }, {
      token: "keyword.other.csound-score",
      regex: /[mn]/,
      push: [{
        token: "empty",
        regex: /$/,
        next: "pop"
      }, this.comments, {
        token: "entity.name.label.csound-score",
        regex: /[A-Z_a-z]\w*/
      }]
    }, {
      token: "keyword.preprocessor.csound-score",
      regex: /r\b/,
      next: "repeat section"
    }, this.numbers, {
      token: "keyword.operator.csound-score",
      regex: "[!+\\-*/^%&|<>#~.]"
    }, this.pushRule({
      token: "punctuation.definition.string.begin.csound-score",
      regex: /"/,
      next: "quoted string"
    }), this.pushRule({
      token: "punctuation.braced-loop.begin.csound-score",
      regex: /{/,
      next: "loop after left brace"
    })), this.addRules({
      "repeat section": [{
        token: "empty",
        regex: /$/,
        next: "start"
      }, this.comments, {
        token: "constant.numeric.integer.decimal.csound-score",
        regex: /\d+/,
        next: "repeat section before label"
      }],
      "repeat section before label": [{
        token: "empty",
        regex: /$/,
        next: "start"
      }, this.comments, {
        token: "entity.name.label.csound-score",
        regex: /[A-Z_a-z]\w*/,
        next: "start"
      }],
      "quoted string": [this.popRule({
        token: "punctuation.definition.string.end.csound-score",
        regex: /"/
      }), this.quotedStringContents, {
        defaultToken: "string.quoted.csound-score"
      }],
      "loop after left brace": [this.popRule({
        token: "constant.numeric.integer.decimal.csound-score",
        regex: /\d+/,
        next: "loop after repeat count"
      }), this.comments, {
        token: "invalid.illegal.csound",
        regex: /\S.*/
      }],
      "loop after repeat count": [this.popRule({
        token: "entity.name.function.preprocessor.csound-score",
        regex: /[A-Z_a-z]\w*\b/,
        next: "loop after macro name"
      }), this.comments, {
        token: "invalid.illegal.csound",
        regex: /\S.*/
      }],
      "loop after macro name": [t, this.popRule({
        token: "punctuation.braced-loop.end.csound-score",
        regex: /}/
      })]
    }), this.normalizeRules();
  };

  r.inherits(s, i), t.CsoundScoreHighlightRules = s;
}), ace.define("ace/mode/lua_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",
        t = "true|false|nil|_G|_VERSION",
        n = "string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",
        r = "string|package|os|io|math|debug|table|coroutine",
        i = "setn|foreach|foreachi|gcinfo|log10|maxn",
        s = this.createKeywordMapper({
      keyword: e,
      "support.function": n,
      "keyword.deprecated": i,
      "constant.library": r,
      "constant.language": t,
      "variable.language": "self"
    }, "identifier"),
        o = "(?:(?:[1-9]\\d*)|(?:0))",
        u = "(?:0[xX][\\dA-Fa-f]+)",
        a = "(?:" + o + "|" + u + ")",
        f = "(?:\\.\\d+)",
        l = "(?:\\d+)",
        c = "(?:(?:" + l + "?" + f + ")|(?:" + l + "\\.))",
        h = "(?:" + c + ")";
    this.$rules = {
      start: [{
        stateName: "bracketedComment",
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.length - 2, t), "comment";
        },
        regex: /\-\-\[=*\[/,
        next: [{
          onMatch: function onMatch(e, t, n) {
            return e.length == n[1] ? (n.shift(), n.shift(), this.next = n.shift()) : this.next = "", "comment";
          },
          regex: /\]=*\]/,
          next: "start"
        }, {
          defaultToken: "comment"
        }]
      }, {
        token: "comment",
        regex: "\\-\\-.*$"
      }, {
        stateName: "bracketedString",
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.length, t), "string.start";
        },
        regex: /\[=*\[/,
        next: [{
          onMatch: function onMatch(e, t, n) {
            return e.length == n[1] ? (n.shift(), n.shift(), this.next = n.shift()) : this.next = "", "string.end";
          },
          regex: /\]=*\]/,
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: '"(?:[^\\\\]|\\\\.)*?"'
      }, {
        token: "string",
        regex: "'(?:[^\\\\]|\\\\.)*?'"
      }, {
        token: "constant.numeric",
        regex: h
      }, {
        token: "constant.numeric",
        regex: a + "\\b"
      }, {
        token: s,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text",
        regex: "\\s+|\\w+"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.LuaHighlightRules = s;
}), ace.define("ace/mode/python_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal",
        t = "True|False|None|NotImplemented|Ellipsis|__debug__",
        n = "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes",
        r = this.createKeywordMapper({
      "invalid.deprecated": "debugger",
      "support.function": n,
      "variable.language": "self|cls",
      "constant.language": t,
      keyword: e
    }, "identifier"),
        i = "[uU]?",
        s = "[rR]",
        o = "[fF]",
        u = "(?:[rR][fF]|[fF][rR])",
        a = "(?:(?:[1-9]\\d*)|(?:0))",
        f = "(?:0[oO]?[0-7]+)",
        l = "(?:0[xX][\\dA-Fa-f]+)",
        c = "(?:0[bB][01]+)",
        h = "(?:" + a + "|" + f + "|" + l + "|" + c + ")",
        p = "(?:[eE][+-]?\\d+)",
        d = "(?:\\.\\d+)",
        v = "(?:\\d+)",
        m = "(?:(?:" + v + "?" + d + ")|(?:" + v + "\\.))",
        g = "(?:(?:" + m + "|" + v + ")" + p + ")",
        y = "(?:" + g + "|" + m + ")",
        b = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "string",
        regex: i + '"{3}',
        next: "qqstring3"
      }, {
        token: "string",
        regex: i + '"(?=.)',
        next: "qqstring"
      }, {
        token: "string",
        regex: i + "'{3}",
        next: "qstring3"
      }, {
        token: "string",
        regex: i + "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: s + '"{3}',
        next: "rawqqstring3"
      }, {
        token: "string",
        regex: s + '"(?=.)',
        next: "rawqqstring"
      }, {
        token: "string",
        regex: s + "'{3}",
        next: "rawqstring3"
      }, {
        token: "string",
        regex: s + "'(?=.)",
        next: "rawqstring"
      }, {
        token: "string",
        regex: o + '"{3}',
        next: "fqqstring3"
      }, {
        token: "string",
        regex: o + '"(?=.)',
        next: "fqqstring"
      }, {
        token: "string",
        regex: o + "'{3}",
        next: "fqstring3"
      }, {
        token: "string",
        regex: o + "'(?=.)",
        next: "fqstring"
      }, {
        token: "string",
        regex: u + '"{3}',
        next: "rfqqstring3"
      }, {
        token: "string",
        regex: u + '"(?=.)',
        next: "rfqqstring"
      }, {
        token: "string",
        regex: u + "'{3}",
        next: "rfqstring3"
      }, {
        token: "string",
        regex: u + "'(?=.)",
        next: "rfqstring"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "punctuation",
        regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        include: "constants"
      }],
      qqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqqstring3: [{
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqstring3: [{
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rawqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rawqstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      fqqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "fqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqqstring3: [{
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqstring3: [{
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rfqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqstring: [{
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstringParRules: [{
        token: "paren.lparen",
        regex: "[\\[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)]"
      }, {
        token: "string",
        regex: "\\s+"
      }, {
        token: "string",
        regex: "'[^']*'"
      }, {
        token: "string",
        regex: '"[^"]*"'
      }, {
        token: "function.support",
        regex: "(!s|!r|!a)"
      }, {
        include: "constants"
      }, {
        token: "paren.rparen",
        regex: "}",
        next: "pop"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }],
      constants: [{
        token: "constant.numeric",
        regex: "(?:" + y + "|\\d+)[jJ]\\b"
      }, {
        token: "constant.numeric",
        regex: y
      }, {
        token: "constant.numeric",
        regex: h + "[lL]\\b"
      }, {
        token: "constant.numeric",
        regex: h + "\\b"
      }, {
        token: ["punctuation", "function.support"],
        regex: "(\\.)([a-zA-Z_]+)\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.PythonHighlightRules = s;
}), ace.define("ace/mode/csound_orchestra_highlight_rules", ["require", "exports", "module", "ace/lib/lang", "ace/lib/oop", "ace/mode/csound_preprocessor_highlight_rules", "ace/mode/csound_score_highlight_rules", "ace/mode/lua_highlight_rules", "ace/mode/python_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/lang"),
      i = e("../lib/oop"),
      s = e("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules,
      o = e("./csound_score_highlight_rules").CsoundScoreHighlightRules,
      u = e("./lua_highlight_rules").LuaHighlightRules,
      a = e("./python_highlight_rules").PythonHighlightRules,
      f = function f(e) {
    s.call(this, e);
    var t = ["ATSadd", "ATSaddnz", "ATSbufread", "ATScross", "ATSinfo", "ATSinterpread", "ATSpartialtap", "ATSread", "ATSreadnz", "ATSsinnoi", "FLbox", "FLbutBank", "FLbutton", "FLcloseButton", "FLcolor", "FLcolor2", "FLcount", "FLexecButton", "FLgetsnap", "FLgroup", "FLgroupEnd", "FLgroup_end", "FLhide", "FLhvsBox", "FLhvsBoxSetValue", "FLjoy", "FLkeyIn", "FLknob", "FLlabel", "FLloadsnap", "FLmouse", "FLpack", "FLpackEnd", "FLpack_end", "FLpanel", "FLpanelEnd", "FLpanel_end", "FLprintk", "FLprintk2", "FLroller", "FLrun", "FLsavesnap", "FLscroll", "FLscrollEnd", "FLscroll_end", "FLsetAlign", "FLsetBox", "FLsetColor", "FLsetColor2", "FLsetFont", "FLsetPosition", "FLsetSize", "FLsetSnapGroup", "FLsetText", "FLsetTextColor", "FLsetTextSize", "FLsetTextType", "FLsetVal", "FLsetVal_i", "FLsetVali", "FLsetsnap", "FLshow", "FLslidBnk", "FLslidBnk2", "FLslidBnk2Set", "FLslidBnk2Setk", "FLslidBnkGetHandle", "FLslidBnkSet", "FLslidBnkSetk", "FLslider", "FLtabs", "FLtabsEnd", "FLtabs_end", "FLtext", "FLupdate", "FLvalue", "FLvkeybd", "FLvslidBnk", "FLvslidBnk2", "FLxyin", "JackoAudioIn", "JackoAudioInConnect", "JackoAudioOut", "JackoAudioOutConnect", "JackoFreewheel", "JackoInfo", "JackoInit", "JackoMidiInConnect", "JackoMidiOut", "JackoMidiOutConnect", "JackoNoteOut", "JackoOn", "JackoTransport", "K35_hpf", "K35_lpf", "MixerClear", "MixerGetLevel", "MixerReceive", "MixerSend", "MixerSetLevel", "MixerSetLevel_i", "OSCbundle", "OSCcount", "OSCinit", "OSCinitM", "OSClisten", "OSCraw", "OSCsend", "OSCsend_lo", "S", "STKBandedWG", "STKBeeThree", "STKBlowBotl", "STKBlowHole", "STKBowed", "STKBrass", "STKClarinet", "STKDrummer", "STKFMVoices", "STKFlute", "STKHevyMetl", "STKMandolin", "STKModalBar", "STKMoog", "STKPercFlut", "STKPlucked", "STKResonate", "STKRhodey", "STKSaxofony", "STKShakers", "STKSimple", "STKSitar", "STKStifKarp", "STKTubeBell", "STKVoicForm", "STKWhistle", "STKWurley", "a", "abs", "active", "adsr", "adsyn", "adsynt", "adsynt2", "aftouch", "alpass", "alwayson", "ampdb", "ampdbfs", "ampmidi", "ampmidicurve", "ampmidid", "areson", "aresonk", "atone", "atonek", "atonex", "babo", "balance", "balance2", "bamboo", "barmodel", "bbcutm", "bbcuts", "beadsynt", "beosc", "betarand", "bexprnd", "bformdec1", "bformenc1", "binit", "biquad", "biquada", "birnd", "bpf", "bpfcos", "bqrez", "butbp", "butbr", "buthp", "butlp", "butterbp", "butterbr", "butterhp", "butterlp", "button", "buzz", "c2r", "cabasa", "cauchy", "cauchyi", "cbrt", "ceil", "cell", "cent", "centroid", "ceps", "cepsinv", "chanctrl", "changed2", "chani", "chano", "chebyshevpoly", "checkbox", "chn_S", "chn_a", "chn_k", "chnclear", "chnexport", "chnget", "chngeta", "chngeti", "chngetk", "chngetks", "chngets", "chnmix", "chnparams", "chnset", "chnseta", "chnseti", "chnsetk", "chnsetks", "chnsets", "chuap", "clear", "clfilt", "clip", "clockoff", "clockon", "cmp", "cmplxprod", "comb", "combinv", "compilecsd", "compileorc", "compilestr", "compress", "compress2", "connect", "control", "convle", "convolve", "copya2ftab", "copyf2array", "cos", "cosh", "cosinv", "cosseg", "cossegb", "cossegr", "cps2pch", "cpsmidi", "cpsmidib", "cpsmidinn", "cpsoct", "cpspch", "cpstmid", "cpstun", "cpstuni", "cpsxpch", "cpumeter", "cpuprc", "cross2", "crossfm", "crossfmi", "crossfmpm", "crossfmpmi", "crosspm", "crosspmi", "crunch", "ctlchn", "ctrl14", "ctrl21", "ctrl7", "ctrlinit", "cuserrnd", "dam", "date", "dates", "db", "dbamp", "dbfsamp", "dcblock", "dcblock2", "dconv", "dct", "dctinv", "deinterleave", "delay", "delay1", "delayk", "delayr", "delayw", "deltap", "deltap3", "deltapi", "deltapn", "deltapx", "deltapxw", "denorm", "diff", "diode_ladder", "directory", "diskgrain", "diskin", "diskin2", "dispfft", "display", "distort", "distort1", "divz", "doppler", "dot", "downsamp", "dripwater", "dssiactivate", "dssiaudio", "dssictls", "dssiinit", "dssilist", "dumpk", "dumpk2", "dumpk3", "dumpk4", "duserrnd", "dust", "dust2", "envlpx", "envlpxr", "ephasor", "eqfil", "evalstr", "event", "event_i", "exciter", "exitnow", "exp", "expcurve", "expon", "exprand", "exprandi", "expseg", "expsega", "expsegb", "expsegba", "expsegr", "fareylen", "fareyleni", "faustaudio", "faustcompile", "faustctl", "faustdsp", "faustgen", "faustplay", "fft", "fftinv", "ficlose", "filebit", "filelen", "filenchnls", "filepeak", "filescal", "filesr", "filevalid", "fillarray", "filter2", "fin", "fini", "fink", "fiopen", "flanger", "flashtxt", "flooper", "flooper2", "floor", "fluidAllOut", "fluidCCi", "fluidCCk", "fluidControl", "fluidEngine", "fluidInfo", "fluidLoad", "fluidNote", "fluidOut", "fluidProgramSelect", "fluidSetInterpMethod", "fmanal", "fmax", "fmb3", "fmbell", "fmin", "fmmetal", "fmod", "fmpercfl", "fmrhode", "fmvoice", "fmwurlie", "fof", "fof2", "fofilter", "fog", "fold", "follow", "follow2", "foscil", "foscili", "fout", "fouti", "foutir", "foutk", "fprintks", "fprints", "frac", "fractalnoise", "framebuffer", "freeverb", "ftaudio", "ftchnls", "ftconv", "ftcps", "ftexists", "ftfree", "ftgen", "ftgenonce", "ftgentmp", "ftlen", "ftload", "ftloadk", "ftlptim", "ftmorf", "ftom", "ftprint", "ftresize", "ftresizei", "ftsamplebank", "ftsave", "ftsavek", "ftslice", "ftsr", "gain", "gainslider", "gauss", "gaussi", "gausstrig", "gbuzz", "genarray", "genarray_i", "gendy", "gendyc", "gendyx", "getcfg", "getcol", "getftargs", "getrow", "getrowlin", "getseed", "gogobel", "grain", "grain2", "grain3", "granule", "gtf", "guiro", "harmon", "harmon2", "harmon3", "harmon4", "hdf5read", "hdf5write", "hilbert", "hilbert2", "hrtfearly", "hrtfmove", "hrtfmove2", "hrtfreverb", "hrtfstat", "hsboscil", "hvs1", "hvs2", "hvs3", "hypot", "i", "ihold", "imagecreate", "imagefree", "imagegetpixel", "imageload", "imagesave", "imagesetpixel", "imagesize", "in", "in32", "inch", "inh", "init", "initc14", "initc21", "initc7", "inleta", "inletf", "inletk", "inletkid", "inletv", "ino", "inq", "inrg", "ins", "insglobal", "insremot", "int", "integ", "interleave", "interp", "invalue", "inx", "inz", "jacktransport", "jitter", "jitter2", "joystick", "jspline", "k", "la_i_add_mc", "la_i_add_mr", "la_i_add_vc", "la_i_add_vr", "la_i_assign_mc", "la_i_assign_mr", "la_i_assign_t", "la_i_assign_vc", "la_i_assign_vr", "la_i_conjugate_mc", "la_i_conjugate_mr", "la_i_conjugate_vc", "la_i_conjugate_vr", "la_i_distance_vc", "la_i_distance_vr", "la_i_divide_mc", "la_i_divide_mr", "la_i_divide_vc", "la_i_divide_vr", "la_i_dot_mc", "la_i_dot_mc_vc", "la_i_dot_mr", "la_i_dot_mr_vr", "la_i_dot_vc", "la_i_dot_vr", "la_i_get_mc", "la_i_get_mr", "la_i_get_vc", "la_i_get_vr", "la_i_invert_mc", "la_i_invert_mr", "la_i_lower_solve_mc", "la_i_lower_solve_mr", "la_i_lu_det_mc", "la_i_lu_det_mr", "la_i_lu_factor_mc", "la_i_lu_factor_mr", "la_i_lu_solve_mc", "la_i_lu_solve_mr", "la_i_mc_create", "la_i_mc_set", "la_i_mr_create", "la_i_mr_set", "la_i_multiply_mc", "la_i_multiply_mr", "la_i_multiply_vc", "la_i_multiply_vr", "la_i_norm1_mc", "la_i_norm1_mr", "la_i_norm1_vc", "la_i_norm1_vr", "la_i_norm_euclid_mc", "la_i_norm_euclid_mr", "la_i_norm_euclid_vc", "la_i_norm_euclid_vr", "la_i_norm_inf_mc", "la_i_norm_inf_mr", "la_i_norm_inf_vc", "la_i_norm_inf_vr", "la_i_norm_max_mc", "la_i_norm_max_mr", "la_i_print_mc", "la_i_print_mr", "la_i_print_vc", "la_i_print_vr", "la_i_qr_eigen_mc", "la_i_qr_eigen_mr", "la_i_qr_factor_mc", "la_i_qr_factor_mr", "la_i_qr_sym_eigen_mc", "la_i_qr_sym_eigen_mr", "la_i_random_mc", "la_i_random_mr", "la_i_random_vc", "la_i_random_vr", "la_i_size_mc", "la_i_size_mr", "la_i_size_vc", "la_i_size_vr", "la_i_subtract_mc", "la_i_subtract_mr", "la_i_subtract_vc", "la_i_subtract_vr", "la_i_t_assign", "la_i_trace_mc", "la_i_trace_mr", "la_i_transpose_mc", "la_i_transpose_mr", "la_i_upper_solve_mc", "la_i_upper_solve_mr", "la_i_vc_create", "la_i_vc_set", "la_i_vr_create", "la_i_vr_set", "la_k_a_assign", "la_k_add_mc", "la_k_add_mr", "la_k_add_vc", "la_k_add_vr", "la_k_assign_a", "la_k_assign_f", "la_k_assign_mc", "la_k_assign_mr", "la_k_assign_t", "la_k_assign_vc", "la_k_assign_vr", "la_k_conjugate_mc", "la_k_conjugate_mr", "la_k_conjugate_vc", "la_k_conjugate_vr", "la_k_current_f", "la_k_current_vr", "la_k_distance_vc", "la_k_distance_vr", "la_k_divide_mc", "la_k_divide_mr", "la_k_divide_vc", "la_k_divide_vr", "la_k_dot_mc", "la_k_dot_mc_vc", "la_k_dot_mr", "la_k_dot_mr_vr", "la_k_dot_vc", "la_k_dot_vr", "la_k_f_assign", "la_k_get_mc", "la_k_get_mr", "la_k_get_vc", "la_k_get_vr", "la_k_invert_mc", "la_k_invert_mr", "la_k_lower_solve_mc", "la_k_lower_solve_mr", "la_k_lu_det_mc", "la_k_lu_det_mr", "la_k_lu_factor_mc", "la_k_lu_factor_mr", "la_k_lu_solve_mc", "la_k_lu_solve_mr", "la_k_mc_set", "la_k_mr_set", "la_k_multiply_mc", "la_k_multiply_mr", "la_k_multiply_vc", "la_k_multiply_vr", "la_k_norm1_mc", "la_k_norm1_mr", "la_k_norm1_vc", "la_k_norm1_vr", "la_k_norm_euclid_mc", "la_k_norm_euclid_mr", "la_k_norm_euclid_vc", "la_k_norm_euclid_vr", "la_k_norm_inf_mc", "la_k_norm_inf_mr", "la_k_norm_inf_vc", "la_k_norm_inf_vr", "la_k_norm_max_mc", "la_k_norm_max_mr", "la_k_qr_eigen_mc", "la_k_qr_eigen_mr", "la_k_qr_factor_mc", "la_k_qr_factor_mr", "la_k_qr_sym_eigen_mc", "la_k_qr_sym_eigen_mr", "la_k_random_mc", "la_k_random_mr", "la_k_random_vc", "la_k_random_vr", "la_k_subtract_mc", "la_k_subtract_mr", "la_k_subtract_vc", "la_k_subtract_vr", "la_k_t_assign", "la_k_trace_mc", "la_k_trace_mr", "la_k_upper_solve_mc", "la_k_upper_solve_mr", "la_k_vc_set", "la_k_vr_set", "lastcycle", "lenarray", "lfo", "limit", "limit1", "lincos", "line", "linen", "linenr", "lineto", "link_beat_force", "link_beat_get", "link_beat_request", "link_create", "link_enable", "link_is_enabled", "link_metro", "link_peers", "link_tempo_get", "link_tempo_set", "linlin", "linrand", "linseg", "linsegb", "linsegr", "liveconv", "locsend", "locsig", "log", "log10", "log2", "logbtwo", "logcurve", "loopseg", "loopsegp", "looptseg", "loopxseg", "lorenz", "loscil", "loscil3", "loscil3phs", "loscilphs", "loscilx", "lowpass2", "lowres", "lowresx", "lpf18", "lpform", "lpfreson", "lphasor", "lpinterp", "lposcil", "lposcil3", "lposcila", "lposcilsa", "lposcilsa2", "lpread", "lpreson", "lpshold", "lpsholdp", "lpslot", "lua_exec", "lua_iaopcall", "lua_iaopcall_off", "lua_ikopcall", "lua_ikopcall_off", "lua_iopcall", "lua_iopcall_off", "lua_opdef", "mac", "maca", "madsr", "mags", "mandel", "mandol", "maparray", "maparray_i", "marimba", "massign", "max", "max_k", "maxabs", "maxabsaccum", "maxaccum", "maxalloc", "maxarray", "mclock", "mdelay", "median", "mediank", "metro", "metro2", "mfb", "midglobal", "midiarp", "midic14", "midic21", "midic7", "midichannelaftertouch", "midichn", "midicontrolchange", "midictrl", "mididefault", "midifilestatus", "midiin", "midinoteoff", "midinoteoncps", "midinoteonkey", "midinoteonoct", "midinoteonpch", "midion", "midion2", "midiout", "midiout_i", "midipgm", "midipitchbend", "midipolyaftertouch", "midiprogramchange", "miditempo", "midremot", "min", "minabs", "minabsaccum", "minaccum", "minarray", "mincer", "mirror", "mode", "modmatrix", "monitor", "moog", "moogladder", "moogladder2", "moogvcf", "moogvcf2", "moscil", "mp3bitrate", "mp3in", "mp3len", "mp3nchnls", "mp3scal", "mp3sr", "mpulse", "mrtmsg", "mtof", "mton", "multitap", "mute", "mvchpf", "mvclpf1", "mvclpf2", "mvclpf3", "mvclpf4", "mxadsr", "nchnls_hw", "nestedap", "nlalp", "nlfilt", "nlfilt2", "noise", "noteoff", "noteon", "noteondur", "noteondur2", "notnum", "nreverb", "nrpn", "nsamp", "nstance", "nstrnum", "nstrstr", "ntof", "ntom", "ntrpol", "nxtpow2", "octave", "octcps", "octmidi", "octmidib", "octmidinn", "octpch", "olabuffer", "oscbnk", "oscil", "oscil1", "oscil1i", "oscil3", "oscili", "oscilikt", "osciliktp", "oscilikts", "osciln", "oscils", "oscilx", "out", "out32", "outc", "outch", "outh", "outiat", "outic", "outic14", "outipat", "outipb", "outipc", "outkat", "outkc", "outkc14", "outkpat", "outkpb", "outkpc", "outleta", "outletf", "outletk", "outletkid", "outletv", "outo", "outq", "outq1", "outq2", "outq3", "outq4", "outrg", "outs", "outs1", "outs2", "outvalue", "outx", "outz", "p", "p5gconnect", "p5gdata", "pan", "pan2", "pareq", "part2txt", "partials", "partikkel", "partikkelget", "partikkelset", "partikkelsync", "passign", "paulstretch", "pcauchy", "pchbend", "pchmidi", "pchmidib", "pchmidinn", "pchoct", "pchtom", "pconvolve", "pcount", "pdclip", "pdhalf", "pdhalfy", "peak", "pgmassign", "pgmchn", "phaser1", "phaser2", "phasor", "phasorbnk", "phs", "pindex", "pinker", "pinkish", "pitch", "pitchac", "pitchamdf", "planet", "platerev", "plltrack", "pluck", "poisson", "pol2rect", "polyaft", "polynomial", "port", "portk", "poscil", "poscil3", "pow", "powershape", "powoftwo", "pows", "prealloc", "prepiano", "print", "print_type", "printarray", "printf", "printf_i", "printk", "printk2", "printks", "printks2", "prints", "product", "pset", "ptable", "ptable3", "ptablei", "ptablew", "ptrack", "puts", "pvadd", "pvbufread", "pvcross", "pvinterp", "pvoc", "pvread", "pvs2array", "pvs2tab", "pvsadsyn", "pvsanal", "pvsarp", "pvsbandp", "pvsbandr", "pvsbin", "pvsblur", "pvsbuffer", "pvsbufread", "pvsbufread2", "pvscale", "pvscent", "pvsceps", "pvscross", "pvsdemix", "pvsdiskin", "pvsdisp", "pvsenvftw", "pvsfilter", "pvsfread", "pvsfreeze", "pvsfromarray", "pvsftr", "pvsftw", "pvsfwrite", "pvsgain", "pvshift", "pvsifd", "pvsin", "pvsinfo", "pvsinit", "pvslock", "pvsmaska", "pvsmix", "pvsmooth", "pvsmorph", "pvsosc", "pvsout", "pvspitch", "pvstanal", "pvstencil", "pvstrace", "pvsvoc", "pvswarp", "pvsynth", "pwd", "pyassign", "pyassigni", "pyassignt", "pycall", "pycall1", "pycall1i", "pycall1t", "pycall2", "pycall2i", "pycall2t", "pycall3", "pycall3i", "pycall3t", "pycall4", "pycall4i", "pycall4t", "pycall5", "pycall5i", "pycall5t", "pycall6", "pycall6i", "pycall6t", "pycall7", "pycall7i", "pycall7t", "pycall8", "pycall8i", "pycall8t", "pycalli", "pycalln", "pycallni", "pycallt", "pyeval", "pyevali", "pyevalt", "pyexec", "pyexeci", "pyexect", "pyinit", "pylassign", "pylassigni", "pylassignt", "pylcall", "pylcall1", "pylcall1i", "pylcall1t", "pylcall2", "pylcall2i", "pylcall2t", "pylcall3", "pylcall3i", "pylcall3t", "pylcall4", "pylcall4i", "pylcall4t", "pylcall5", "pylcall5i", "pylcall5t", "pylcall6", "pylcall6i", "pylcall6t", "pylcall7", "pylcall7i", "pylcall7t", "pylcall8", "pylcall8i", "pylcall8t", "pylcalli", "pylcalln", "pylcallni", "pylcallt", "pyleval", "pylevali", "pylevalt", "pylexec", "pylexeci", "pylexect", "pylrun", "pylruni", "pylrunt", "pyrun", "pyruni", "pyrunt", "qinf", "qnan", "r2c", "rand", "randc", "randh", "randi", "random", "randomh", "randomi", "rbjeq", "readclock", "readf", "readfi", "readk", "readk2", "readk3", "readk4", "readks", "readscore", "readscratch", "rect2pol", "release", "remoteport", "remove", "repluck", "reshapearray", "reson", "resonk", "resonr", "resonx", "resonxk", "resony", "resonz", "resyn", "reverb", "reverb2", "reverbsc", "rewindscore", "rezzy", "rfft", "rifft", "rms", "rnd", "rnd31", "round", "rspline", "rtclock", "s16b14", "s32b14", "samphold", "sandpaper", "sc_lag", "sc_lagud", "sc_phasor", "sc_trig", "scale", "scalearray", "scanhammer", "scans", "scantable", "scanu", "schedkwhen", "schedkwhennamed", "schedule", "schedulek", "schedwhen", "scoreline", "scoreline_i", "seed", "sekere", "select", "semitone", "sense", "sensekey", "seqtime", "seqtime2", "serialBegin", "serialEnd", "serialFlush", "serialPrint", "serialRead", "serialWrite", "serialWrite_i", "setcol", "setctrl", "setksmps", "setrow", "setscorepos", "sfilist", "sfinstr", "sfinstr3", "sfinstr3m", "sfinstrm", "sfload", "sflooper", "sfpassign", "sfplay", "sfplay3", "sfplay3m", "sfplaym", "sfplist", "sfpreset", "shaker", "shiftin", "shiftout", "signum", "sin", "sinh", "sininv", "sinsyn", "sleighbells", "slicearray", "slicearray_i", "slider16", "slider16f", "slider16table", "slider16tablef", "slider32", "slider32f", "slider32table", "slider32tablef", "slider64", "slider64f", "slider64table", "slider64tablef", "slider8", "slider8f", "slider8table", "slider8tablef", "sliderKawai", "sndloop", "sndwarp", "sndwarpst", "sockrecv", "sockrecvs", "socksend", "socksends", "sorta", "sortd", "soundin", "space", "spat3d", "spat3di", "spat3dt", "spdist", "splitrig", "sprintf", "sprintfk", "spsend", "sqrt", "squinewave", "statevar", "stix", "strcat", "strcatk", "strchar", "strchark", "strcmp", "strcmpk", "strcpy", "strcpyk", "strecv", "streson", "strfromurl", "strget", "strindex", "strindexk", "string2array", "strlen", "strlenk", "strlower", "strlowerk", "strrindex", "strrindexk", "strset", "strstrip", "strsub", "strsubk", "strtod", "strtodk", "strtol", "strtolk", "strupper", "strupperk", "stsend", "subinstr", "subinstrinit", "sum", "sumarray", "svfilter", "syncgrain", "syncloop", "syncphasor", "system", "system_i", "tab", "tab2array", "tab2pvs", "tab_i", "tabifd", "table", "table3", "table3kt", "tablecopy", "tablefilter", "tablefilteri", "tablegpw", "tablei", "tableicopy", "tableigpw", "tableikt", "tableimix", "tablekt", "tablemix", "tableng", "tablera", "tableseg", "tableshuffle", "tableshufflei", "tablew", "tablewa", "tablewkt", "tablexkt", "tablexseg", "tabmorph", "tabmorpha", "tabmorphak", "tabmorphi", "tabplay", "tabrec", "tabrowlin", "tabsum", "tabw", "tabw_i", "tambourine", "tan", "tanh", "taninv", "taninv2", "tbvcf", "tempest", "tempo", "temposcal", "tempoval", "timedseq", "timeinstk", "timeinsts", "timek", "times", "tival", "tlineto", "tone", "tonek", "tonex", "tradsyn", "trandom", "transeg", "transegb", "transegr", "trcross", "trfilter", "trhighest", "trigger", "trigseq", "trim", "trim_i", "trirand", "trlowest", "trmix", "trscale", "trshift", "trsplit", "turnoff", "turnoff2", "turnon", "tvconv", "unirand", "unwrap", "upsamp", "urandom", "urd", "vactrol", "vadd", "vadd_i", "vaddv", "vaddv_i", "vaget", "valpass", "vaset", "vbap", "vbapg", "vbapgmove", "vbaplsinit", "vbapmove", "vbapz", "vbapzmove", "vcella", "vco", "vco2", "vco2ft", "vco2ift", "vco2init", "vcomb", "vcopy", "vcopy_i", "vdel_k", "vdelay", "vdelay3", "vdelayk", "vdelayx", "vdelayxq", "vdelayxs", "vdelayxw", "vdelayxwq", "vdelayxws", "vdivv", "vdivv_i", "vecdelay", "veloc", "vexp", "vexp_i", "vexpseg", "vexpv", "vexpv_i", "vibes", "vibr", "vibrato", "vincr", "vlimit", "vlinseg", "vlowres", "vmap", "vmirror", "vmult", "vmult_i", "vmultv", "vmultv_i", "voice", "vosim", "vphaseseg", "vport", "vpow", "vpow_i", "vpowv", "vpowv_i", "vpvoc", "vrandh", "vrandi", "vsubv", "vsubv_i", "vtaba", "vtabi", "vtabk", "vtable1k", "vtablea", "vtablei", "vtablek", "vtablewa", "vtablewi", "vtablewk", "vtabwa", "vtabwi", "vtabwk", "vwrap", "waveset", "websocket", "weibull", "wgbow", "wgbowedbar", "wgbrass", "wgclar", "wgflute", "wgpluck", "wgpluck2", "wguide1", "wguide2", "wiiconnect", "wiidata", "wiirange", "wiisend", "window", "wrap", "writescratch", "wterrain", "xadsr", "xin", "xout", "xscanmap", "xscans", "xscansmap", "xscanu", "xtratim", "xyscale", "zacl", "zakinit", "zamod", "zar", "zarg", "zaw", "zawm", "zdf_1pole", "zdf_1pole_mode", "zdf_2pole", "zdf_2pole_mode", "zdf_ladder", "zfilter2", "zir", "ziw", "ziwm", "zkcl", "zkmod", "zkr", "zkw", "zkwm"],
        n = ["array", "bformdec", "bformenc", "changed", "copy2ftab", "copy2ttab", "hrtfer", "ktableseg", "lentab", "maxtab", "mintab", "pop", "pop_f", "ptableiw", "push", "push_f", "scalet", "sndload", "soundout", "soundouts", "specaddm", "specdiff", "specdisp", "specfilt", "spechist", "specptrk", "specscal", "specsum", "spectrum", "stack", "sumtab", "tabgen", "tableiw", "tabmap", "tabmap_i", "tabslice", "tb0", "tb0_init", "tb1", "tb10", "tb10_init", "tb11", "tb11_init", "tb12", "tb12_init", "tb13", "tb13_init", "tb14", "tb14_init", "tb15", "tb15_init", "tb1_init", "tb2", "tb2_init", "tb3", "tb3_init", "tb4", "tb4_init", "tb5", "tb5_init", "tb6", "tb6_init", "tb7", "tb7_init", "tb8", "tb8_init", "tb9", "tb9_init", "vbap16", "vbap4", "vbap4move", "vbap8", "vbap8move", "xyin"];
    t = r.arrayToMap(t), n = r.arrayToMap(n), this.lineContinuations = [{
      token: "constant.character.escape.line-continuation.csound",
      regex: /\\$/
    }, this.pushRule({
      token: "constant.character.escape.line-continuation.csound",
      regex: /\\/,
      next: "line continuation"
    })], this.comments.push(this.lineContinuations), this.quotedStringContents.push(this.lineContinuations, {
      token: "invalid.illegal",
      regex: /[^"\\]*$/
    });
    var i = this.$rules.start;
    i.splice(1, 0, {
      token: ["text.csound", "entity.name.label.csound", "entity.punctuation.label.csound", "text.csound"],
      regex: /^([ \t]*)(\w+)(:)([ \t]+|$)/
    }), i.push(this.pushRule({
      token: "keyword.function.csound",
      regex: /\binstr\b/,
      next: "instrument numbers and identifiers"
    }), this.pushRule({
      token: "keyword.function.csound",
      regex: /\bopcode\b/,
      next: "after opcode keyword"
    }), {
      token: "keyword.other.csound",
      regex: /\bend(?:in|op)\b/
    }, {
      token: "variable.language.csound",
      regex: /\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\b/
    }, this.numbers, {
      token: "keyword.operator.csound",
      regex: "\\+=|-=|\\*=|/=|<<|>>|<=|>=|==|!=|&&|\\|\\||[~\xAC]|[=!+\\-*/^%&|<>#?:]"
    }, this.pushRule({
      token: "punctuation.definition.string.begin.csound",
      regex: /"/,
      next: "quoted string"
    }), this.pushRule({
      token: "punctuation.definition.string.begin.csound",
      regex: /{{/,
      next: "braced string"
    }), {
      token: "keyword.control.csound",
      regex: /\b(?:do|else(?:if)?|end(?:if|until)|fi|i(?:f|then)|kthen|od|r(?:ir)?eturn|then|until|while)\b/
    }, this.pushRule({
      token: "keyword.control.csound",
      regex: /\b[ik]?goto\b/,
      next: "goto before label"
    }), this.pushRule({
      token: "keyword.control.csound",
      regex: /\b(?:r(?:einit|igoto)|tigoto)\b/,
      next: "goto before label"
    }), this.pushRule({
      token: "keyword.control.csound",
      regex: /\bc(?:g|in?|k|nk?)goto\b/,
      next: ["goto before label", "goto before argument"]
    }), this.pushRule({
      token: "keyword.control.csound",
      regex: /\btimout\b/,
      next: ["goto before label", "goto before argument", "goto before argument"]
    }), this.pushRule({
      token: "keyword.control.csound",
      regex: /\bloop_[gl][et]\b/,
      next: ["goto before label", "goto before argument", "goto before argument", "goto before argument"]
    }), this.pushRule({
      token: "support.function.csound",
      regex: /\b(?:readscore|scoreline(?:_i)?)\b/,
      next: "Csound score opcode"
    }), this.pushRule({
      token: "support.function.csound",
      regex: /\bpyl?run[it]?\b(?!$)/,
      next: "Python opcode"
    }), this.pushRule({
      token: "support.function.csound",
      regex: /\blua_(?:exec|opdef)\b(?!$)/,
      next: "Lua opcode"
    }), {
      token: "support.variable.csound",
      regex: /\bp\d+\b/
    }, {
      regex: /\b([A-Z_a-z]\w*)(?:(:)([A-Za-z]))?\b/,
      onMatch: function onMatch(e, r, i, s) {
        var o = e.split(this.splitRegex),
            u = o[1],
            a;
        return t.hasOwnProperty(u) ? a = "support.function.csound" : n.hasOwnProperty(u) && (a = "invalid.deprecated.csound"), a ? o[2] ? [{
          type: a,
          value: u
        }, {
          type: "punctuation.type-annotation.csound",
          value: o[2]
        }, {
          type: "type-annotation.storage.type.csound",
          value: o[3]
        }] : a : "text.csound";
      }
    }), this.$rules["macro parameter value list"].splice(2, 0, {
      token: "punctuation.definition.string.begin.csound",
      regex: /{{/,
      next: "macro parameter value braced string"
    });
    var f = new o("csound-score-");
    this.addRules({
      "macro parameter value braced string": [{
        token: "constant.character.escape.csound",
        regex: /\\[#'()]/
      }, {
        token: "invalid.illegal.csound.csound",
        regex: /[#'()]/
      }, {
        token: "punctuation.definition.string.end.csound",
        regex: /}}/,
        next: "macro parameter value list"
      }, {
        defaultToken: "string.braced.csound"
      }],
      "instrument numbers and identifiers": [this.comments, {
        token: "entity.name.function.csound",
        regex: /\d+|[A-Z_a-z]\w*/
      }, this.popRule({
        token: "empty",
        regex: /$/
      })],
      "after opcode keyword": [this.comments, this.popRule({
        token: "empty",
        regex: /$/
      }), this.popRule({
        token: "entity.name.function.opcode.csound",
        regex: /[A-Z_a-z]\w*/,
        next: "opcode type signatures"
      })],
      "opcode type signatures": [this.comments, this.popRule({
        token: "empty",
        regex: /$/
      }), {
        token: "storage.type.csound",
        regex: /\b(?:0|[afijkKoOpPStV\[\]]+)/
      }],
      "quoted string": [this.popRule({
        token: "punctuation.definition.string.end.csound",
        regex: /"/
      }), this.quotedStringContents, {
        defaultToken: "string.quoted.csound"
      }],
      "braced string": [this.popRule({
        token: "punctuation.definition.string.end.csound",
        regex: /}}/
      }), this.bracedStringContents, {
        defaultToken: "string.braced.csound"
      }],
      "goto before argument": [this.popRule({
        token: "text.csound",
        regex: /,/
      }), i],
      "goto before label": [{
        token: "text.csound",
        regex: /\s+/
      }, this.comments, this.popRule({
        token: "entity.name.label.csound",
        regex: /\w+/
      }), this.popRule({
        token: "empty",
        regex: /(?!\w)/
      })],
      "Csound score opcode": [this.comments, {
        token: "punctuation.definition.string.begin.csound",
        regex: /{{/,
        next: f.embeddedRulePrefix + "start"
      }, this.popRule({
        token: "empty",
        regex: /$/
      })],
      "Python opcode": [this.comments, {
        token: "punctuation.definition.string.begin.csound",
        regex: /{{/,
        next: "python-start"
      }, this.popRule({
        token: "empty",
        regex: /$/
      })],
      "Lua opcode": [this.comments, {
        token: "punctuation.definition.string.begin.csound",
        regex: /{{/,
        next: "lua-start"
      }, this.popRule({
        token: "empty",
        regex: /$/
      })],
      "line continuation": [this.popRule({
        token: "empty",
        regex: /$/
      }), this.semicolonComments, {
        token: "invalid.illegal.csound",
        regex: /\S.*/
      }]
    });
    var l = [this.popRule({
      token: "punctuation.definition.string.end.csound",
      regex: /}}/
    })];
    this.embedRules(f.getRules(), f.embeddedRulePrefix, l), this.embedRules(a, "python-", l), this.embedRules(u, "lua-", l), this.normalizeRules();
  };

  i.inherits(f, s), t.CsoundOrchestraHighlightRules = f;
}), ace.define("ace/mode/csound_orchestra", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/csound_orchestra_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules,
      o = function o() {
    this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = ";", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/csound_orchestra", this.snippetFileId = "ace/snippets/csound_orchestra";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/csound_orchestra"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-csound_score.js":
/*!*************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-csound_score.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/csound_preprocessor_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    this.embeddedRulePrefix = e === undefined ? "" : e, this.semicolonComments = {
      token: "comment.line.semicolon.csound",
      regex: ";.*$"
    }, this.comments = [{
      token: "punctuation.definition.comment.begin.csound",
      regex: "/\\*",
      push: [{
        token: "punctuation.definition.comment.end.csound",
        regex: "\\*/",
        next: "pop"
      }, {
        defaultToken: "comment.block.csound"
      }]
    }, {
      token: "comment.line.double-slash.csound",
      regex: "//.*$"
    }, this.semicolonComments], this.macroUses = [{
      token: ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"],
      regex: /(\$[A-Z_a-z]\w*\.?)(\()/,
      next: "macro parameter value list"
    }, {
      token: "entity.name.function.preprocessor.csound",
      regex: /\$[A-Z_a-z]\w*(?:\.|\b)/
    }], this.numbers = [{
      token: "constant.numeric.float.csound",
      regex: /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/
    }, {
      token: ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"],
      regex: /(0[Xx])([0-9A-Fa-f]+)/
    }, {
      token: "constant.numeric.integer.decimal.csound",
      regex: /\d+/
    }], this.bracedStringContents = [{
      token: "constant.character.escape.csound",
      regex: /\\(?:[\\abnrt"]|[0-7]{1,3})/
    }, {
      token: "constant.character.placeholder.csound",
      regex: /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/
    }, {
      token: "constant.character.escape.csound",
      regex: /%%/
    }], this.quotedStringContents = [this.macroUses, this.bracedStringContents];
    var t = [this.comments, {
      token: "keyword.preprocessor.csound",
      regex: /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#include/,
      push: [this.comments, {
        token: "string.csound",
        regex: /([^ \t])(?:.*?\1)/,
        next: "pop"
      }]
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#includestr/,
      push: [this.comments, {
        token: "string.csound",
        regex: /([^ \t])(?:.*?\1)/,
        next: "pop"
      }]
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#[ \t]*define/,
      next: "define directive"
    }, {
      token: "keyword.preprocessor.csound",
      regex: /#(?:ifn?def|undef)\b/,
      next: "macro directive"
    }, this.macroUses];
    this.$rules = {
      start: t,
      "define directive": [this.comments, {
        token: "entity.name.function.preprocessor.csound",
        regex: /[A-Z_a-z]\w*/
      }, {
        token: "punctuation.definition.macro-parameter-name-list.begin.csound",
        regex: /\(/,
        next: "macro parameter name list"
      }, {
        token: "punctuation.definition.macro.begin.csound",
        regex: /#/,
        next: "macro body"
      }],
      "macro parameter name list": [{
        token: "variable.parameter.preprocessor.csound",
        regex: /[A-Z_a-z]\w*/
      }, {
        token: "punctuation.definition.macro-parameter-name-list.end.csound",
        regex: /\)/,
        next: "define directive"
      }],
      "macro body": [{
        token: "constant.character.escape.csound",
        regex: /\\#/
      }, {
        token: "punctuation.definition.macro.end.csound",
        regex: /#/,
        next: "start"
      }, t],
      "macro directive": [this.comments, {
        token: "entity.name.function.preprocessor.csound",
        regex: /[A-Z_a-z]\w*/,
        next: "start"
      }],
      "macro parameter value list": [{
        token: "punctuation.definition.macro-parameter-value-list.end.csound",
        regex: /\)/,
        next: "start"
      }, {
        token: "punctuation.definition.string.begin.csound",
        regex: /"/,
        next: "macro parameter value quoted string"
      }, this.pushRule({
        token: "punctuation.macro-parameter-value-parenthetical.begin.csound",
        regex: /\(/,
        next: "macro parameter value parenthetical"
      }), {
        token: "punctuation.macro-parameter-value-separator.csound",
        regex: "[#']"
      }],
      "macro parameter value quoted string": [{
        token: "constant.character.escape.csound",
        regex: /\\[#'()]/
      }, {
        token: "invalid.illegal.csound",
        regex: /[#'()]/
      }, {
        token: "punctuation.definition.string.end.csound",
        regex: /"/,
        next: "macro parameter value list"
      }, this.quotedStringContents, {
        defaultToken: "string.quoted.csound"
      }],
      "macro parameter value parenthetical": [{
        token: "constant.character.escape.csound",
        regex: /\\\)/
      }, this.popRule({
        token: "punctuation.macro-parameter-value-parenthetical.end.csound",
        regex: /\)/
      }), this.pushRule({
        token: "punctuation.macro-parameter-value-parenthetical.begin.csound",
        regex: /\(/,
        next: "macro parameter value parenthetical"
      }), t]
    };
  };

  r.inherits(s, i), function () {
    this.pushRule = function (e) {
      if (Array.isArray(e.next)) for (var t = 0; t < e.next.length; t++) {
        e.next[t] = this.embeddedRulePrefix + e.next[t];
      }
      return {
        regex: e.regex,
        onMatch: function onMatch(t, n, r, i) {
          r.length === 0 && r.push(n);
          if (Array.isArray(e.next)) for (var s = 0; s < e.next.length; s++) {
            r.push(e.next[s]);
          } else r.push(e.next);
          return this.next = r[r.length - 1], e.token;
        },

        get next() {
          return Array.isArray(e.next) ? e.next[e.next.length - 1] : e.next;
        },

        set next(t) {
          Array.isArray(e.next) || (e.next = t);
        },

        get token() {
          return e.token;
        }

      };
    }, this.popRule = function (e) {
      return e.next && (e.next = this.embeddedRulePrefix + e.next), {
        regex: e.regex,
        onMatch: function onMatch(t, n, r, i) {
          return r.pop(), e.next ? (r.push(e.next), this.next = r[r.length - 1]) : this.next = r.length > 1 ? r[r.length - 1] : r.pop(), e.token;
        }
      };
    };
  }.call(s.prototype), t.CsoundPreprocessorHighlightRules = s;
}), ace.define("ace/mode/csound_score_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/csound_preprocessor_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules,
      s = function s(e) {
    i.call(this, e), this.quotedStringContents.push({
      token: "invalid.illegal.csound-score",
      regex: /[^"]*$/
    });
    var t = this.$rules.start;
    t.push({
      token: "keyword.control.csound-score",
      regex: /[abCdefiqstvxy]/
    }, {
      token: "invalid.illegal.csound-score",
      regex: /w/
    }, {
      token: "constant.numeric.language.csound-score",
      regex: /z/
    }, {
      token: ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"],
      regex: /([nNpP][pP])(\d+)/
    }, {
      token: "keyword.other.csound-score",
      regex: /[mn]/,
      push: [{
        token: "empty",
        regex: /$/,
        next: "pop"
      }, this.comments, {
        token: "entity.name.label.csound-score",
        regex: /[A-Z_a-z]\w*/
      }]
    }, {
      token: "keyword.preprocessor.csound-score",
      regex: /r\b/,
      next: "repeat section"
    }, this.numbers, {
      token: "keyword.operator.csound-score",
      regex: "[!+\\-*/^%&|<>#~.]"
    }, this.pushRule({
      token: "punctuation.definition.string.begin.csound-score",
      regex: /"/,
      next: "quoted string"
    }), this.pushRule({
      token: "punctuation.braced-loop.begin.csound-score",
      regex: /{/,
      next: "loop after left brace"
    })), this.addRules({
      "repeat section": [{
        token: "empty",
        regex: /$/,
        next: "start"
      }, this.comments, {
        token: "constant.numeric.integer.decimal.csound-score",
        regex: /\d+/,
        next: "repeat section before label"
      }],
      "repeat section before label": [{
        token: "empty",
        regex: /$/,
        next: "start"
      }, this.comments, {
        token: "entity.name.label.csound-score",
        regex: /[A-Z_a-z]\w*/,
        next: "start"
      }],
      "quoted string": [this.popRule({
        token: "punctuation.definition.string.end.csound-score",
        regex: /"/
      }), this.quotedStringContents, {
        defaultToken: "string.quoted.csound-score"
      }],
      "loop after left brace": [this.popRule({
        token: "constant.numeric.integer.decimal.csound-score",
        regex: /\d+/,
        next: "loop after repeat count"
      }), this.comments, {
        token: "invalid.illegal.csound",
        regex: /\S.*/
      }],
      "loop after repeat count": [this.popRule({
        token: "entity.name.function.preprocessor.csound-score",
        regex: /[A-Z_a-z]\w*\b/,
        next: "loop after macro name"
      }), this.comments, {
        token: "invalid.illegal.csound",
        regex: /\S.*/
      }],
      "loop after macro name": [t, this.popRule({
        token: "punctuation.braced-loop.end.csound-score",
        regex: /}/
      })]
    }), this.normalizeRules();
  };

  r.inherits(s, i), t.CsoundScoreHighlightRules = s;
}), ace.define("ace/mode/csound_score", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/csound_score_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./csound_score_highlight_rules").CsoundScoreHighlightRules,
      o = function o() {
    this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = ";", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/csound_score";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/csound_score"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-csp.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-csp.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/csp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = this.createKeywordMapper({
      "constant.language": "child-src|connect-src|default-src|font-src|frame-src|img-src|manifest-src|media-src|object-src|script-src|style-src|worker-src|base-uri|plugin-types|sandbox|disown-opener|form-action|frame-ancestors|report-uri|report-to|upgrade-insecure-requests|block-all-mixed-content|require-sri-for|reflected-xss|referrer|policy-uri",
      variable: "'none'|'self'|'unsafe-inline'|'unsafe-eval'|'strict-dynamic'|'unsafe-hashed-attributes'"
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "string.link",
        regex: /https?:[^;\s]*/
      }, {
        token: "operator.punctuation",
        regex: /;/
      }, {
        token: e,
        regex: /[^\s;]+/
      }]
    };
  };

  r.inherits(s, i), t.CspHighlightRules = s;
}), ace.define("ace/mode/csp", ["require", "exports", "module", "ace/mode/text", "ace/mode/csp_highlight_rules", "ace/lib/oop"], function (e, t, n) {
  "use strict";

  var r = e("./text").Mode,
      i = e("./csp_highlight_rules").CspHighlightRules,
      s = e("../lib/oop"),
      o = function o() {
    this.HighlightRules = i;
  };

  s.inherits(o, r), function () {
    this.$id = "ace/mode/csp";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/csp"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-css.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-css.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
});

(function () {
  ace.require(["ace/mode/css"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-curly.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-curly.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/curly_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      s = function s() {
    i.call(this), this.$rules.start.unshift({
      token: "variable",
      regex: "{{",
      push: "curly-start"
    }), this.$rules["curly-start"] = [{
      token: "variable",
      regex: "}}",
      next: "pop"
    }], this.normalizeRules();
  };

  r.inherits(s, i), t.CurlyHighlightRules = s;
}), ace.define("ace/mode/curly", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/matching_brace_outdent", "ace/mode/folding/html", "ace/mode/curly_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./matching_brace_outdent").MatchingBraceOutdent,
      o = e("./folding/html").FoldMode,
      u = e("./curly_highlight_rules").CurlyHighlightRules,
      a = function a() {
    i.call(this), this.HighlightRules = u, this.$outdent = new s(), this.foldingRules = new o();
  };

  r.inherits(a, i), function () {
    this.$id = "ace/mode/curly";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/curly"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-d.js":
/*!**************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-d.js ***!
  \**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/d_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "this|super|import|module|body|mixin|__traits|invariant|alias|asm|delete|typeof|typeid|sizeof|cast|new|in|is|typedef|__vector|__parameters",
        t = "break|case|continue|default|do|else|for|foreach|foreach_reverse|goto|if|return|switch|while|catch|try|throw|finally|version|assert|unittest|with",
        n = "auto|bool|char|dchar|wchar|byte|ubyte|float|double|real|cfloat|creal|cdouble|cent|ifloat|ireal|idouble|int|long|short|void|uint|ulong|ushort|ucent|function|delegate|string|wstring|dstring|size_t|ptrdiff_t|hash_t|Object",
        r = "abstract|align|debug|deprecated|export|extern|const|final|in|inout|out|ref|immutable|lazy|nothrow|override|package|pragma|private|protected|public|pure|scope|shared|__gshared|synchronized|static|volatile",
        s = "class|struct|union|template|interface|enum|macro",
        o = {
      token: "constant.language.escape",
      regex: "\\\\(?:(?:x[0-9A-F]{2})|(?:[0-7]{1,3})|(?:['\"\\?0abfnrtv\\\\])|(?:u[0-9a-fA-F]{4})|(?:U[0-9a-fA-F]{8}))"
    },
        u = "null|true|false|__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__|__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__",
        a = "/|/\\=|&|&\\=|&&|\\|\\|\\=|\\|\\||\\-|\\-\\=|\\-\\-|\\+|\\+\\=|\\+\\+|\\<|\\<\\=|\\<\\<|\\<\\<\\=|\\<\\>|\\<\\>\\=|\\>|\\>\\=|\\>\\>\\=|\\>\\>\\>\\=|\\>\\>|\\>\\>\\>|\\!|\\!\\=|\\!\\<\\>|\\!\\<\\>\\=|\\!\\<|\\!\\<\\=|\\!\\>|\\!\\>\\=|\\?|\\$|\\=|\\=\\=|\\*|\\*\\=|%|%\\=|\\^|\\^\\=|\\^\\^|\\^\\^\\=|~|~\\=|\\=\\>|#",
        f = this.$keywords = this.createKeywordMapper({
      "keyword.modifier": r,
      "keyword.control": t,
      "keyword.type": n,
      keyword: e,
      "keyword.storage": s,
      punctation: "\\.|\\,|;|\\.\\.|\\.\\.\\.",
      "keyword.operator": a,
      "constant.language": u
    }, "identifier"),
        l = "[a-zA-Z_\xA1-\uFFFF][a-zA-Z\\d_\xA1-\uFFFF]*\\b";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "star-comment"
      }, {
        token: "comment.shebang",
        regex: "^\\s*#!.*"
      }, {
        token: "comment",
        regex: "\\/\\+",
        next: "plus-comment"
      }, {
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.substr(2)), "string";
        },
        regex: 'q"(?:[\\[\\(\\{\\<]+)',
        next: "operator-heredoc-string"
      }, {
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.substr(2)), "string";
        },
        regex: 'q"(?:[a-zA-Z_]+)$',
        next: "identifier-heredoc-string"
      }, {
        token: "string",
        regex: '[xr]?"',
        next: "quote-string"
      }, {
        token: "string",
        regex: "[xr]?`",
        next: "backtick-string"
      }, {
        token: "string",
        regex: "[xr]?['](?:(?:\\\\.)|(?:[^'\\\\]))*?['][cdw]?"
      }, {
        token: ["keyword", "text", "paren.lparen"],
        regex: /(asm)(\s*)({)/,
        next: "d-asm"
      }, {
        token: ["keyword", "text", "paren.lparen", "constant.language"],
        regex: "(__traits)(\\s*)(\\()(" + l + ")"
      }, {
        token: ["keyword", "text", "variable.module"],
        regex: "(import|module)(\\s+)((?:" + l + "\\.?)*)"
      }, {
        token: ["keyword.storage", "text", "entity.name.type"],
        regex: "(" + s + ")(\\s*)(" + l + ")"
      }, {
        token: ["keyword", "text", "variable.storage", "text"],
        regex: "(alias|typedef)(\\s*)(" + l + ")(\\s*)"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F_]+(l|ul|u|f|F|L|U|UL)?\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?(l|ul|u|f|F|L|U|UL)?\\b"
      }, {
        token: "entity.other.attribute-name",
        regex: "@" + l
      }, {
        token: f,
        regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b"
      }, {
        token: "keyword.operator",
        regex: a
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\.|\\:"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      "star-comment": [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      "plus-comment": [{
        token: "comment",
        regex: "\\+\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      "quote-string": [o, {
        token: "string",
        regex: '"[cdw]?',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      "backtick-string": [o, {
        token: "string",
        regex: "`[cdw]?",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      "operator-heredoc-string": [{
        onMatch: function onMatch(e, t, n) {
          e = e.substring(e.length - 2, e.length - 1);
          var r = {
            ">": "<",
            "]": "[",
            ")": "(",
            "}": "{"
          };
          return Object.keys(r).indexOf(e) != -1 && (e = r[e]), e != n[1] ? "string" : (n.shift(), n.shift(), "string");
        },
        regex: '(?:[\\]\\)}>]+)"',
        next: "start"
      }, {
        token: "string",
        regex: "[^\\]\\)}>]+"
      }],
      "identifier-heredoc-string": [{
        onMatch: function onMatch(e, t, n) {
          return e = e.substring(0, e.length - 1), e != n[1] ? "string" : (n.shift(), n.shift(), "string");
        },
        regex: '^(?:[A-Za-z_][a-zA-Z0-9]+)"',
        next: "start"
      }, {
        token: "string",
        regex: "[^\\]\\)}>]+"
      }],
      "d-asm": [{
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "keyword.instruction",
        regex: "[a-zA-Z]+",
        next: "d-asm-instruction"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      "d-asm-instruction": [{
        token: "constant.language",
        regex: /AL|AH|AX|EAX|BL|BH|BX|EBX|CL|CH|CX|ECX|DL|DH|DX|EDX|BP|EBP|SP|ESP|DI|EDI|SI|ESI/i
      }, {
        token: "identifier",
        regex: "[a-zA-Z]+"
      }, {
        token: "string",
        regex: '"[^"]*"'
      }, {
        token: "comment",
        regex: "//.*$"
      }, {
        token: "constant.numeric",
        regex: "[0-9.xA-F]+"
      }, {
        token: "punctuation.operator",
        regex: "\\,"
      }, {
        token: "punctuation.operator",
        regex: ";",
        next: "d-asm"
      }, {
        token: "text",
        regex: "\\s+"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]);
  };

  o.metaData = {
    comment: "D language",
    fileTypes: ["d", "di"],
    firstLineMatch: "^#!.*\\b[glr]?dmd\\b.",
    foldingStartMarker: "(?x)/\\*\\*(?!\\*)|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))",
    foldingStopMarker: "(?<!\\*)\\*\\*/|^\\s*\\}",
    keyEquivalent: "^~D",
    name: "D",
    scopeName: "source.d"
  }, r.inherits(o, s), t.DHighlightRules = o;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/d", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/d_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./d_highlight_rules").DHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/d";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/d"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-dart.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-dart.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/c_cpp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",
      u = function u() {
    var e = "break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",
        t = "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",
        n = "const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",
        r = "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",
        s = "NULL|true|false|TRUE|FALSE|nullptr",
        u = this.$keywords = this.createKeywordMapper({
      "keyword.control": e,
      "storage.type": t,
      "storage.modifier": n,
      "keyword.operator": r,
      "variable.language": "this",
      "constant.language": s
    }, "identifier"),
        a = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*\\b",
        f = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,
        l = "%" + /(\d+\$)?/.source + /[#0\- +']*/.source + /[,;:_]?/.source + /((-?\d+)|\*(-?\d+\$)?)?/.source + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;
    this.$rules = {
      start: [{
        token: "comment",
        regex: "//$",
        next: "start"
      }, {
        token: "comment",
        regex: "//",
        next: "singleLineComment"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: "'(?:" + f + "|.)?'"
      }, {
        token: "string.start",
        regex: '"',
        stateName: "qqstring",
        next: [{
          token: "string",
          regex: /\\\s*$/,
          next: "qqstring"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          token: "constant.language.escape",
          regex: l
        }, {
          token: "string.end",
          regex: '"|$',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: 'R"\\(',
        stateName: "rawString",
        next: [{
          token: "string.end",
          regex: '\\)"',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "keyword",
        regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b",
        next: "directive"
      }, {
        token: "keyword",
        regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"
      }, {
        token: "support.function.C99.c",
        regex: o
      }, {
        token: u,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      singleLineComment: [{
        token: "comment",
        regex: /\\$/,
        next: "singleLineComment"
      }, {
        token: "comment",
        regex: /$/,
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      directive: [{
        token: "constant.other.multiline",
        regex: /\\/
      }, {
        token: "constant.other.multiline",
        regex: /.*\\/
      }, {
        token: "constant.other",
        regex: "\\s*<.+?>",
        next: "start"
      }, {
        token: "constant.other",
        regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',
        next: "start"
      }, {
        token: "constant.other",
        regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",
        next: "start"
      }, {
        token: "constant.other",
        regex: /[^\\\/]+/,
        next: "start"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(u, s), t.c_cppHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/c_cpp", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/c_cpp_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./c_cpp_highlight_rules").c_cppHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[]\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/c_cpp", this.snippetFileId = "ace/snippets/c_cpp";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/dart_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "true|false|null",
        t = "this|super",
        n = "try|catch|finally|throw|rethrow|assert|break|case|continue|default|do|else|for|if|in|return|switch|while|new|deferred|async|await",
        r = "abstract|class|extends|external|factory|implements|get|native|operator|set|typedef|with|enum",
        s = "static|final|const",
        o = "void|bool|num|int|double|dynamic|var|String",
        u = this.createKeywordMapper({
      "constant.language.dart": e,
      "variable.language.dart": t,
      "keyword.control.dart": n,
      "keyword.declaration.dart": r,
      "storage.modifier.dart": s,
      "storage.type.primitive.dart": o
    }, "identifier"),
        a = [{
      token: "constant.language.escape",
      regex: /\\./
    }, {
      token: "text",
      regex: /\$(?:\w+|{[^"'}]+})?/
    }, {
      defaultToken: "string"
    }];
    this.$rules = {
      start: [{
        token: "comment",
        regex: /\/\/.*$/
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: /\/\*/,
        next: "comment"
      }, {
        token: ["meta.preprocessor.script.dart"],
        regex: "^(#!.*)$"
      }, {
        token: "keyword.other.import.dart",
        regex: "(?:\\b)(?:library|import|export|part|of|show|hide)(?:\\b)"
      }, {
        token: ["keyword.other.import.dart", "text"],
        regex: "(?:\\b)(prefix)(\\s*:)"
      }, {
        regex: "\\bas\\b",
        token: "keyword.cast.dart"
      }, {
        regex: "\\?|:",
        token: "keyword.control.ternary.dart"
      }, {
        regex: "(?:\\b)(is\\!?)(?:\\b)",
        token: ["keyword.operator.dart"]
      }, {
        regex: "(<<|>>>?|~|\\^|\\||&)",
        token: ["keyword.operator.bitwise.dart"]
      }, {
        regex: "((?:&|\\^|\\||<<|>>>?)=)",
        token: ["keyword.operator.assignment.bitwise.dart"]
      }, {
        regex: "(===?|!==?|<=?|>=?)",
        token: ["keyword.operator.comparison.dart"]
      }, {
        regex: "((?:[+*/%-]|\\~)=)",
        token: ["keyword.operator.assignment.arithmetic.dart"]
      }, {
        regex: "=",
        token: "keyword.operator.assignment.dart"
      }, {
        token: "string",
        regex: "'''",
        next: "qdoc"
      }, {
        token: "string",
        regex: '"""',
        next: "qqdoc"
      }, {
        token: "string",
        regex: "'",
        next: "qstring"
      }, {
        token: "string",
        regex: '"',
        next: "qqstring"
      }, {
        regex: "(\\-\\-|\\+\\+)",
        token: ["keyword.operator.increment-decrement.dart"]
      }, {
        regex: "(\\-|\\+|\\*|\\/|\\~\\/|%)",
        token: ["keyword.operator.arithmetic.dart"]
      }, {
        regex: "(!|&&|\\|\\|)",
        token: ["keyword.operator.logical.dart"]
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: u,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qdoc: [{
        token: "string",
        regex: "'''",
        next: "start"
      }].concat(a),
      qqdoc: [{
        token: "string",
        regex: '"""',
        next: "start"
      }].concat(a),
      qstring: [{
        token: "string",
        regex: "'|$",
        next: "start"
      }].concat(a),
      qqstring: [{
        token: "string",
        regex: '"|$',
        next: "start"
      }].concat(a)
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]);
  };

  r.inherits(o, s), t.DartHighlightRules = o;
}), ace.define("ace/mode/dart", ["require", "exports", "module", "ace/lib/oop", "ace/mode/c_cpp", "ace/mode/dart_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./c_cpp").Mode,
      s = e("./dart_highlight_rules").DartHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    i.call(this), this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/dart", this.snippetFileId = "ace/snippets/dart";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/dart"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-diff.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-diff.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/diff_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        regex: "^(?:\\*{15}|={67}|-{3}|\\+{3})$",
        token: "punctuation.definition.separator.diff",
        name: "keyword"
      }, {
        regex: "^(@@)(\\s*.+?\\s*)(@@)(.*)$",
        token: ["constant", "constant.numeric", "constant", "comment.doc.tag"]
      }, {
        regex: "^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$",
        token: ["constant.numeric", "punctuation.definition.range.diff", "constant.function", "constant.numeric", "punctuation.definition.range.diff", "invalid"],
        name: "meta."
      }, {
        regex: "^(\\-{3}|\\+{3}|\\*{3})( .+)$",
        token: ["constant.numeric", "meta.tag"]
      }, {
        regex: "^([!+>])(.*?)(\\s*)$",
        token: ["support.constant", "text", "invalid"]
      }, {
        regex: "^([<\\-])(.*?)(\\s*)$",
        token: ["support.function", "string", "invalid"]
      }, {
        regex: "^(diff)(\\s+--\\w+)?(.+?)( .+)?$",
        token: ["variable", "variable", "keyword", "variable"]
      }, {
        regex: "^Index.+$",
        token: "variable"
      }, {
        regex: "^\\s+$",
        token: "text"
      }, {
        regex: "\\s*$",
        token: "invalid"
      }, {
        defaultToken: "invisible",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), t.DiffHighlightRules = s;
}), ace.define("ace/mode/folding/diff", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function (e, t) {
    this.regExpList = e, this.flag = t, this.foldingStartMarker = RegExp("^(" + e.join("|") + ")", this.flag);
  };

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = e.getLine(n),
          i = {
        row: n,
        column: r.length
      },
          o = this.regExpList;

      for (var u = 1; u <= o.length; u++) {
        var a = RegExp("^(" + o.slice(0, u).join("|") + ")", this.flag);
        if (a.test(r)) break;
      }

      for (var f = e.getLength(); ++n < f;) {
        r = e.getLine(n);
        if (a.test(r)) break;
      }

      if (n == i.row + 1) return;
      return new s(i.row, i.column, n - 1, r.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/diff", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/diff_highlight_rules", "ace/mode/folding/diff"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./diff_highlight_rules").DiffHighlightRules,
      o = e("./folding/diff").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(["diff", "@@|\\*{5}"], "i");
  };

  r.inherits(u, i), function () {
    this.$id = "ace/mode/diff", this.snippetFileId = "ace/snippets/diff";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/diff"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-django.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-django.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/django", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/html_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./html_highlight_rules").HtmlHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = function u() {
    this.$rules = {
      start: [{
        token: "string",
        regex: '".*?"'
      }, {
        token: "string",
        regex: "'.*?'"
      }, {
        token: "constant",
        regex: "[0-9]+"
      }, {
        token: "variable",
        regex: "[-_a-zA-Z0-9:]+"
      }],
      tag: [{
        token: "entity.name.function",
        regex: "[a-zA-Z][_a-zA-Z0-9]*",
        next: "start"
      }]
    };
  };

  r.inherits(u, o);

  var a = function a() {
    this.$rules = new s().getRules();

    for (var e in this.$rules) {
      this.$rules[e].unshift({
        token: "comment.line",
        regex: "\\{#.*?#\\}"
      }, {
        token: "comment.block",
        regex: "\\{\\%\\s*comment\\s*\\%\\}",
        merge: !0,
        next: "django-comment"
      }, {
        token: "constant.language",
        regex: "\\{\\{",
        next: "django-start"
      }, {
        token: "constant.language",
        regex: "\\{\\%",
        next: "django-tag"
      }), this.embedRules(u, "django-", [{
        token: "comment.block",
        regex: "\\{\\%\\s*endcomment\\s*\\%\\}",
        merge: !0,
        next: "start"
      }, {
        token: "constant.language",
        regex: "\\%\\}",
        next: "start"
      }, {
        token: "constant.language",
        regex: "\\}\\}",
        next: "start"
      }]);
    }
  };

  r.inherits(a, s);

  var f = function f() {
    i.call(this), this.HighlightRules = a;
  };

  r.inherits(f, i), function () {
    this.$id = "ace/mode/django", this.snippetFileId = "ace/snippets/django";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/django"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-dockerfile.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-dockerfile.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/sh_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = t.reservedKeywords = "!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",
      o = t.languageConstructs = "[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",
      u = function u() {
    var e = this.createKeywordMapper({
      keyword: s,
      "support.function.builtin": o,
      "invalid.deprecated": "debugger"
    }, "identifier"),
        t = "(?:(?:[1-9]\\d*)|(?:0))",
        n = "(?:\\.\\d+)",
        r = "(?:\\d+)",
        i = "(?:(?:" + r + "?" + n + ")|(?:" + r + "\\.))",
        u = "(?:(?:" + i + "|" + r + ")" + ")",
        a = "(?:" + u + "|" + i + ")",
        f = "(?:&" + r + ")",
        l = "[a-zA-Z_][a-zA-Z0-9_]*",
        c = "(?:" + l + "(?==))",
        h = "(?:\\$(?:SHLVL|\\$|\\!|\\?))",
        p = "(?:" + l + "\\s*\\(\\))";
    this.$rules = {
      start: [{
        token: "constant",
        regex: /\\./
      }, {
        token: ["text", "comment"],
        regex: /(^|\s)(#.*)$/
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "constant.language.escape",
          regex: /\\(?:[$`"\\]|$)/
        }, {
          include: "variables"
        }, {
          token: "keyword.operator",
          regex: /`/
        }, {
          token: "string.end",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: "\\$'",
        push: [{
          token: "constant.language.escape",
          regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/
        }, {
          token: "string",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        regex: "<<<",
        token: "keyword.operator"
      }, {
        stateName: "heredoc",
        regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",
        onMatch: function onMatch(e, t, n) {
          var r = e[2] == "-" ? "indentedHeredoc" : "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[4]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "text",
            value: i[2]
          }, {
            type: "string",
            value: i[3]
          }, {
            type: "support.class",
            value: i[4]
          }, {
            type: "string",
            value: i[5]
          }];
        },
        rules: {
          heredoc: [{
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }],
          indentedHeredoc: [{
            token: "string",
            regex: "^	+"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" || t[0] === "indentedHeredoc" ? t[0] : e;
        }
      }, {
        token: ["keyword", "text", "text", "text", "variable"],
        regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/
      }, {
        token: "variable.language",
        regex: h
      }, {
        token: "variable",
        regex: c
      }, {
        include: "variables"
      }, {
        token: "support.function",
        regex: p
      }, {
        token: "support.function",
        regex: f
      }, {
        token: "string",
        start: "'",
        end: "'"
      }, {
        token: "constant.numeric",
        regex: a
      }, {
        token: "constant.numeric",
        regex: t + "\\b"
      }, {
        token: e,
        regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"
      }, {
        token: "punctuation.operator",
        regex: ";"
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]]"
      }, {
        token: "paren.rparen",
        regex: "[\\)\\}]",
        next: "pop"
      }],
      variables: [{
        token: "variable",
        regex: /(\$)(\w+)/
      }, {
        token: ["variable", "paren.lparen"],
        regex: /(\$)(\()/,
        push: "start"
      }, {
        token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"],
        regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,
        push: "start"
      }, {
        token: "variable",
        regex: /\$[*@#?\-$!0_]/
      }, {
        token: ["variable", "paren.lparen"],
        regex: /(\$)(\{)/,
        push: "start"
      }]
    }, this.normalizeRules();
  };

  r.inherits(u, i), t.ShHighlightRules = u;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/sh", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/sh_highlight_rules", "ace/range", "ace/mode/folding/cstyle", "ace/mode/behaviour/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./sh_highlight_rules").ShHighlightRules,
      o = e("../range").Range,
      u = e("./folding/cstyle").FoldMode,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = function f() {
    this.HighlightRules = s, this.foldingRules = new u(), this.$behaviour = new a();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[:]\s*$/);
        o && (r += n);
      }

      return r;
    };
    var e = {
      pass: 1,
      "return": 1,
      raise: 1,
      "break": 1,
      "continue": 1
    };
    this.checkOutdent = function (t, n, r) {
      if (r !== "\r\n" && r !== "\r" && r !== "\n") return !1;
      var i = this.getTokenizer().getLineTokens(n.trim(), t).tokens;
      if (!i) return !1;

      do {
        var s = i.pop();
      } while (s && (s.type == "comment" || s.type == "text" && s.value.match(/^\s+$/)));

      return s ? s.type == "keyword" && e[s.value] : !1;
    }, this.autoOutdent = function (e, t, n) {
      n += 1;
      var r = this.$getIndent(t.getLine(n)),
          i = t.getTabString();
      r.slice(-i.length) == i && t.remove(new o(n, r.length - i.length, n, r.length));
    }, this.$id = "ace/mode/sh", this.snippetFileId = "ace/snippets/sh";
  }.call(f.prototype), t.Mode = f;
}), ace.define("ace/mode/dockerfile_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/sh_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./sh_highlight_rules").ShHighlightRules,
      s = function s() {
    i.call(this);
    var e = this.$rules.start;

    for (var t = 0; t < e.length; t++) {
      if (e[t].token == "variable.language") {
        e.splice(t, 0, {
          token: "constant.language",
          regex: "(?:^(?:FROM|MAINTAINER|RUN|CMD|EXPOSE|ENV|ADD|ENTRYPOINT|VOLUME|USER|WORKDIR|ONBUILD|COPY|LABEL)\\b)",
          caseInsensitive: !0
        });
        break;
      }
    }
  };

  r.inherits(s, i), t.DockerfileHighlightRules = s;
}), ace.define("ace/mode/dockerfile", ["require", "exports", "module", "ace/lib/oop", "ace/mode/sh", "ace/mode/dockerfile_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./sh").Mode,
      s = e("./dockerfile_highlight_rules").DockerfileHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    i.call(this), this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.$id = "ace/mode/dockerfile";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/dockerfile"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-dot.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-dot.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/dot_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/doc_comment_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      u = function u() {
    var e = i.arrayToMap("strict|node|edge|graph|digraph|subgraph".split("|")),
        t = i.arrayToMap("damping|k|url|area|arrowhead|arrowsize|arrowtail|aspect|bb|bgcolor|center|charset|clusterrank|color|colorscheme|comment|compound|concentrate|constraint|decorate|defaultdist|dim|dimen|dir|diredgeconstraints|distortion|dpi|edgeurl|edgehref|edgetarget|edgetooltip|epsilon|esep|fillcolor|fixedsize|fontcolor|fontname|fontnames|fontpath|fontsize|forcelabels|gradientangle|group|headurl|head_lp|headclip|headhref|headlabel|headport|headtarget|headtooltip|height|href|id|image|imagepath|imagescale|label|labelurl|label_scheme|labelangle|labeldistance|labelfloat|labelfontcolor|labelfontname|labelfontsize|labelhref|labeljust|labelloc|labeltarget|labeltooltip|landscape|layer|layerlistsep|layers|layerselect|layersep|layout|len|levels|levelsgap|lhead|lheight|lp|ltail|lwidth|margin|maxiter|mclimit|mindist|minlen|mode|model|mosek|nodesep|nojustify|normalize|nslimit|nslimit1|ordering|orientation|outputorder|overlap|overlap_scaling|pack|packmode|pad|page|pagedir|pencolor|penwidth|peripheries|pin|pos|quadtree|quantum|rank|rankdir|ranksep|ratio|rects|regular|remincross|repulsiveforce|resolution|root|rotate|rotation|samehead|sametail|samplepoints|scale|searchsize|sep|shape|shapefile|showboxes|sides|size|skew|smoothing|sortv|splines|start|style|stylesheet|tailurl|tail_lp|tailclip|tailhref|taillabel|tailport|tailtarget|tailtooltip|target|tooltip|truecolor|vertices|viewport|voro_margin|weight|width|xlabel|xlp|z".split("|"));
    this.$rules = {
      start: [{
        token: "comment",
        regex: /\/\/.*$/
      }, {
        token: "comment",
        regex: /#.*$/
      }, {
        token: "comment",
        merge: !0,
        regex: /\/\*/,
        next: "comment"
      }, {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /[+\-]?\d+(?:(?:\.\d*)?(?:[eE][+\-]?\d+)?)?\b/
      }, {
        token: "keyword.operator",
        regex: /\+|=|\->/
      }, {
        token: "punctuation.operator",
        regex: /,|;/
      }, {
        token: "paren.lparen",
        regex: /[\[{]/
      }, {
        token: "paren.rparen",
        regex: /[\]}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }, {
        token: function token(n) {
          return e.hasOwnProperty(n.toLowerCase()) ? "keyword" : t.hasOwnProperty(n.toLowerCase()) ? "variable" : "text";
        },
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqstring: [{
        token: "string",
        regex: '[^"\\\\]+',
        merge: !0
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring",
        merge: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "start",
        merge: !0
      }],
      qstring: [{
        token: "string",
        regex: "[^'\\\\]+",
        merge: !0
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qstring",
        merge: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "start",
        merge: !0
      }]
    };
  };

  r.inherits(u, s), t.DotHighlightRules = u;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/dot", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/matching_brace_outdent", "ace/mode/dot_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./matching_brace_outdent").MatchingBraceOutdent,
      o = e("./dot_highlight_rules").DotHighlightRules,
      u = e("./folding/cstyle").FoldMode,
      a = function a() {
    this.HighlightRules = o, this.$outdent = new s(), this.foldingRules = new u(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = ["//", "#"], this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/dot";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/dot"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-drools.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-drools.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/java_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|var",
        t = "null|Infinity|NaN|undefined",
        n = "AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",
        r = this.createKeywordMapper({
      "variable.language": "this",
      keyword: e,
      "constant.language": t,
      "support.function": n
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/
      }, {
        token: "constant.numeric",
        regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        regex: "(open(?:\\s+))?module(?=\\s*\\w)",
        token: "keyword",
        next: [{
          regex: "{",
          token: "paren.lparen",
          next: [{
            regex: "}",
            token: "paren.rparen",
            next: "start"
          }, {
            regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",
            token: "keyword"
          }]
        }, {
          token: "text",
          regex: "\\s+"
        }, {
          token: "identifier",
          regex: "\\w+"
        }, {
          token: "punctuation.operator",
          regex: "."
        }, {
          token: "text",
          regex: "\\s+"
        }, {
          regex: "",
          next: "start"
        }]
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(o, s), t.JavaHighlightRules = o;
}), ace.define("ace/mode/drools_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/java_highlight_rules", "ace/mode/doc_comment_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = e("./java_highlight_rules").JavaHighlightRules,
      o = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      u = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      a = "[a-zA-Z\\$_\xA1-\uFFFF][\\.a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      f = function f() {
    var e = "date|effective|expires|lock|on|active|no|loop|auto|focus|activation|group|agenda|ruleflow|duration|timer|calendars|refract|direct|dialect|salience|enabled|attributes|extends|template|function|contains|matches|eval|excludes|soundslike|memberof|not|in|or|and|exists|forall|over|from|entry|point|accumulate|acc|collect|action|reverse|result|end|init|instanceof|extends|super|boolean|char|byte|short|int|long|float|double|this|void|class|new|case|final|if|else|for|while|do|default|try|catch|finally|switch|synchronized|return|throw|break|continue|assert|modify|static|public|protected|private|abstract|native|transient|volatile|strictfp|throws|interface|enum|implements|type|window|trait|no-loop|str",
        t = "AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",
        n = this.createKeywordMapper({
      "variable.language": "this",
      keyword: e,
      "constant.language": "null",
      "support.class": t,
      "support.function": "retract|update|modify|insert"
    }, "identifier"),
        r = function r() {
      return [{
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }];
    },
        i = function i(e) {
      return [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, o.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: e
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }];
    },
        f = function f(e) {
      return [{
        token: "comment.block",
        regex: "\\*\\/",
        next: e
      }, {
        defaultToken: "comment.block"
      }];
    },
        l = function l() {
      return [{
        token: n,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }];
    };

    this.$rules = {
      start: [].concat(i("block.comment"), [{
        token: "entity.name.type",
        regex: "@[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: ["keyword", "text", "entity.name.type"],
        regex: "(package)(\\s+)(" + a + ")"
      }, {
        token: ["keyword", "text", "keyword", "text", "entity.name.type"],
        regex: "(import)(\\s+)(function)(\\s+)(" + a + ")"
      }, {
        token: ["keyword", "text", "entity.name.type"],
        regex: "(import)(\\s+)(" + a + ")"
      }, {
        token: ["keyword", "text", "entity.name.type", "text", "variable"],
        regex: "(global)(\\s+)(" + a + ")(\\s+)(" + u + ")"
      }, {
        token: ["keyword", "text", "keyword", "text", "entity.name.type"],
        regex: "(declare)(\\s+)(trait)(\\s+)(" + u + ")"
      }, {
        token: ["keyword", "text", "entity.name.type"],
        regex: "(declare)(\\s+)(" + u + ")"
      }, {
        token: ["keyword", "text", "entity.name.type"],
        regex: "(extends)(\\s+)(" + a + ")"
      }, {
        token: ["keyword", "text"],
        regex: "(rule)(\\s+)",
        next: "asset.name"
      }], r(), [{
        token: ["variable.other", "text", "text"],
        regex: "(" + u + ")(\\s*)(:)"
      }, {
        token: ["keyword", "text"],
        regex: "(query)(\\s+)",
        next: "asset.name"
      }, {
        token: ["keyword", "text"],
        regex: "(when)(\\s*)"
      }, {
        token: ["keyword", "text"],
        regex: "(then)(\\s*)",
        next: "java-start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }], l()),
      "block.comment": f("start"),
      "asset.name": [{
        token: "entity.name",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "entity.name",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "entity.name",
        regex: u
      }, {
        regex: "",
        token: "empty",
        next: "start"
      }]
    }, this.embedRules(o, "doc-", [o.getEndRule("start")]), this.embedRules(s, "java-", [{
      token: "support.function",
      regex: "\\b(insert|modify|retract|update)\\b"
    }, {
      token: "keyword",
      regex: "\\bend\\b",
      next: "start"
    }]);
  };

  r.inherits(f, i), t.DroolsHighlightRules = f;
}), ace.define("ace/mode/folding/drools", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = e("../../token_iterator").TokenIterator,
      u = t.FoldMode = function () {};

  r.inherits(u, s), function () {
    this.foldingStartMarker = /\b(rule|declare|query|when|then)\b/, this.foldingStopMarker = /\bend\b/, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.getLine(n),
          s = r.match(this.foldingStartMarker);

      if (s) {
        var u = s.index;

        if (s[1]) {
          var a = {
            row: n,
            column: r.length
          },
              f = new o(e, a.row, a.column),
              l = "end",
              c = f.getCurrentToken();
          c.value == "when" && (l = "then");

          while (c) {
            if (c.value == l) return i.fromPoints(a, {
              row: f.getCurrentTokenRow(),
              column: f.getCurrentTokenColumn()
            });
            c = f.stepForward();
          }
        }
      }
    };
  }.call(u.prototype);
}), ace.define("ace/mode/drools", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/drools_highlight_rules", "ace/mode/folding/drools"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./drools_highlight_rules").DroolsHighlightRules,
      o = e("./folding/drools").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.$id = "ace/mode/drools", this.snippetFileId = "ace/snippets/drools";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/drools"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-edifact.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-edifact.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/edifact_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "UNH",
        t = "ADR|AGR|AJT|ALC|ALI|APP|APR|ARD|ARR|ASI|ATT|AUT|BAS|BGM|BII|BUS|CAV|CCD|CCI|CDI|CDS|CDV|CED|CIN|CLA|CLI|CMP|CNI|CNT|COD|COM|COT|CPI|CPS|CPT|CST|CTA|CUX|DAM|DFN|DGS|DII|DIM|DLI|DLM|DMS|DOC|DRD|DSG|DSI|DTM|EDT|EFI|ELM|ELU|ELV|EMP|EQA|EQD|EQN|ERC|ERP|EVE|FCA|FII|FNS|FNT|FOR|FSQ|FTX|GDS|GEI|GID|GIN|GIR|GOR|GPO|GRU|HAN|HYN|ICD|IDE|IFD|IHC|IMD|IND|INP|INV|IRQ|LAN|LIN|LOC|MEA|MEM|MKS|MOA|MSG|MTD|NAD|NAT|PAC|PAI|PAS|PCC|PCD|PCI|PDI|PER|PGI|PIA|PNA|POC|PRC|PRI|PRV|PSD|PTY|PYT|QRS|QTY|QUA|QVR|RCS|REL|RFF|RJL|RNG|ROD|RSL|RTE|SAL|SCC|SCD|SEG|SEL|SEQ|SFI|SGP|SGU|SPR|SPS|STA|STC|STG|STS|TAX|TCC|TDT|TEM|TMD|TMP|TOD|TPL|TRU|TSR|UNB|UNZ|UNT|UGH|UGT|UNS|VLI",
        e = "UNH",
        n = "null|Infinity|NaN|undefined",
        r = "",
        s = "BY|SE|ON|INV|JP|UNOA",
        o = this.createKeywordMapper({
      "variable.language": "this",
      keyword: s,
      "entity.name.segment": t,
      "entity.name.header": e,
      "constant.language": n,
      "support.function": r
    }, "identifier");
    this.$rules = {
      start: [{
        token: "punctuation.operator",
        regex: "\\+.\\+"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: o,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+"
      }, {
        token: "punctuation.operator",
        regex: "\\:|'"
      }, {
        token: "identifier",
        regex: "\\:D\\:"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]);
  };

  o.metaData = {
    fileTypes: ["edi"],
    keyEquivalent: "^~E",
    name: "Edifact",
    scopeName: "source.edifact"
  }, r.inherits(o, s), t.EdifactHighlightRules = o;
}), ace.define("ace/mode/edifact", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/edifact_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./edifact_highlight_rules").EdifactHighlightRules,
      o = function o() {
    this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.$id = "ace/mode/edifact", this.snippetFileId = "ace/snippets/edifact";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/edifact"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-eiffel.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-eiffel.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/eiffel_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "across|agent|alias|all|attached|as|assign|attribute|check|class|convert|create|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|Precursor|redefine|rename|require|rescue|retry|select|separate|some|then|undefine|until|variant|when",
        t = "and|implies|or|xor",
        n = "Void",
        r = "True|False",
        i = "Current|Result",
        s = this.createKeywordMapper({
      "constant.language": n,
      "constant.language.boolean": r,
      "variable.language": i,
      "keyword.operator": t,
      keyword: e
    }, "identifier", !0),
        o = /(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/;
    this.$rules = {
      start: [{
        token: "string.quoted.other",
        regex: /"\[/,
        next: "aligned_verbatim_string"
      }, {
        token: "string.quoted.other",
        regex: /"\{/,
        next: "non-aligned_verbatim_string"
      }, {
        token: "string.quoted.double",
        regex: /"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/
      }, {
        token: "comment.line.double-dash",
        regex: /--.*/
      }, {
        token: "constant.character",
        regex: /'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/
      }, {
        token: "constant.numeric",
        regex: /\b0(?:[xX][\da-fA-F](?:_*[\da-fA-F])*|[cC][0-7](?:_*[0-7])*|[bB][01](?:_*[01])*)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/
      }, {
        token: "paren.lparen",
        regex: /[\[({]|<<|\|\(/
      }, {
        token: "paren.rparen",
        regex: /[\])}]|>>|\|\)/
      }, {
        token: "keyword.operator",
        regex: /:=|->|\.(?=\w)|[;,:?]/
      }, {
        token: "keyword.operator",
        regex: /\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/
      }, {
        token: function token(e) {
          var t = s(e);
          return t === "identifier" && e === e.toUpperCase() && (t = "entity.name.type"), t;
        },
        regex: /[a-zA-Z][a-zA-Z\d_]*\b/
      }, {
        token: "text",
        regex: /\s+/
      }],
      aligned_verbatim_string: [{
        token: "string",
        regex: /]"/,
        next: "start"
      }, {
        token: "string",
        regex: o
      }],
      "non-aligned_verbatim_string": [{
        token: "string.quoted.other",
        regex: /}"/,
        next: "start"
      }, {
        token: "string.quoted.other",
        regex: o
      }]
    };
  };

  r.inherits(s, i), t.EiffelHighlightRules = s;
}), ace.define("ace/mode/eiffel", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/eiffel_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./eiffel_highlight_rules").EiffelHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = "--", this.$id = "ace/mode/eiffel";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/eiffel"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-ejs.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-ejs.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/ruby_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = t.constantOtherSymbol = {
    token: "constant.other.symbol.ruby",
    regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
  };
  t.qString = {
    token: "string",
    regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
  }, t.qqString = {
    token: "string",
    regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
  }, t.tString = {
    token: "string",
    regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
  };

  var o = t.constantNumericHex = {
    token: "constant.numeric",
    regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
  },
      u = t.constantNumericBinary = {
    token: "constant.numeric",
    regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/
  },
      a = t.constantNumericDecimal = {
    token: "constant.numeric",
    regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/
  },
      f = t.constantNumericDecimal = {
    token: "constant.numeric",
    regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/
  },
      l = t.constantNumericRational = {
    token: "constant.numeric",
    regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/
  },
      c = t.constantNumericComplex = {
    token: "constant.numeric",
    regex: /\b([\d]i)\b/
  },
      h = t.constantNumericFloat = {
    token: "constant.numeric",
    regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"
  },
      p = t.instanceVariable = {
    token: "variable.instance",
    regex: "@{1,2}[a-zA-Z_\\d]+"
  },
      d = function d() {
    var e = "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method",
        t = "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend",
        n = "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION",
        r = "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",
        i = this.$keywords = this.createKeywordMapper({
      keyword: t,
      "constant.language": n,
      "variable.language": r,
      "support.function": e,
      "invalid.deprecated": "debugger"
    }, "identifier"),
        d = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",
        v = {
      "(": ")",
      "[": "]",
      "{": "}",
      "<": ">",
      "^": "^",
      "|": "|",
      "%": "%"
    };
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "comment.multiline",
        regex: "^=begin(?=$|\\s.*$)",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: /[/](?=.*\/)/,
        next: "regex"
      }, [{
        token: ["constant.other.symbol.ruby", "string.start"],
        regex: /(:)?(")/,
        push: [{
          token: "constant.language.escape",
          regex: d
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /"/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /`/,
        push: [{
          token: "constant.language.escape",
          regex: d
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /`/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: ["constant.other.symbol.ruby", "string.start"],
        regex: /(:)?(')/,
        push: [{
          token: "constant.language.escape",
          regex: /\\['\\]/
        }, {
          token: "string.end",
          regex: /'/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /%[qwx]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "qStateWithoutInterpolation", this.token;
        }
      }, {
        token: "string.start",
        regex: /%[QWX]?([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "qStateWithInterpolation", this.token;
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /%[si]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "sStateWithoutInterpolation", this.token;
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /%[SI]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "sStateWithInterpolation", this.token;
        }
      }, {
        token: "string.regexp",
        regex: /%[r]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "rState", this.token;
        }
      }], {
        token: "punctuation",
        regex: "::"
      }, p, {
        token: "variable.global",
        regex: "[$][a-zA-Z_\\d]+"
      }, {
        token: "support.class",
        regex: "[A-Z][a-zA-Z_\\d]*"
      }, {
        token: ["punctuation.operator", "support.function"],
        regex: /(\.)([a-zA-Z_\d]+)(?=\()/
      }, {
        token: ["punctuation.operator", "identifier"],
        regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/
      }, {
        token: "string.character",
        regex: "\\B\\?(?:" + d + "|\\S)"
      }, {
        token: "punctuation.operator",
        regex: /\?(?=.+:)/
      }, l, c, s, o, h, u, a, f, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: i,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "punctuation.separator.key-value",
        regex: "=>"
      }, {
        stateName: "heredoc",
        onMatch: function onMatch(e, t, n) {
          var r = e[2] == "-" || e[2] == "~" ? "indentedHeredoc" : "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[3]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "string",
            value: i[2]
          }, {
            type: "support.class",
            value: i[3]
          }, {
            type: "string",
            value: i[4]
          }];
        },
        regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",
        rules: {
          heredoc: [{
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }],
          indentedHeredoc: [{
            token: "string",
            regex: "^ +"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" || t[0] === "indentedHeredoc" ? t[0] : e;
        }
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]",
        onMatch: function onMatch(e, t, n) {
          return this.next = "", e == "}" && n.length > 1 && n[1] != "start" && (n.shift(), this.next = n.shift()), this.token;
        }
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/
      }],
      comment: [{
        token: "comment.multiline",
        regex: "^=end(?=$|\\s.*$)",
        next: "start"
      }, {
        token: "comment",
        regex: ".+"
      }],
      qStateWithInterpolation: [{
        token: "string.start",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "string";
        }
      }, {
        token: "constant.language.escape",
        regex: d
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "string.end",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "string");
        }
      }, {
        defaultToken: "string"
      }],
      qStateWithoutInterpolation: [{
        token: "string.start",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "string";
        }
      }, {
        token: "constant.language.escape",
        regex: /\\['\\]/
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "string.end",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "string");
        }
      }, {
        defaultToken: "string"
      }],
      sStateWithoutInterpolation: [{
        token: "constant.other.symbol.ruby",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.other.symbol.ruby";
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.other.symbol.ruby");
        }
      }, {
        defaultToken: "constant.other.symbol.ruby"
      }],
      sStateWithInterpolation: [{
        token: "constant.other.symbol.ruby",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.other.symbol.ruby";
        }
      }, {
        token: "constant.language.escape",
        regex: d
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "constant.other.symbol.ruby",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.other.symbol.ruby");
        }
      }, {
        defaultToken: "constant.other.symbol.ruby"
      }],
      rState: [{
        token: "string.regexp",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.language.escape";
        }
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "string.regexp",
        regex: /\//
      }, {
        token: "string.regexp",
        regex: /[)\]>}^|%][imxouesn]*/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e[0] === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.language.escape");
        }
      }, {
        include: "regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex: [{
        token: "regexp.keyword",
        regex: /\\[wWdDhHsS]/
      }, {
        token: "constant.language.escape",
        regex: /\\[AGbBzZ]/
      }, {
        token: "constant.language.escape",
        regex: /\\g<[a-zA-Z0-9]*>/
      }, {
        token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"],
        regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/
      }, {
        token: ["constant.language.escape", "invalid", "constant.language.escape"],
        regex: /(\\p{\^?)([^/]*)(})/
      }, {
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: /[/][imxouesn]*/,
        next: "start"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "regexp.keyword",
        regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        push: "regex_character_class"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.keyword",
        regex: /\\[wWdDhHsS]/
      }, {
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: /&?&?\[\^?/,
        push: "regex_character_class"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "pop"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        defaultToken: "string.regexp.characterclass"
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, i), t.RubyHighlightRules = d;
}), ace.define("ace/mode/folding/ruby", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = e("../../token_iterator").TokenIterator,
      u = t.FoldMode = function () {};

  r.inherits(u, i), function () {
    this.indentKeywords = {
      "class": 1,
      def: 1,
      module: 1,
      "do": 1,
      unless: 1,
      "if": 1,
      "while": 1,
      "for": 1,
      until: 1,
      begin: 1,
      "else": 0,
      elsif: 0,
      rescue: 0,
      ensure: 0,
      when: 0,
      end: -1,
      "case": 1,
      "=begin": 1,
      "=end": -1
    }, this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/, this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = this.foldingStartMarker.test(r),
          s = this.foldingStopMarker.test(r);

      if (i && !s) {
        var o = r.match(this.foldingStartMarker);

        if (o[1]) {
          if (o[1] == "if" || o[1] == "else" || o[1] == "while" || o[1] == "until" || o[1] == "unless") {
            if (o[1] == "else" && /^\s*else\s*$/.test(r) === !1) return;
            if (/^\s*(?:if|else|while|until|unless)\s*/.test(r) === !1) return;
          }

          if (o[1] == "when" && /\sthen\s/.test(r) === !0) return;
          if (e.getTokenAt(n, o.index + 2).type === "keyword") return "start";
        } else {
          if (!o[3]) return "start";
          if (e.getTokenAt(n, o.index + 1).type === "comment.multiline") return "start";
        }
      }

      if (t != "markbeginend" || !s || i && s) return "";
      var o = r.match(this.foldingStopMarker);

      if (o[3] === "end") {
        if (e.getTokenAt(n, o.index + 1).type === "keyword") return "end";
      } else {
        if (!o[1]) return "end";
        if (e.getTokenAt(n, o.index + 1).type === "comment.multiline") return "end";
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.doc.getLine(n),
          i = this.foldingStartMarker.exec(r);
      if (i) return i[1] || i[3] ? this.rubyBlock(e, n, i.index + 2) : this.openingBracketBlock(e, "{", n, i.index);
      var i = this.foldingStopMarker.exec(r);
      if (i) return i[3] === "end" && e.getTokenAt(n, i.index + 1).type === "keyword" ? this.rubyBlock(e, n, i.index + 1) : i[1] === "=end" && e.getTokenAt(n, i.index + 1).type === "comment.multiline" ? this.rubyBlock(e, n, i.index + 1) : this.closingBracketBlock(e, "}", n, i.index + i[0].length);
    }, this.rubyBlock = function (e, t, n, r) {
      var i = new o(e, t, n),
          u = i.getCurrentToken();
      if (!u || u.type != "keyword" && u.type != "comment.multiline") return;
      var a = u.value,
          f = e.getLine(t);

      switch (u.value) {
        case "if":
        case "unless":
        case "while":
        case "until":
          var l = new RegExp("^\\s*" + u.value);
          if (!l.test(f)) return;
          var c = this.indentKeywords[a];
          break;

        case "when":
          if (/\sthen\s/.test(f)) return;

        case "elsif":
        case "rescue":
        case "ensure":
          var c = 1;
          break;

        case "else":
          var l = new RegExp("^\\s*" + u.value + "\\s*$");
          if (!l.test(f)) return;
          var c = 1;
          break;

        default:
          var c = this.indentKeywords[a];
      }

      var h = [a];
      if (!c) return;
      var p = c === -1 ? e.getLine(t - 1).length : e.getLine(t).length,
          d = t,
          v = [];
      v.push(i.getCurrentTokenRange()), i.step = c === -1 ? i.stepBackward : i.stepForward;
      if (u.type == "comment.multiline") while (u = i.step()) {
        if (u.type !== "comment.multiline") continue;

        if (c == 1) {
          p = 6;
          if (u.value == "=end") break;
        } else if (u.value == "=begin") break;
      } else while (u = i.step()) {
        var m = !1;
        if (u.type !== "keyword") continue;
        var g = c * this.indentKeywords[u.value];
        f = e.getLine(i.getCurrentTokenRow());

        switch (u.value) {
          case "do":
            for (var y = i.$tokenIndex - 1; y >= 0; y--) {
              var b = i.$rowTokens[y];

              if (b && (b.value == "while" || b.value == "until" || b.value == "for")) {
                g = 0;
                break;
              }
            }

            break;

          case "else":
            var l = new RegExp("^\\s*" + u.value + "\\s*$");
            if (!l.test(f) || a == "case") g = 0, m = !0;
            break;

          case "if":
          case "unless":
          case "while":
          case "until":
            var l = new RegExp("^\\s*" + u.value);
            l.test(f) || (g = 0, m = !0);
            break;

          case "when":
            if (/\sthen\s/.test(f) || a == "case") g = 0, m = !0;
        }

        if (g > 0) h.unshift(u.value);else if (g <= 0 && m === !1) {
          h.shift();

          if (!h.length) {
            if ((a == "while" || a == "until" || a == "for") && u.value != "do") break;
            if (u.value == "do" && c == -1 && g != 0) break;
            if (u.value != "do") break;
          }

          g === 0 && h.unshift(u.value);
        }
      }
      if (!u) return null;
      if (r) return v.push(i.getCurrentTokenRange()), v;
      var t = i.getCurrentTokenRow();

      if (c === -1) {
        if (u.type === "comment.multiline") var w = 6;else var w = e.getLine(t).length;
        return new s(t, w, d - 1, p);
      }

      return new s(d, p, t - 1, e.getLine(t - 1).length);
    };
  }.call(u.prototype);
}), ace.define("ace/mode/ruby", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/ruby_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/ruby"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./ruby_highlight_rules").RubyHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/ruby").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f(), this.indentKeywords = this.foldingRules.indentKeywords;
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[]\s*$/),
            u = t.match(/^\s*(class|def|module)\s.*$/),
            a = t.match(/.*do(\s*|\s+\|.*\|\s*)$/),
            f = t.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);
        if (o || u || a || f) r += n;
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return /^\s+(end|else|rescue|ensure)$/.test(t + n) || this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n);
      if (/}/.test(r)) return this.$outdent.autoOutdent(t, n);
      var i = this.$getIndent(r),
          s = t.getLine(n - 1),
          o = this.$getIndent(s),
          a = t.getTabString();
      o.length <= i.length && i.slice(-a.length) == a && t.remove(new u(n, i.length - a.length, n, i.length));
    }, this.getMatching = function (e, t, n) {
      if (t == undefined) {
        var r = e.selection.lead;
        n = r.column, t = r.row;
      }

      var i = e.getTokenAt(t, n);
      if (i && i.value in this.indentKeywords) return this.foldingRules.rubyBlock(e, t, n, !0);
    }, this.$id = "ace/mode/ruby", this.snippetFileId = "ace/snippets/ruby";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/ejs", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/lib/oop", "ace/mode/html", "ace/mode/javascript", "ace/mode/css", "ace/mode/ruby"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = function o(e, t) {
    i.call(this), e || (e = "(?:<%|<\\?|{{)"), t || (t = "(?:%>|\\?>|}})");

    for (var n in this.$rules) {
      this.$rules[n].unshift({
        token: "markup.list.meta.tag",
        regex: e + "(?![>}])[-=]?",
        push: "ejs-start"
      });
    }

    this.embedRules(new s({
      jsx: !1
    }).getRules(), "ejs-", [{
      token: "markup.list.meta.tag",
      regex: "-?" + t,
      next: "pop"
    }, {
      token: "comment",
      regex: "//.*?" + t,
      next: "pop"
    }]), this.normalizeRules();
  };

  r.inherits(o, i), t.EjsHighlightRules = o;

  var r = e("../lib/oop"),
      u = e("./html").Mode,
      a = e("./javascript").Mode,
      f = e("./css").Mode,
      l = e("./ruby").Mode,
      c = function c() {
    u.call(this), this.HighlightRules = o, this.createModeDelegates({
      "js-": a,
      "css-": f,
      "ejs-": a
    });
  };

  r.inherits(c, u), function () {
    this.$id = "ace/mode/ejs";
  }.call(c.prototype), t.Mode = c;
});

(function () {
  ace.require(["ace/mode/ejs"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-elixir.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-elixir.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/elixir_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: ["meta.module.elixir", "keyword.control.module.elixir", "meta.module.elixir", "entity.name.type.module.elixir"],
        regex: "^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)"
      }, {
        token: "comment.documentation.heredoc",
        regex: '@(?:module|type)?doc (?:~[a-z])?"""',
        push: [{
          token: "comment.documentation.heredoc",
          regex: '\\s*"""',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "comment.documentation.heredoc"
        }],
        comment: "@doc with heredocs is treated as documentation"
      }, {
        token: "comment.documentation.heredoc",
        regex: '@(?:module|type)?doc ~[A-Z]"""',
        push: [{
          token: "comment.documentation.heredoc",
          regex: '\\s*"""',
          next: "pop"
        }, {
          defaultToken: "comment.documentation.heredoc"
        }],
        comment: "@doc with heredocs is treated as documentation"
      }, {
        token: "comment.documentation.heredoc",
        regex: "@(?:module|type)?doc (?:~[a-z])?'''",
        push: [{
          token: "comment.documentation.heredoc",
          regex: "\\s*'''",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "comment.documentation.heredoc"
        }],
        comment: "@doc with heredocs is treated as documentation"
      }, {
        token: "comment.documentation.heredoc",
        regex: "@(?:module|type)?doc ~[A-Z]'''",
        push: [{
          token: "comment.documentation.heredoc",
          regex: "\\s*'''",
          next: "pop"
        }, {
          defaultToken: "comment.documentation.heredoc"
        }],
        comment: "@doc with heredocs is treated as documentation"
      }, {
        token: "comment.documentation.false",
        regex: "@(?:module|type)?doc false",
        comment: "@doc false is treated as documentation"
      }, {
        token: "comment.documentation.string",
        regex: '@(?:module|type)?doc "',
        push: [{
          token: "comment.documentation.string",
          regex: '"',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "comment.documentation.string"
        }],
        comment: "@doc with string is treated as documentation"
      }, {
        token: "keyword.control.elixir",
        regex: "\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])"
      }, {
        token: "keyword.operator.elixir",
        regex: "\\b(?:and|not|or|when|xor|in|inlist|inbits)\\b",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?<!\\.)\\b(and|not|or|when|xor|in|inlist|inbits)\\b",
        comment: " as above, just doesn't need a 'end' and does a logic operation"
      }, {
        token: "constant.language.elixir",
        regex: "\\b(?:nil|true|false)\\b(?![?!])"
      }, {
        token: "variable.language.elixir",
        regex: "\\b__(?:CALLER|ENV|MODULE|DIR)__\\b(?![?!])"
      }, {
        token: ["punctuation.definition.variable.elixir", "variable.other.readwrite.module.elixir"],
        regex: "(@)([a-zA-Z_]\\w*)"
      }, {
        token: ["punctuation.definition.variable.elixir", "variable.other.anonymous.elixir"],
        regex: "(&)(\\d*)"
      }, {
        token: "variable.other.constant.elixir",
        regex: "\\b[A-Z]\\w*\\b"
      }, {
        token: "constant.numeric.elixir",
        regex: "\\b(?:0x[\\da-fA-F](?:_?[\\da-fA-F])*|\\d(?:_?\\d)*(?:\\.(?![^[:space:][:digit:]])(?:_?\\d)*)?(?:[eE][-+]?\\d(?:_?\\d)*)?|0b[01]+|0o[0-7]+)\\b",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "\\b(0x\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b"
      }, {
        token: "punctuation.definition.constant.elixir",
        regex: ":'",
        push: [{
          token: "punctuation.definition.constant.elixir",
          regex: "'",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "constant.other.symbol.single-quoted.elixir"
        }]
      }, {
        token: "punctuation.definition.constant.elixir",
        regex: ':"',
        push: [{
          token: "punctuation.definition.constant.elixir",
          regex: '"',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "constant.other.symbol.double-quoted.elixir"
        }]
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "(?:''')",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?>''')",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "^\\s*'''",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "support.function.variable.quoted.single.heredoc.elixir"
        }],
        comment: "Single-quoted heredocs"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "'",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "'",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "support.function.variable.quoted.single.elixir"
        }],
        comment: "single quoted string (allows for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: '(?:""")',
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: '(?>""")',
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: '^\\s*"""',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.quoted.double.heredoc.elixir"
        }],
        comment: "Double-quoted heredocs"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: '"',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.quoted.double.elixir"
        }],
        comment: "double quoted string (allows for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: '~[a-z](?:""")',
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: '~[a-z](?>""")',
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: '^\\s*"""',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.quoted.double.heredoc.elixir"
        }],
        comment: "Double-quoted heredocs sigils"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[a-z]\\{",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\}[a-z]*",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.interpolated.elixir"
        }],
        comment: "sigil (allow for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[a-z]\\[",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\][a-z]*",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.interpolated.elixir"
        }],
        comment: "sigil (allow for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[a-z]\\<",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\>[a-z]*",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.interpolated.elixir"
        }],
        comment: "sigil (allow for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[a-z]\\(",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\)[a-z]*",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.interpolated.elixir"
        }],
        comment: "sigil (allow for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[a-z][^\\w]",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "[^\\w][a-z]*",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.interpolated.elixir"
        }],
        comment: "sigil (allow for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: '~[A-Z](?:""")',
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: '~[A-Z](?>""")',
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: '^\\s*"""',
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "Double-quoted heredocs sigils"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[A-Z]\\{",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\}[a-z]*",
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "sigil (without interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[A-Z]\\[",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\][a-z]*",
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "sigil (without interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[A-Z]\\<",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\>[a-z]*",
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "sigil (without interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[A-Z]\\(",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\)[a-z]*",
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "sigil (without interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[A-Z][^\\w]",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "[^\\w][a-z]*",
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "sigil (without interpolation)"
      }, {
        token: ["punctuation.definition.constant.elixir", "constant.other.symbol.elixir"],
        regex: "(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",
        comment: "symbols"
      }, {
        token: "punctuation.definition.constant.elixir",
        regex: "(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",
        comment: "symbols"
      }, {
        token: ["punctuation.definition.comment.elixir", "comment.line.number-sign.elixir"],
        regex: "(#)(.*)"
      }, {
        token: "constant.numeric.elixir",
        regex: "\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|[^xMC])|[^\\s\\\\])",
        comment: '\n			matches questionmark-letters.\n\n			examples (1st alternation = hex):\n			?\\x1     ?\\x61\n\n			examples (2rd alternation = escaped):\n			?\\n      ?\\b\n\n			examples (3rd alternation = normal):\n			?a       ?A       ?0 \n			?*       ?"       ?( \n			?.       ?#\n			\n			the negative lookbehind prevents against matching\n			p(42.tainted?)\n			'
      }, {
        token: "keyword.operator.assignment.augmented.elixir",
        regex: "\\+=|\\-=|\\|\\|=|~=|&&="
      }, {
        token: "keyword.operator.comparison.elixir",
        regex: "===?|!==?|<=?|>=?"
      }, {
        token: "keyword.operator.bitwise.elixir",
        regex: "\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}"
      }, {
        token: "keyword.operator.logical.elixir",
        regex: "!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",
        originalRegex: "(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b"
      }, {
        token: "keyword.operator.arithmetic.elixir",
        regex: "\\*|\\+|\\-|/"
      }, {
        token: "keyword.operator.other.elixir",
        regex: "\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>"
      }, {
        token: "keyword.operator.assignment.elixir",
        regex: "="
      }, {
        token: "punctuation.separator.other.elixir",
        regex: ":"
      }, {
        token: "punctuation.separator.statement.elixir",
        regex: "\\;"
      }, {
        token: "punctuation.separator.object.elixir",
        regex: ","
      }, {
        token: "punctuation.separator.method.elixir",
        regex: "\\."
      }, {
        token: "punctuation.section.scope.elixir",
        regex: "\\{|\\}"
      }, {
        token: "punctuation.section.array.elixir",
        regex: "\\[|\\]"
      }, {
        token: "punctuation.section.function.elixir",
        regex: "\\(|\\)"
      }],
      "#escaped_char": [{
        token: "constant.character.escape.elixir",
        regex: "\\\\(?:x[\\da-fA-F]{1,2}|.)"
      }],
      "#interpolated_elixir": [{
        token: ["source.elixir.embedded.source", "source.elixir.embedded.source.empty"],
        regex: "(#\\{)(\\})"
      }, {
        todo: {
          token: "punctuation.section.embedded.elixir",
          regex: "#\\{",
          push: [{
            token: "punctuation.section.embedded.elixir",
            regex: "\\}",
            next: "pop"
          }, {
            include: "#nest_curly_and_self"
          }, {
            include: "$self"
          }, {
            defaultToken: "source.elixir.embedded.source"
          }]
        }
      }],
      "#nest_curly_and_self": [{
        token: "punctuation.section.scope.elixir",
        regex: "\\{",
        push: [{
          token: "punctuation.section.scope.elixir",
          regex: "\\}",
          next: "pop"
        }, {
          include: "#nest_curly_and_self"
        }]
      }, {
        include: "$self"
      }],
      "#regex_sub": [{
        include: "#interpolated_elixir"
      }, {
        include: "#escaped_char"
      }, {
        token: ["punctuation.definition.arbitrary-repitition.elixir", "string.regexp.arbitrary-repitition.elixir", "string.regexp.arbitrary-repitition.elixir", "punctuation.definition.arbitrary-repitition.elixir"],
        regex: "(\\{)(\\d+)((?:,\\d+)?)(\\})"
      }, {
        token: "punctuation.definition.character-class.elixir",
        regex: "\\[(?:\\^?\\])?",
        push: [{
          token: "punctuation.definition.character-class.elixir",
          regex: "\\]",
          next: "pop"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.regexp.character-class.elixir"
        }]
      }, {
        token: "punctuation.definition.group.elixir",
        regex: "\\(",
        push: [{
          token: "punctuation.definition.group.elixir",
          regex: "\\)",
          next: "pop"
        }, {
          include: "#regex_sub"
        }, {
          defaultToken: "string.regexp.group.elixir"
        }]
      }, {
        token: ["punctuation.definition.comment.elixir", "comment.line.number-sign.elixir"],
        regex: "(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)",
        originalRegex: "(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",
        comment: "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags."
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    comment: "Textmate bundle for Elixir Programming Language.",
    fileTypes: ["ex", "exs"],
    firstLineMatch: "^#!/.*\\belixir",
    foldingStartMarker: "(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",
    foldingStopMarker: "^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",
    keyEquivalent: "^~E",
    name: "Elixir",
    scopeName: "source.elixir"
  }, r.inherits(s, i), t.ElixirHighlightRules = s;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/elixir", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/elixir_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./elixir_highlight_rules").ElixirHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.$id = "ace/mode/elixir";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/elixir"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-elm.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-elm.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/elm_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = this.createKeywordMapper({
      keyword: "as|case|class|data|default|deriving|do|else|export|foreign|hiding|jsevent|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|open|then|type|where|_|port|\u03BB"
    }, "identifier"),
        t = /\\(\d+|['"\\&trnbvf])/,
        n = /[a-z_]/.source,
        r = /[A-Z]/.source,
        i = /[a-z_A-Z0-9']/.source;
    this.$rules = {
      start: [{
        token: "string.start",
        regex: '"',
        next: "string"
      }, {
        token: "string.character",
        regex: "'(?:" + t.source + "|.)'?"
      }, {
        regex: /0(?:[xX][0-9A-Fa-f]+|[oO][0-7]+)|\d+(\.\d+)?([eE][-+]?\d*)?/,
        token: "constant.numeric"
      }, {
        token: "comment",
        regex: "--.*"
      }, {
        token: "keyword",
        regex: /\.\.|\||:|=|\\|"|->|<-|\u2192/
      }, {
        token: "keyword.operator",
        regex: /[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]+/
      }, {
        token: "operator.punctuation",
        regex: /[,;`]/
      }, {
        regex: r + i + "+\\.?",
        token: function token(e) {
          return e[e.length - 1] == "." ? "entity.name.function" : "constant.language";
        }
      }, {
        regex: "^" + n + i + "+",
        token: function token(e) {
          return "constant.language";
        }
      }, {
        token: e,
        regex: "[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"
      }, {
        regex: "{-#?",
        token: "comment.start",
        onMatch: function onMatch(e, t, n) {
          return this.next = e.length == 2 ? "blockComment" : "docComment", this.token;
        }
      }, {
        token: "variable.language",
        regex: /\[markdown\|/,
        next: "markdown"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }],
      markdown: [{
        regex: /\|\]/,
        next: "start"
      }, {
        defaultToken: "string"
      }],
      blockComment: [{
        regex: "{-",
        token: "comment.start",
        push: "blockComment"
      }, {
        regex: "-}",
        token: "comment.end",
        next: "pop"
      }, {
        defaultToken: "comment"
      }],
      docComment: [{
        regex: "{-",
        token: "comment.start",
        push: "docComment"
      }, {
        regex: "-}",
        token: "comment.end",
        next: "pop"
      }, {
        defaultToken: "doc.comment"
      }],
      string: [{
        token: "constant.language.escape",
        regex: t
      }, {
        token: "text",
        regex: /\\(\s|$)/,
        next: "stringGap"
      }, {
        token: "string.end",
        regex: '"',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      stringGap: [{
        token: "text",
        regex: /\\/,
        next: "string"
      }, {
        token: "error",
        regex: "",
        next: "start"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.ElmHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/elm", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/elm_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./elm_highlight_rules").ElmHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "--", this.blockComment = {
      start: "{-",
      end: "-}",
      nestable: !0
    }, this.$id = "ace/mode/elm";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/elm"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-erlang.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-erlang.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/erlang_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        include: "#module-directive"
      }, {
        include: "#import-export-directive"
      }, {
        include: "#behaviour-directive"
      }, {
        include: "#record-directive"
      }, {
        include: "#define-directive"
      }, {
        include: "#macro-directive"
      }, {
        include: "#directive"
      }, {
        include: "#function"
      }, {
        include: "#everything-else"
      }],
      "#atom": [{
        token: "punctuation.definition.symbol.begin.erlang",
        regex: "'",
        push: [{
          token: "punctuation.definition.symbol.end.erlang",
          regex: "'",
          next: "pop"
        }, {
          token: ["punctuation.definition.escape.erlang", "constant.other.symbol.escape.erlang", "punctuation.definition.escape.erlang", "constant.other.symbol.escape.erlang", "constant.other.symbol.escape.erlang"],
          regex: "(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"
        }, {
          token: "invalid.illegal.atom.erlang",
          regex: "\\\\\\^?.?"
        }, {
          defaultToken: "constant.other.symbol.quoted.single.erlang"
        }]
      }, {
        token: "constant.other.symbol.unquoted.erlang",
        regex: "[a-z][a-zA-Z\\d@_]*"
      }],
      "#behaviour-directive": [{
        token: ["meta.directive.behaviour.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.behaviour.erlang", "keyword.control.directive.behaviour.erlang", "meta.directive.behaviour.erlang", "punctuation.definition.parameters.begin.erlang", "meta.directive.behaviour.erlang", "entity.name.type.class.behaviour.definition.erlang", "meta.directive.behaviour.erlang", "punctuation.definition.parameters.end.erlang", "meta.directive.behaviour.erlang", "punctuation.section.directive.end.erlang"],
        regex: "^(\\s*)(-)(\\s*)(behaviour)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)"
      }],
      "#binary": [{
        token: "punctuation.definition.binary.begin.erlang",
        regex: "<<",
        push: [{
          token: "punctuation.definition.binary.end.erlang",
          regex: ">>",
          next: "pop"
        }, {
          token: ["punctuation.separator.binary.erlang", "punctuation.separator.value-size.erlang"],
          regex: "(,)|(:)"
        }, {
          include: "#internal-type-specifiers"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.structure.binary.erlang"
        }]
      }],
      "#character": [{
        token: ["punctuation.definition.character.erlang", "punctuation.definition.escape.erlang", "constant.character.escape.erlang", "punctuation.definition.escape.erlang", "constant.character.escape.erlang", "constant.character.escape.erlang"],
        regex: "(\\$)(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"
      }, {
        token: "invalid.illegal.character.erlang",
        regex: "\\$\\\\\\^?.?"
      }, {
        token: ["punctuation.definition.character.erlang", "constant.character.erlang"],
        regex: "(\\$)(\\S)"
      }, {
        token: "invalid.illegal.character.erlang",
        regex: "\\$.?"
      }],
      "#comment": [{
        token: "punctuation.definition.comment.erlang",
        regex: "%.*$",
        push_: [{
          token: "comment.line.percentage.erlang",
          regex: "$",
          next: "pop"
        }, {
          defaultToken: "comment.line.percentage.erlang"
        }]
      }],
      "#define-directive": [{
        token: ["meta.directive.define.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.define.erlang", "keyword.control.directive.define.erlang", "meta.directive.define.erlang", "punctuation.definition.parameters.begin.erlang", "meta.directive.define.erlang", "entity.name.function.macro.definition.erlang", "meta.directive.define.erlang", "punctuation.separator.parameters.erlang"],
        regex: "^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(,)",
        push: [{
          token: ["punctuation.definition.parameters.end.erlang", "meta.directive.define.erlang", "punctuation.section.directive.end.erlang"],
          regex: "(\\))(\\s*)(\\.)",
          next: "pop"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.directive.define.erlang"
        }]
      }, {
        token: "meta.directive.define.erlang",
        regex: "(?=^\\s*-\\s*define\\s*\\(\\s*[a-zA-Z\\d@_]+\\s*\\()",
        push: [{
          token: ["punctuation.definition.parameters.end.erlang", "meta.directive.define.erlang", "punctuation.section.directive.end.erlang"],
          regex: "(\\))(\\s*)(\\.)",
          next: "pop"
        }, {
          token: ["text", "punctuation.section.directive.begin.erlang", "text", "keyword.control.directive.define.erlang", "text", "punctuation.definition.parameters.begin.erlang", "text", "entity.name.function.macro.definition.erlang", "text", "punctuation.definition.parameters.begin.erlang"],
          regex: "^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\()",
          push: [{
            token: ["punctuation.definition.parameters.end.erlang", "text", "punctuation.separator.parameters.erlang"],
            regex: "(\\))(\\s*)(,)",
            next: "pop"
          }, {
            token: "punctuation.separator.parameters.erlang",
            regex: ","
          }, {
            include: "#everything-else"
          }]
        }, {
          token: "punctuation.separator.define.erlang",
          regex: "\\|\\||\\||:|;|,|\\.|->"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.directive.define.erlang"
        }]
      }],
      "#directive": [{
        token: ["meta.directive.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.erlang", "keyword.control.directive.erlang", "meta.directive.erlang", "punctuation.definition.parameters.begin.erlang"],
        regex: "^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\(?)",
        push: [{
          token: ["punctuation.definition.parameters.end.erlang", "meta.directive.erlang", "punctuation.section.directive.end.erlang"],
          regex: "(\\)?)(\\s*)(\\.)",
          next: "pop"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.directive.erlang"
        }]
      }, {
        token: ["meta.directive.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.erlang", "keyword.control.directive.erlang", "meta.directive.erlang", "punctuation.section.directive.end.erlang"],
        regex: "^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\.)"
      }],
      "#everything-else": [{
        include: "#comment"
      }, {
        include: "#record-usage"
      }, {
        include: "#macro-usage"
      }, {
        include: "#expression"
      }, {
        include: "#keyword"
      }, {
        include: "#textual-operator"
      }, {
        include: "#function-call"
      }, {
        include: "#tuple"
      }, {
        include: "#list"
      }, {
        include: "#binary"
      }, {
        include: "#parenthesized-expression"
      }, {
        include: "#character"
      }, {
        include: "#number"
      }, {
        include: "#atom"
      }, {
        include: "#string"
      }, {
        include: "#symbolic-operator"
      }, {
        include: "#variable"
      }],
      "#expression": [{
        token: "keyword.control.if.erlang",
        regex: "\\bif\\b",
        push: [{
          token: "keyword.control.end.erlang",
          regex: "\\bend\\b",
          next: "pop"
        }, {
          include: "#internal-expression-punctuation"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.expression.if.erlang"
        }]
      }, {
        token: "keyword.control.case.erlang",
        regex: "\\bcase\\b",
        push: [{
          token: "keyword.control.end.erlang",
          regex: "\\bend\\b",
          next: "pop"
        }, {
          include: "#internal-expression-punctuation"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.expression.case.erlang"
        }]
      }, {
        token: "keyword.control.receive.erlang",
        regex: "\\breceive\\b",
        push: [{
          token: "keyword.control.end.erlang",
          regex: "\\bend\\b",
          next: "pop"
        }, {
          include: "#internal-expression-punctuation"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.expression.receive.erlang"
        }]
      }, {
        token: ["keyword.control.fun.erlang", "text", "entity.name.type.class.module.erlang", "text", "punctuation.separator.module-function.erlang", "text", "entity.name.function.erlang", "text", "punctuation.separator.function-arity.erlang"],
        regex: "\\b(fun)(\\s*)(?:([a-z][a-zA-Z\\d@_]*)(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*)(\\s*)(/)"
      }, {
        token: "keyword.control.fun.erlang",
        regex: "\\bfun\\b",
        push: [{
          token: "keyword.control.end.erlang",
          regex: "\\bend\\b",
          next: "pop"
        }, {
          token: "text",
          regex: "(?=\\()",
          push: [{
            token: "punctuation.separator.clauses.erlang",
            regex: ";|(?=\\bend\\b)",
            next: "pop"
          }, {
            include: "#internal-function-parts"
          }]
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.expression.fun.erlang"
        }]
      }, {
        token: "keyword.control.try.erlang",
        regex: "\\btry\\b",
        push: [{
          token: "keyword.control.end.erlang",
          regex: "\\bend\\b",
          next: "pop"
        }, {
          include: "#internal-expression-punctuation"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.expression.try.erlang"
        }]
      }, {
        token: "keyword.control.begin.erlang",
        regex: "\\bbegin\\b",
        push: [{
          token: "keyword.control.end.erlang",
          regex: "\\bend\\b",
          next: "pop"
        }, {
          include: "#internal-expression-punctuation"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.expression.begin.erlang"
        }]
      }, {
        token: "keyword.control.query.erlang",
        regex: "\\bquery\\b",
        push: [{
          token: "keyword.control.end.erlang",
          regex: "\\bend\\b",
          next: "pop"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.expression.query.erlang"
        }]
      }],
      "#function": [{
        token: ["meta.function.erlang", "entity.name.function.definition.erlang", "meta.function.erlang"],
        regex: "^(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(?=\\()",
        push: [{
          token: "punctuation.terminator.function.erlang",
          regex: "\\.",
          next: "pop"
        }, {
          token: ["text", "entity.name.function.erlang", "text"],
          regex: "^(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(?=\\()"
        }, {
          token: "text",
          regex: "(?=\\()",
          push: [{
            token: "punctuation.separator.clauses.erlang",
            regex: ";|(?=\\.)",
            next: "pop"
          }, {
            include: "#parenthesized-expression"
          }, {
            include: "#internal-function-parts"
          }]
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.function.erlang"
        }]
      }],
      "#function-call": [{
        token: "meta.function-call.erlang",
        regex: "(?=(?:[a-z][a-zA-Z\\d@_]*|'[^']*')\\s*(?:\\(|:\\s*(?:[a-z][a-zA-Z\\d@_]*|'[^']*')\\s*\\())",
        push: [{
          token: "punctuation.definition.parameters.end.erlang",
          regex: "\\)",
          next: "pop"
        }, {
          token: ["entity.name.type.class.module.erlang", "text", "punctuation.separator.module-function.erlang", "text", "entity.name.function.guard.erlang", "text", "punctuation.definition.parameters.begin.erlang"],
          regex: "(?:(erlang)(\\s*)(:)(\\s*))?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)(\\s*)(\\()",
          push: [{
            token: "text",
            regex: "(?=\\))",
            next: "pop"
          }, {
            token: "punctuation.separator.parameters.erlang",
            regex: ","
          }, {
            include: "#everything-else"
          }]
        }, {
          token: ["entity.name.type.class.module.erlang", "text", "punctuation.separator.module-function.erlang", "text", "entity.name.function.erlang", "text", "punctuation.definition.parameters.begin.erlang"],
          regex: "(?:([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(\\()",
          push: [{
            token: "text",
            regex: "(?=\\))",
            next: "pop"
          }, {
            token: "punctuation.separator.parameters.erlang",
            regex: ","
          }, {
            include: "#everything-else"
          }]
        }, {
          defaultToken: "meta.function-call.erlang"
        }]
      }],
      "#import-export-directive": [{
        token: ["meta.directive.import.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.import.erlang", "keyword.control.directive.import.erlang", "meta.directive.import.erlang", "punctuation.definition.parameters.begin.erlang", "meta.directive.import.erlang", "entity.name.type.class.module.erlang", "meta.directive.import.erlang", "punctuation.separator.parameters.erlang"],
        regex: "^(\\s*)(-)(\\s*)(import)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(,)",
        push: [{
          token: ["punctuation.definition.parameters.end.erlang", "meta.directive.import.erlang", "punctuation.section.directive.end.erlang"],
          regex: "(\\))(\\s*)(\\.)",
          next: "pop"
        }, {
          include: "#internal-function-list"
        }, {
          defaultToken: "meta.directive.import.erlang"
        }]
      }, {
        token: ["meta.directive.export.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.export.erlang", "keyword.control.directive.export.erlang", "meta.directive.export.erlang", "punctuation.definition.parameters.begin.erlang"],
        regex: "^(\\s*)(-)(\\s*)(export)(\\s*)(\\()",
        push: [{
          token: ["punctuation.definition.parameters.end.erlang", "meta.directive.export.erlang", "punctuation.section.directive.end.erlang"],
          regex: "(\\))(\\s*)(\\.)",
          next: "pop"
        }, {
          include: "#internal-function-list"
        }, {
          defaultToken: "meta.directive.export.erlang"
        }]
      }],
      "#internal-expression-punctuation": [{
        token: ["punctuation.separator.clause-head-body.erlang", "punctuation.separator.clauses.erlang", "punctuation.separator.expressions.erlang"],
        regex: "(->)|(;)|(,)"
      }],
      "#internal-function-list": [{
        token: "punctuation.definition.list.begin.erlang",
        regex: "\\[",
        push: [{
          token: "punctuation.definition.list.end.erlang",
          regex: "\\]",
          next: "pop"
        }, {
          token: ["entity.name.function.erlang", "text", "punctuation.separator.function-arity.erlang"],
          regex: "([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(/)",
          push: [{
            token: "punctuation.separator.list.erlang",
            regex: ",|(?=\\])",
            next: "pop"
          }, {
            include: "#everything-else"
          }]
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.structure.list.function.erlang"
        }]
      }],
      "#internal-function-parts": [{
        token: "text",
        regex: "(?=\\()",
        push: [{
          token: "punctuation.separator.clause-head-body.erlang",
          regex: "->",
          next: "pop"
        }, {
          token: "punctuation.definition.parameters.begin.erlang",
          regex: "\\(",
          push: [{
            token: "punctuation.definition.parameters.end.erlang",
            regex: "\\)",
            next: "pop"
          }, {
            token: "punctuation.separator.parameters.erlang",
            regex: ","
          }, {
            include: "#everything-else"
          }]
        }, {
          token: "punctuation.separator.guards.erlang",
          regex: ",|;"
        }, {
          include: "#everything-else"
        }]
      }, {
        token: "punctuation.separator.expressions.erlang",
        regex: ","
      }, {
        include: "#everything-else"
      }],
      "#internal-record-body": [{
        token: "punctuation.definition.class.record.begin.erlang",
        regex: "\\{",
        push: [{
          token: "meta.structure.record.erlang",
          regex: "(?=\\})",
          next: "pop"
        }, {
          token: ["variable.other.field.erlang", "variable.language.omitted.field.erlang", "text", "keyword.operator.assignment.erlang"],
          regex: "(?:([a-z][a-zA-Z\\d@_]*|'[^']*')|(_))(\\s*)(=|::)",
          push: [{
            token: "punctuation.separator.class.record.erlang",
            regex: ",|(?=\\})",
            next: "pop"
          }, {
            include: "#everything-else"
          }]
        }, {
          token: ["variable.other.field.erlang", "text", "punctuation.separator.class.record.erlang"],
          regex: "([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)((?:,)?)"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.structure.record.erlang"
        }]
      }],
      "#internal-type-specifiers": [{
        token: "punctuation.separator.value-type.erlang",
        regex: "/",
        push: [{
          token: "text",
          regex: "(?=,|:|>>)",
          next: "pop"
        }, {
          token: ["storage.type.erlang", "storage.modifier.signedness.erlang", "storage.modifier.endianness.erlang", "storage.modifier.unit.erlang", "punctuation.separator.type-specifiers.erlang"],
          regex: "(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)"
        }]
      }],
      "#keyword": [{
        token: "keyword.control.erlang",
        regex: "\\b(?:after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\b"
      }],
      "#list": [{
        token: "punctuation.definition.list.begin.erlang",
        regex: "\\[",
        push: [{
          token: "punctuation.definition.list.end.erlang",
          regex: "\\]",
          next: "pop"
        }, {
          token: "punctuation.separator.list.erlang",
          regex: "\\||\\|\\||,"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.structure.list.erlang"
        }]
      }],
      "#macro-directive": [{
        token: ["meta.directive.ifdef.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.ifdef.erlang", "keyword.control.directive.ifdef.erlang", "meta.directive.ifdef.erlang", "punctuation.definition.parameters.begin.erlang", "meta.directive.ifdef.erlang", "entity.name.function.macro.erlang", "meta.directive.ifdef.erlang", "punctuation.definition.parameters.end.erlang", "meta.directive.ifdef.erlang", "punctuation.section.directive.end.erlang"],
        regex: "^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"
      }, {
        token: ["meta.directive.ifndef.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.ifndef.erlang", "keyword.control.directive.ifndef.erlang", "meta.directive.ifndef.erlang", "punctuation.definition.parameters.begin.erlang", "meta.directive.ifndef.erlang", "entity.name.function.macro.erlang", "meta.directive.ifndef.erlang", "punctuation.definition.parameters.end.erlang", "meta.directive.ifndef.erlang", "punctuation.section.directive.end.erlang"],
        regex: "^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"
      }, {
        token: ["meta.directive.undef.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.undef.erlang", "keyword.control.directive.undef.erlang", "meta.directive.undef.erlang", "punctuation.definition.parameters.begin.erlang", "meta.directive.undef.erlang", "entity.name.function.macro.erlang", "meta.directive.undef.erlang", "punctuation.definition.parameters.end.erlang", "meta.directive.undef.erlang", "punctuation.section.directive.end.erlang"],
        regex: "^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"
      }],
      "#macro-usage": [{
        token: ["keyword.operator.macro.erlang", "meta.macro-usage.erlang", "entity.name.function.macro.erlang"],
        regex: "(\\?\\??)(\\s*)([a-zA-Z\\d@_]+)"
      }],
      "#module-directive": [{
        token: ["meta.directive.module.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.module.erlang", "keyword.control.directive.module.erlang", "meta.directive.module.erlang", "punctuation.definition.parameters.begin.erlang", "meta.directive.module.erlang", "entity.name.type.class.module.definition.erlang", "meta.directive.module.erlang", "punctuation.definition.parameters.end.erlang", "meta.directive.module.erlang", "punctuation.section.directive.end.erlang"],
        regex: "^(\\s*)(-)(\\s*)(module)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)"
      }],
      "#number": [{
        token: "text",
        regex: "(?=\\d)",
        push: [{
          token: "text",
          regex: "(?!\\d)",
          next: "pop"
        }, {
          token: ["constant.numeric.float.erlang", "punctuation.separator.integer-float.erlang", "constant.numeric.float.erlang", "punctuation.separator.float-exponent.erlang"],
          regex: "(\\d+)(\\.)(\\d+)((?:[eE][\\+\\-]?\\d+)?)"
        }, {
          token: ["constant.numeric.integer.binary.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.binary.erlang"],
          regex: "(2)(#)([0-1]+)"
        }, {
          token: ["constant.numeric.integer.base-3.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-3.erlang"],
          regex: "(3)(#)([0-2]+)"
        }, {
          token: ["constant.numeric.integer.base-4.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-4.erlang"],
          regex: "(4)(#)([0-3]+)"
        }, {
          token: ["constant.numeric.integer.base-5.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-5.erlang"],
          regex: "(5)(#)([0-4]+)"
        }, {
          token: ["constant.numeric.integer.base-6.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-6.erlang"],
          regex: "(6)(#)([0-5]+)"
        }, {
          token: ["constant.numeric.integer.base-7.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-7.erlang"],
          regex: "(7)(#)([0-6]+)"
        }, {
          token: ["constant.numeric.integer.octal.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.octal.erlang"],
          regex: "(8)(#)([0-7]+)"
        }, {
          token: ["constant.numeric.integer.base-9.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-9.erlang"],
          regex: "(9)(#)([0-8]+)"
        }, {
          token: ["constant.numeric.integer.decimal.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.decimal.erlang"],
          regex: "(10)(#)(\\d+)"
        }, {
          token: ["constant.numeric.integer.base-11.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-11.erlang"],
          regex: "(11)(#)([\\daA]+)"
        }, {
          token: ["constant.numeric.integer.base-12.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-12.erlang"],
          regex: "(12)(#)([\\da-bA-B]+)"
        }, {
          token: ["constant.numeric.integer.base-13.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-13.erlang"],
          regex: "(13)(#)([\\da-cA-C]+)"
        }, {
          token: ["constant.numeric.integer.base-14.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-14.erlang"],
          regex: "(14)(#)([\\da-dA-D]+)"
        }, {
          token: ["constant.numeric.integer.base-15.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-15.erlang"],
          regex: "(15)(#)([\\da-eA-E]+)"
        }, {
          token: ["constant.numeric.integer.hexadecimal.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.hexadecimal.erlang"],
          regex: "(16)(#)([\\da-fA-F]+)"
        }, {
          token: ["constant.numeric.integer.base-17.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-17.erlang"],
          regex: "(17)(#)([\\da-gA-G]+)"
        }, {
          token: ["constant.numeric.integer.base-18.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-18.erlang"],
          regex: "(18)(#)([\\da-hA-H]+)"
        }, {
          token: ["constant.numeric.integer.base-19.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-19.erlang"],
          regex: "(19)(#)([\\da-iA-I]+)"
        }, {
          token: ["constant.numeric.integer.base-20.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-20.erlang"],
          regex: "(20)(#)([\\da-jA-J]+)"
        }, {
          token: ["constant.numeric.integer.base-21.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-21.erlang"],
          regex: "(21)(#)([\\da-kA-K]+)"
        }, {
          token: ["constant.numeric.integer.base-22.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-22.erlang"],
          regex: "(22)(#)([\\da-lA-L]+)"
        }, {
          token: ["constant.numeric.integer.base-23.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-23.erlang"],
          regex: "(23)(#)([\\da-mA-M]+)"
        }, {
          token: ["constant.numeric.integer.base-24.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-24.erlang"],
          regex: "(24)(#)([\\da-nA-N]+)"
        }, {
          token: ["constant.numeric.integer.base-25.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-25.erlang"],
          regex: "(25)(#)([\\da-oA-O]+)"
        }, {
          token: ["constant.numeric.integer.base-26.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-26.erlang"],
          regex: "(26)(#)([\\da-pA-P]+)"
        }, {
          token: ["constant.numeric.integer.base-27.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-27.erlang"],
          regex: "(27)(#)([\\da-qA-Q]+)"
        }, {
          token: ["constant.numeric.integer.base-28.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-28.erlang"],
          regex: "(28)(#)([\\da-rA-R]+)"
        }, {
          token: ["constant.numeric.integer.base-29.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-29.erlang"],
          regex: "(29)(#)([\\da-sA-S]+)"
        }, {
          token: ["constant.numeric.integer.base-30.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-30.erlang"],
          regex: "(30)(#)([\\da-tA-T]+)"
        }, {
          token: ["constant.numeric.integer.base-31.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-31.erlang"],
          regex: "(31)(#)([\\da-uA-U]+)"
        }, {
          token: ["constant.numeric.integer.base-32.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-32.erlang"],
          regex: "(32)(#)([\\da-vA-V]+)"
        }, {
          token: ["constant.numeric.integer.base-33.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-33.erlang"],
          regex: "(33)(#)([\\da-wA-W]+)"
        }, {
          token: ["constant.numeric.integer.base-34.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-34.erlang"],
          regex: "(34)(#)([\\da-xA-X]+)"
        }, {
          token: ["constant.numeric.integer.base-35.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-35.erlang"],
          regex: "(35)(#)([\\da-yA-Y]+)"
        }, {
          token: ["constant.numeric.integer.base-36.erlang", "punctuation.separator.base-integer.erlang", "constant.numeric.integer.base-36.erlang"],
          regex: "(36)(#)([\\da-zA-Z]+)"
        }, {
          token: "invalid.illegal.integer.erlang",
          regex: "\\d+#[\\da-zA-Z]+"
        }, {
          token: "constant.numeric.integer.decimal.erlang",
          regex: "\\d+"
        }]
      }],
      "#parenthesized-expression": [{
        token: "punctuation.section.expression.begin.erlang",
        regex: "\\(",
        push: [{
          token: "punctuation.section.expression.end.erlang",
          regex: "\\)",
          next: "pop"
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.expression.parenthesized"
        }]
      }],
      "#record-directive": [{
        token: ["meta.directive.record.erlang", "punctuation.section.directive.begin.erlang", "meta.directive.record.erlang", "keyword.control.directive.import.erlang", "meta.directive.record.erlang", "punctuation.definition.parameters.begin.erlang", "meta.directive.record.erlang", "entity.name.type.class.record.definition.erlang", "meta.directive.record.erlang", "punctuation.separator.parameters.erlang"],
        regex: "^(\\s*)(-)(\\s*)(record)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(,)",
        push: [{
          token: ["punctuation.definition.class.record.end.erlang", "meta.directive.record.erlang", "punctuation.definition.parameters.end.erlang", "meta.directive.record.erlang", "punctuation.section.directive.end.erlang"],
          regex: "(\\})(\\s*)(\\))(\\s*)(\\.)",
          next: "pop"
        }, {
          include: "#internal-record-body"
        }, {
          defaultToken: "meta.directive.record.erlang"
        }]
      }],
      "#record-usage": [{
        token: ["keyword.operator.record.erlang", "meta.record-usage.erlang", "entity.name.type.class.record.erlang", "meta.record-usage.erlang", "punctuation.separator.record-field.erlang", "meta.record-usage.erlang", "variable.other.field.erlang"],
        regex: "(#)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(\\.)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')"
      }, {
        token: ["keyword.operator.record.erlang", "meta.record-usage.erlang", "entity.name.type.class.record.erlang"],
        regex: "(#)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')",
        push: [{
          token: "punctuation.definition.class.record.end.erlang",
          regex: "\\}",
          next: "pop"
        }, {
          include: "#internal-record-body"
        }, {
          defaultToken: "meta.record-usage.erlang"
        }]
      }],
      "#string": [{
        token: "punctuation.definition.string.begin.erlang",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.erlang",
          regex: '"',
          next: "pop"
        }, {
          token: ["punctuation.definition.escape.erlang", "constant.character.escape.erlang", "punctuation.definition.escape.erlang", "constant.character.escape.erlang", "constant.character.escape.erlang"],
          regex: "(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"
        }, {
          token: "invalid.illegal.string.erlang",
          regex: "\\\\\\^?.?"
        }, {
          token: ["punctuation.definition.placeholder.erlang", "punctuation.separator.placeholder-parts.erlang", "constant.other.placeholder.erlang", "punctuation.separator.placeholder-parts.erlang", "punctuation.separator.placeholder-parts.erlang", "constant.other.placeholder.erlang", "punctuation.separator.placeholder-parts.erlang", "punctuation.separator.placeholder-parts.erlang", "punctuation.separator.placeholder-parts.erlang", "constant.other.placeholder.erlang", "constant.other.placeholder.erlang"],
          regex: "(~)(?:((?:\\-)?)(\\d+)|(\\*))?(?:(\\.)(?:(\\d+)|(\\*)))?(?:(\\.)(?:(\\*)|(.)))?([~cfegswpWPBX#bx\\+ni])"
        }, {
          token: ["punctuation.definition.placeholder.erlang", "punctuation.separator.placeholder-parts.erlang", "constant.other.placeholder.erlang", "constant.other.placeholder.erlang"],
          regex: "(~)((?:\\*)?)((?:\\d+)?)([~du\\-#fsacl])"
        }, {
          token: "invalid.illegal.string.erlang",
          regex: "~.?"
        }, {
          defaultToken: "string.quoted.double.erlang"
        }]
      }],
      "#symbolic-operator": [{
        token: "keyword.operator.symbolic.erlang",
        regex: "\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::"
      }],
      "#textual-operator": [{
        token: "keyword.operator.textual.erlang",
        regex: "\\b(?:andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b"
      }],
      "#tuple": [{
        token: "punctuation.definition.tuple.begin.erlang",
        regex: "\\{",
        push: [{
          token: "punctuation.definition.tuple.end.erlang",
          regex: "\\}",
          next: "pop"
        }, {
          token: "punctuation.separator.tuple.erlang",
          regex: ","
        }, {
          include: "#everything-else"
        }, {
          defaultToken: "meta.structure.tuple.erlang"
        }]
      }],
      "#variable": [{
        token: ["variable.other.erlang", "variable.language.omitted.erlang"],
        regex: "(_[a-zA-Z\\d@_]+|[A-Z][a-zA-Z\\d@_]*)|(_)"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    comment: "The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace).  Also, the function/module/record/macro names must be given unquoted.  -- desp",
    fileTypes: ["erl", "hrl"],
    keyEquivalent: "^~E",
    name: "Erlang",
    scopeName: "source.erlang"
  }, r.inherits(s, i), t.ErlangHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/erlang", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/erlang_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./erlang_highlight_rules").ErlangHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "%", this.blockComment = null, this.$id = "ace/mode/erlang", this.snippetFileId = "ace/snippets/erlang";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/erlang"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-forth.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-forth.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/forth_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        include: "#forth"
      }],
      "#comment": [{
        token: "comment.line.double-dash.forth",
        regex: "(?:^|\\s)--\\s.*$",
        comment: "line comments for iForth"
      }, {
        token: "comment.line.backslash.forth",
        regex: "(?:^|\\s)\\\\[\\s\\S]*$",
        comment: "ANSI line comment"
      }, {
        token: "comment.line.backslash-g.forth",
        regex: "(?:^|\\s)\\\\[Gg] .*$",
        comment: "gForth line comment"
      }, {
        token: "comment.block.forth",
        regex: "(?:^|\\s)\\(\\*(?=\\s|$)",
        push: [{
          token: "comment.block.forth",
          regex: "(?:^|\\s)\\*\\)(?=\\s|$)",
          next: "pop"
        }, {
          defaultToken: "comment.block.forth"
        }],
        comment: "multiline comments for iForth"
      }, {
        token: "comment.block.documentation.forth",
        regex: "\\bDOC\\b",
        caseInsensitive: !0,
        push: [{
          token: "comment.block.documentation.forth",
          regex: "\\bENDDOC\\b",
          caseInsensitive: !0,
          next: "pop"
        }, {
          defaultToken: "comment.block.documentation.forth"
        }],
        comment: "documentation comments for iForth"
      }, {
        token: "comment.line.parentheses.forth",
        regex: "(?:^|\\s)\\.?\\( [^)]*\\)",
        comment: "ANSI line comment"
      }],
      "#constant": [{
        token: "constant.language.forth",
        regex: "(?:^|\\s)(?:TRUE|FALSE|BL|PI|CELL|C/L|R/O|W/O|R/W)(?=\\s|$)",
        caseInsensitive: !0
      }, {
        token: "constant.numeric.forth",
        regex: "(?:^|\\s)[$#%]?[-+]?[0-9]+(?:\\.[0-9]*e-?[0-9]+|\\.?[0-9a-fA-F]*)(?=\\s|$)"
      }, {
        token: "constant.character.forth",
        regex: "(?:^|\\s)(?:[&^]\\S|(?:\"|')\\S(?:\"|'))(?=\\s|$)"
      }],
      "#forth": [{
        include: "#constant"
      }, {
        include: "#comment"
      }, {
        include: "#string"
      }, {
        include: "#word"
      }, {
        include: "#variable"
      }, {
        include: "#storage"
      }, {
        include: "#word-def"
      }],
      "#storage": [{
        token: "storage.type.forth",
        regex: "(?:^|\\s)(?:2CONSTANT|2VARIABLE|ALIAS|CONSTANT|CREATE-INTERPRET/COMPILE[:]?|CREATE|DEFER|FCONSTANT|FIELD|FVARIABLE|USER|VALUE|VARIABLE|VOCABULARY)(?=\\s|$)",
        caseInsensitive: !0
      }],
      "#string": [{
        token: "string.quoted.double.forth",
        regex: '(ABORT" |BREAK" |\\." |C" |0"|S\\\\?" )([^"]+")',
        caseInsensitive: !0
      }, {
        token: "string.unquoted.forth",
        regex: "(?:INCLUDE|NEEDS|REQUIRE|USE)[ ]\\S+(?=\\s|$)",
        caseInsensitive: !0
      }],
      "#variable": [{
        token: "variable.language.forth",
        regex: "\\b(?:I|J)\\b",
        caseInsensitive: !0
      }],
      "#word": [{
        token: "keyword.control.immediate.forth",
        regex: "(?:^|\\s)\\[(?:\\?DO|\\+LOOP|AGAIN|BEGIN|DEFINED|DO|ELSE|ENDIF|FOR|IF|IFDEF|IFUNDEF|LOOP|NEXT|REPEAT|THEN|UNTIL|WHILE)\\](?=\\s|$)",
        caseInsensitive: !0
      }, {
        token: "keyword.other.immediate.forth",
        regex: "(?:^|\\s)(?:COMPILE-ONLY|IMMEDIATE|IS|RESTRICT|TO|WHAT'S|])(?=\\s|$)",
        caseInsensitive: !0
      }, {
        token: "keyword.control.compile-only.forth",
        regex: '(?:^|\\s)(?:-DO|\\-LOOP|\\?DO|\\?LEAVE|\\+DO|\\+LOOP|ABORT\\"|AGAIN|AHEAD|BEGIN|CASE|DO|ELSE|ENDCASE|ENDIF|ENDOF|ENDTRY\\-IFERROR|ENDTRY|FOR|IF|IFERROR|LEAVE|LOOP|NEXT|RECOVER|REPEAT|RESTORE|THEN|TRY|U\\-DO|U\\+DO|UNTIL|WHILE)(?=\\s|$)',
        caseInsensitive: !0
      }, {
        token: "keyword.other.compile-only.forth",
        regex: "(?:^|\\s)(?:\\?DUP-0=-IF|\\?DUP-IF|\\)|\\[|\\['\\]|\\[CHAR\\]|\\[COMPILE\\]|\\[IS\\]|\\[TO\\]|<COMPILATION|<INTERPRETATION|ASSERT\\(|ASSERT0\\(|ASSERT1\\(|ASSERT2\\(|ASSERT3\\(|COMPILATION>|DEFERS|DOES>|INTERPRETATION>|OF|POSTPONE)(?=\\s|$)",
        caseInsensitive: !0
      }, {
        token: "keyword.other.non-immediate.forth",
        regex: "(?:^|\\s)(?:'|<IS>|<TO>|CHAR|END-STRUCT|INCLUDE[D]?|LOAD|NEEDS|REQUIRE[D]?|REVISION|SEE|STRUCT|THRU|USE)(?=\\s|$)",
        caseInsensitive: !0
      }, {
        token: "keyword.other.warning.forth",
        regex: '(?:^|\\s)(?:~~|BREAK:|BREAK"|DBG)(?=\\s|$)',
        caseInsensitive: !0
      }],
      "#word-def": [{
        token: ["keyword.other.compile-only.forth", "keyword.other.compile-only.forth", "meta.block.forth", "entity.name.function.forth"],
        regex: "(:NONAME)|(^:|\\s:)(\\s)(\\S+)(?=\\s|$)",
        caseInsensitive: !0,
        push: [{
          token: "keyword.other.compile-only.forth",
          regex: ";(?:CODE)?",
          caseInsensitive: !0,
          next: "pop"
        }, {
          include: "#constant"
        }, {
          include: "#comment"
        }, {
          include: "#string"
        }, {
          include: "#word"
        }, {
          include: "#variable"
        }, {
          include: "#storage"
        }, {
          defaultToken: "meta.block.forth"
        }]
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["frt", "fs", "ldr", "fth", "4th"],
    foldingStartMarker: "/\\*\\*|\\{\\s*$",
    foldingStopMarker: "\\*\\*/|^\\s*\\}",
    keyEquivalent: "^~F",
    name: "Forth",
    scopeName: "source.forth"
  }, r.inherits(s, i), t.ForthHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/forth", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/forth_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./forth_highlight_rules").ForthHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "--", this.blockComment = null, this.$id = "ace/mode/forth";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/forth"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-fortran.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-fortran.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/fortran_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "call|case|contains|continue|cycle|do|else|elseif|end|enddo|endif|function|if|implicit|in|include|inout|intent|module|none|only|out|print|program|return|select|status|stop|subroutine|return|then|use|while|write|CALL|CASE|CONTAINS|CONTINUE|CYCLE|DO|ELSE|ELSEIF|END|ENDDO|ENDIF|FUNCTION|IF|IMPLICIT|IN|INCLUDE|INOUT|INTENT|MODULE|NONE|ONLY|OUT|PRINT|PROGRAM|RETURN|SELECT|STATUS|STOP|SUBROUTINE|RETURN|THEN|USE|WHILE|WRITE",
        t = "and|or|not|eq|ne|gt|ge|lt|le|AND|OR|NOT|EQ|NE|GT|GE|LT|LE",
        n = "true|false|TRUE|FALSE",
        r = "abs|achar|acos|acosh|adjustl|adjustr|aimag|aint|all|allocate|anint|any|asin|asinh|associated|atan|atan2|atanh|bessel_j0|bessel_j1|bessel_jn|bessel_y0|bessel_y1|bessel_yn|bge|bgt|bit_size|ble|blt|btest|ceiling|char|cmplx|conjg|cos|cosh|count|cpu_time|cshift|date_and_time|dble|deallocate|digits|dim|dot_product|dprod|dshiftl|dshiftr|dsqrt|eoshift|epsilon|erf|erfc|erfc_scaled|exp|float|floor|format|fraction|gamma|input|len|lge|lgt|lle|llt|log|log10|maskl|maskr|matmul|max|maxloc|maxval|merge|min|minloc|minval|mod|modulo|nint|not|norm2|null|nullify|pack|parity|popcnt|poppar|precision|present|product|radix|random_number|random_seed|range|repeat|reshape|round|rrspacing|same_type_as|scale|scan|selected_char_kind|selected_int_kind|selected_real_kind|set_exponent|shape|shifta|shiftl|shiftr|sign|sin|sinh|size|sngl|spacing|spread|sqrt|sum|system_clock|tan|tanh|tiny|trailz|transfer|transpose|trim|ubound|unpack|verify|ABS|ACHAR|ACOS|ACOSH|ADJUSTL|ADJUSTR|AIMAG|AINT|ALL|ALLOCATE|ANINT|ANY|ASIN|ASINH|ASSOCIATED|ATAN|ATAN2|ATANH|BESSEL_J0|BESSEL_J1|BESSEL_JN|BESSEL_Y0|BESSEL_Y1|BESSEL_YN|BGE|BGT|BIT_SIZE|BLE|BLT|BTEST|CEILING|CHAR|CMPLX|CONJG|COS|COSH|COUNT|CPU_TIME|CSHIFT|DATE_AND_TIME|DBLE|DEALLOCATE|DIGITS|DIM|DOT_PRODUCT|DPROD|DSHIFTL|DSHIFTR|DSQRT|EOSHIFT|EPSILON|ERF|ERFC|ERFC_SCALED|EXP|FLOAT|FLOOR|FORMAT|FRACTION|GAMMA|INPUT|LEN|LGE|LGT|LLE|LLT|LOG|LOG10|MASKL|MASKR|MATMUL|MAX|MAXLOC|MAXVAL|MERGE|MIN|MINLOC|MINVAL|MOD|MODULO|NINT|NOT|NORM2|NULL|NULLIFY|PACK|PARITY|POPCNT|POPPAR|PRECISION|PRESENT|PRODUCT|RADIX|RANDOM_NUMBER|RANDOM_SEED|RANGE|REPEAT|RESHAPE|ROUND|RRSPACING|SAME_TYPE_AS|SCALE|SCAN|SELECTED_CHAR_KIND|SELECTED_INT_KIND|SELECTED_REAL_KIND|SET_EXPONENT|SHAPE|SHIFTA|SHIFTL|SHIFTR|SIGN|SIN|SINH|SIZE|SNGL|SPACING|SPREAD|SQRT|SUM|SYSTEM_CLOCK|TAN|TANH|TINY|TRAILZ|TRANSFER|TRANSPOSE|TRIM|UBOUND|UNPACK|VERIFY",
        i = "logical|character|integer|real|type|LOGICAL|CHARACTER|INTEGER|REAL|TYPE",
        s = "allocatable|dimension|intent|parameter|pointer|target|private|public|ALLOCATABLE|DIMENSION|INTENT|PARAMETER|POINTER|TARGET|PRIVATE|PUBLIC",
        o = this.createKeywordMapper({
      "invalid.deprecated": "debugger",
      "support.function": r,
      "constant.language": n,
      keyword: e,
      "keyword.operator": t,
      "storage.type": i,
      "storage.modifier": s
    }, "identifier"),
        u = "(?:r|u|ur|R|U|UR|Ur|uR)?",
        a = "(?:(?:[1-9]\\d*)|(?:0))",
        f = "(?:0[oO]?[0-7]+)",
        l = "(?:0[xX][\\dA-Fa-f]+)",
        c = "(?:0[bB][01]+)",
        h = "(?:" + a + "|" + f + "|" + l + "|" + c + ")",
        p = "(?:[eE][+-]?\\d+)",
        d = "(?:\\.\\d+)",
        v = "(?:\\d+)",
        m = "(?:(?:" + v + "?" + d + ")|(?:" + v + "\\.))",
        g = "(?:(?:" + m + "|" + v + ")" + p + ")",
        y = "(?:" + g + "|" + m + ")",
        b = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "!.*$"
      }, {
        token: "string",
        regex: u + '"{3}',
        next: "qqstring3"
      }, {
        token: "string",
        regex: u + '"(?=.)',
        next: "qqstring"
      }, {
        token: "string",
        regex: u + "'{3}",
        next: "qstring3"
      }, {
        token: "string",
        regex: u + "'(?=.)",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: "(?:" + y + "|\\d+)[jJ]\\b"
      }, {
        token: "constant.numeric",
        regex: y
      }, {
        token: "constant.numeric",
        regex: h + "[lL]\\b"
      }, {
        token: "constant.numeric",
        regex: h + "\\b"
      }, {
        token: "keyword",
        regex: "#\\s*(?:include|import|define|undef|INCLUDE|IMPORT|DEFINE|UNDEF)\\b"
      }, {
        token: "keyword",
        regex: "#\\s*(?:endif|ifdef|else|elseif|ifndef|ENDIF|IFDEF|ELSE|ELSEIF|IFNDEF)\\b"
      }, {
        token: o,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      qqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        defaultToken: "string"
      }]
    };
  };

  r.inherits(s, i), t.FortranHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/fortran", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/fortran_highlight_rules", "ace/mode/folding/cstyle", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./fortran_highlight_rules").FortranHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = e("../range").Range,
      a = function a() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = "!", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[:]\s*$/);
        o && (r += n);
      }

      return r;
    };
    var e = {
      "return": 1,
      "break": 1,
      "continue": 1,
      RETURN: 1,
      BREAK: 1,
      CONTINUE: 1
    };
    this.checkOutdent = function (t, n, r) {
      if (r !== "\r\n" && r !== "\r" && r !== "\n") return !1;
      var i = this.getTokenizer().getLineTokens(n.trim(), t).tokens;
      if (!i) return !1;

      do {
        var s = i.pop();
      } while (s && (s.type == "comment" || s.type == "text" && s.value.match(/^\s+$/)));

      return s ? s.type == "keyword" && e[s.value] : !1;
    }, this.autoOutdent = function (e, t, n) {
      n += 1;
      var r = this.$getIndent(t.getLine(n)),
          i = t.getTabString();
      r.slice(-i.length) == i && t.remove(new u(n, r.length - i.length, n, r.length));
    }, this.$id = "ace/mode/fortran";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/fortran"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-fsharp.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-fsharp.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/fsharp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = this.createKeywordMapper({
      variable: "this",
      keyword: "abstract|assert|base|begin|class|default|delegate|done|downcast|downto|elif|else|exception|extern|false|finally|function|global|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|open|or|override|private|public|rec|return|return!|select|static|struct|then|to|true|try|typeof|upcast|use|use!|val|void|when|while|with|yield|yield!|__SOURCE_DIRECTORY__|as|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile|and|do|end|for|fun|if|in|let|let!|new|not|null|of|endif",
      constant: "true|false"
    }, "identifier"),
        t = "(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))";
    this.$rules = {
      start: [{
        token: "variable.classes",
        regex: "\\[\\<[.]*\\>\\]"
      }, {
        token: "comment",
        regex: "//.*$"
      }, {
        token: "comment.start",
        regex: /\(\*(?!\))/,
        push: "blockComment"
      }, {
        token: "string",
        regex: "'.'"
      }, {
        token: "string",
        regex: '"""',
        next: [{
          token: "constant.language.escape",
          regex: /\\./,
          next: "qqstring"
        }, {
          token: "string",
          regex: '"""',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: '"',
        next: [{
          token: "constant.language.escape",
          regex: /\\./,
          next: "qqstring"
        }, {
          token: "string",
          regex: '"',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: ["verbatim.string", "string"],
        regex: '(@?)(")',
        stateName: "qqstring",
        next: [{
          token: "constant.language.escape",
          regex: '""'
        }, {
          token: "string",
          regex: '"',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "constant.float",
        regex: "(?:" + t + "|\\d+)[jJ]\\b"
      }, {
        token: "constant.float",
        regex: t
      }, {
        token: "constant.integer",
        regex: "(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))\\b"
      }, {
        token: ["keyword.type", "variable"],
        regex: "(type\\s)([a-zA-Z0-9_$-]*\\b)"
      }, {
        token: e,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=|\\(\\*\\)"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }],
      blockComment: [{
        regex: /\(\*\)/,
        token: "comment"
      }, {
        regex: /\(\*(?!\))/,
        token: "comment.start",
        push: "blockComment"
      }, {
        regex: /\*\)/,
        token: "comment.end",
        next: "pop"
      }, {
        defaultToken: "comment"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.FSharpHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/fsharp", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/fsharp_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./fsharp_highlight_rules").FSharpHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    i.call(this), this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "(*",
      end: "*)",
      nestable: !0
    }, this.$id = "ace/mode/fsharp";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/fsharp"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-fsl.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-fsl.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/fsl_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "punctuation.definition.comment.mn",
        regex: /\/\*/,
        push: [{
          token: "punctuation.definition.comment.mn",
          regex: /\*\//,
          next: "pop"
        }, {
          defaultToken: "comment.block.fsl"
        }]
      }, {
        token: "comment.line.fsl",
        regex: /\/\//,
        push: [{
          token: "comment.line.fsl",
          regex: /$/,
          next: "pop"
        }, {
          defaultToken: "comment.line.fsl"
        }]
      }, {
        token: "entity.name.function",
        regex: /\${/,
        push: [{
          token: "entity.name.function",
          regex: /}/,
          next: "pop"
        }, {
          defaultToken: "keyword.other"
        }],
        comment: "js outcalls"
      }, {
        token: "constant.numeric",
        regex: /[0-9]*\.[0-9]*\.[0-9]*/,
        comment: "semver"
      }, {
        token: "constant.language.fslLanguage",
        regex: "(?:graph_layout|machine_name|machine_author|machine_license|machine_comment|machine_language|machine_version|machine_reference|npm_name|graph_layout|on_init|on_halt|on_end|on_terminate|on_finalize|on_transition|on_action|on_stochastic_action|on_legal|on_main|on_forced|on_validation|on_validation_failure|on_transition_refused|on_forced_transition_refused|on_action_refused|on_enter|on_exit|start_states|end_states|terminal_states|final_states|fsl_version)\\s*:"
      }, {
        token: "keyword.control.transition.fslArrow",
        regex: /<->|<-|->|<=>|=>|<=|<~>|~>|<~|<-=>|<=->|<-~>|<~->|<=~>|<~=>/
      }, {
        token: "constant.numeric.fslProbability",
        regex: /[0-9]+%/,
        comment: "edge probability annotation"
      }, {
        token: "constant.character.fslAction",
        regex: /\'[^']*\'/,
        comment: "action annotation"
      }, {
        token: "string.quoted.double.fslLabel.doublequoted",
        regex: /\"[^"]*\"/,
        comment: "fsl label annotation"
      }, {
        token: "entity.name.tag.fslLabel.atom",
        regex: /[a-zA-Z0-9_.+&()#@!?,]/,
        comment: "fsl label annotation"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["fsl", "fsl_state"],
    name: "FSL",
    scopeName: "source.fsl"
  }, r.inherits(s, i), t.FSLHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/fsl", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/fsl_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./fsl_highlight_rules").FSLHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/fsl", this.snippetFileId = "ace/snippets/fsl";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/fsl"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-ftl.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-ftl.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/ftl_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|upper_case|word_list|xhtml|xml",
        t = "c|round|floor|ceiling",
        n = "iso_[a-z_]+",
        r = "first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk",
        i = "keys|values",
        s = "children|parent|root|ancestors|node_name|node_type|node_namespace",
        o = "byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|eval|has_content|interpret|is_[a-z_]+|namespacenew",
        u = e + t + n + r + i + s + o,
        a = "default|exists|if_exists|web_safe",
        f = "data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|now|output_encoding|template_name|url_escaping_charset|vars|version",
        l = "gt|gte|lt|lte|as|in|using",
        c = "true|false",
        h = "encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|attributes";
    this.$rules = {
      start: [{
        token: "constant.character.entity",
        regex: /&[^;]+;/
      }, {
        token: "support.function",
        regex: "\\?(" + u + ")"
      }, {
        token: "support.function.deprecated",
        regex: "\\?(" + a + ")"
      }, {
        token: "language.variable",
        regex: "\\.(?:" + f + ")"
      }, {
        token: "constant.language",
        regex: "\\b(" + c + ")\\b"
      }, {
        token: "keyword.operator",
        regex: "\\b(?:" + l + ")\\b"
      }, {
        token: "entity.other.attribute-name",
        regex: h
      }, {
        token: "string",
        regex: /['"]/,
        next: "qstring"
      }, {
        token: function token(e) {
          return e.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$") ? "constant.numeric" : "variable";
        },
        regex: /[\w.+\-]+/
      }, {
        token: "keyword.operator",
        regex: "!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      qstring: [{
        token: "constant.character.escape",
        regex: '\\\\[nrtvef\\\\"$]'
      }, {
        token: "string",
        regex: /['"]/,
        next: "start"
      }, {
        defaultToken: "string"
      }]
    };
  };

  r.inherits(o, s);

  var u = function u() {
    i.call(this);
    var e = "assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|setting|stop|switch|t|visit",
        t = [{
      token: "comment",
      regex: "<#--",
      next: "ftl-dcomment"
    }, {
      token: "string.interpolated",
      regex: "\\${",
      push: "ftl-start"
    }, {
      token: "keyword.function",
      regex: "</?#(" + e + ")",
      push: "ftl-start"
    }, {
      token: "keyword.other",
      regex: "</?@[a-zA-Z\\.]+",
      push: "ftl-start"
    }],
        n = [{
      token: "keyword",
      regex: "/?>",
      next: "pop"
    }, {
      token: "string.interpolated",
      regex: "}",
      next: "pop"
    }];

    for (var r in this.$rules) {
      this.$rules[r].unshift.apply(this.$rules[r], t);
    }

    this.embedRules(o, "ftl-", n, ["start"]), this.addRules({
      "ftl-dcomment": [{
        token: "comment",
        regex: "-->",
        next: "pop"
      }, {
        defaultToken: "comment"
      }]
    }), this.normalizeRules();
  };

  r.inherits(u, i), t.FtlHighlightRules = u;
}), ace.define("ace/mode/ftl", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/ftl_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./ftl_highlight_rules").FtlHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.$id = "ace/mode/ftl";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/ftl"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-gcode.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-gcode.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/gcode_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL",
        t = "PI",
        n = "ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN",
        r = this.createKeywordMapper({
      "support.function": n,
      keyword: e,
      "constant.language": t
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\(.*\\)"
      }, {
        token: "comment",
        regex: "([N])([0-9]+)"
      }, {
        token: "string",
        regex: "([G])([0-9]+\\.?[0-9]?)"
      }, {
        token: "string",
        regex: "([M])([0-9]+\\.?[0-9]?)"
      }, {
        token: "constant.numeric",
        regex: "([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)"
      }, {
        token: r,
        regex: "[A-Z]"
      }, {
        token: "keyword.operator",
        regex: "EQ|LT|GT|NE|GE|LE|OR|XOR"
      }, {
        token: "paren.lparen",
        regex: "[\\[]"
      }, {
        token: "paren.rparen",
        regex: "[\\]]"
      }, {
        token: "text",
        regex: "\\s+"
      }]
    };
  };

  r.inherits(s, i), t.GcodeHighlightRules = s;
}), ace.define("ace/mode/gcode", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/gcode_highlight_rules", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./gcode_highlight_rules").GcodeHighlightRules,
      o = e("../range").Range,
      u = function u() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.$id = "ace/mode/gcode";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/gcode"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-gherkin.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-gherkin.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/gherkin_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})",
      o = function o() {
    var e = [{
      name: "en",
      labels: "Feature|Background|Scenario(?: Outline)?|Examples",
      keywords: "Given|When|Then|And|But"
    }],
        t = e.map(function (e) {
      return e.labels;
    }).join("|"),
        n = e.map(function (e) {
      return e.keywords;
    }).join("|");
    this.$rules = {
      start: [{
        token: "constant.numeric",
        regex: "(?:(?:[1-9]\\d*)|(?:0))"
      }, {
        token: "comment",
        regex: "#.*$"
      }, {
        token: "keyword",
        regex: "(?:" + t + "):|(?:" + n + ")\\b"
      }, {
        token: "keyword",
        regex: "\\*"
      }, {
        token: "string",
        regex: '"{3}',
        next: "qqstring3"
      }, {
        token: "string",
        regex: '"',
        next: "qqstring"
      }, {
        token: "text",
        regex: "^\\s*(?=@[\\w])",
        next: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "variable.parameter",
          regex: "@[\\w]+"
        }, {
          token: "empty",
          regex: "",
          next: "start"
        }]
      }, {
        token: "comment",
        regex: "<[^>]+>"
      }, {
        token: "comment",
        regex: "\\|(?=.)",
        next: "table-item"
      }, {
        token: "comment",
        regex: "\\|$",
        next: "start"
      }],
      qqstring3: [{
        token: "constant.language.escape",
        regex: s
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: s
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      "table-item": [{
        token: "comment",
        regex: /$/,
        next: "start"
      }, {
        token: "comment",
        regex: /\|/
      }, {
        token: "string",
        regex: /\\./
      }, {
        defaultToken: "string"
      }]
    }, this.normalizeRules();
  };

  r.inherits(o, i), t.GherkinHighlightRules = o;
}), ace.define("ace/mode/gherkin", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/gherkin_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./gherkin_highlight_rules").GherkinHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = "#", this.$id = "ace/mode/gherkin", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = "  ",
          s = this.getTokenizer().getLineTokens(t, e),
          o = s.tokens;
      return t.match("[ ]*\\|") && (r += "| "), o.length && o[o.length - 1].type == "comment" ? r : (e == "start" && (t.match("Scenario:|Feature:|Scenario Outline:|Background:") ? r += i : t.match("(Given|Then).+(:)$|Examples:") ? r += i : t.match("\\*.+") && (r += "* ")), r);
    };
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/gherkin"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-gitignore.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-gitignore.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/gitignore_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment",
        regex: /^\s*#.*$/
      }, {
        token: "keyword",
        regex: /^\s*!.*$/
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["gitignore"],
    name: "Gitignore"
  }, r.inherits(s, i), t.GitignoreHighlightRules = s;
}), ace.define("ace/mode/gitignore", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/gitignore_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./gitignore_highlight_rules").GitignoreHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = "#", this.$id = "ace/mode/gitignore";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/gitignore"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-glsl.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-glsl.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/c_cpp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",
      u = function u() {
    var e = "break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",
        t = "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",
        n = "const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",
        r = "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",
        s = "NULL|true|false|TRUE|FALSE|nullptr",
        u = this.$keywords = this.createKeywordMapper({
      "keyword.control": e,
      "storage.type": t,
      "storage.modifier": n,
      "keyword.operator": r,
      "variable.language": "this",
      "constant.language": s
    }, "identifier"),
        a = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*\\b",
        f = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,
        l = "%" + /(\d+\$)?/.source + /[#0\- +']*/.source + /[,;:_]?/.source + /((-?\d+)|\*(-?\d+\$)?)?/.source + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;
    this.$rules = {
      start: [{
        token: "comment",
        regex: "//$",
        next: "start"
      }, {
        token: "comment",
        regex: "//",
        next: "singleLineComment"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: "'(?:" + f + "|.)?'"
      }, {
        token: "string.start",
        regex: '"',
        stateName: "qqstring",
        next: [{
          token: "string",
          regex: /\\\s*$/,
          next: "qqstring"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          token: "constant.language.escape",
          regex: l
        }, {
          token: "string.end",
          regex: '"|$',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: 'R"\\(',
        stateName: "rawString",
        next: [{
          token: "string.end",
          regex: '\\)"',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "keyword",
        regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b",
        next: "directive"
      }, {
        token: "keyword",
        regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"
      }, {
        token: "support.function.C99.c",
        regex: o
      }, {
        token: u,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      singleLineComment: [{
        token: "comment",
        regex: /\\$/,
        next: "singleLineComment"
      }, {
        token: "comment",
        regex: /$/,
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      directive: [{
        token: "constant.other.multiline",
        regex: /\\/
      }, {
        token: "constant.other.multiline",
        regex: /.*\\/
      }, {
        token: "constant.other",
        regex: "\\s*<.+?>",
        next: "start"
      }, {
        token: "constant.other",
        regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',
        next: "start"
      }, {
        token: "constant.other",
        regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",
        next: "start"
      }, {
        token: "constant.other",
        regex: /[^\\\/]+/,
        next: "start"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(u, s), t.c_cppHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/c_cpp", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/c_cpp_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./c_cpp_highlight_rules").c_cppHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[]\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/c_cpp", this.snippetFileId = "ace/snippets/c_cpp";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/glsl_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/c_cpp_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./c_cpp_highlight_rules").c_cppHighlightRules,
      s = function s() {
    var e = "attribute|const|uniform|varying|break|continue|do|for|while|if|else|in|out|inout|float|int|void|bool|true|false|lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|samplerCube|struct",
        t = "radians|degrees|sin|cos|tan|asin|acos|atan|pow|exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|normalize|faceforward|reflect|refract|matrixCompMult|lessThan|lessThanEqual|greaterThan|greaterThanEqual|equal|notEqual|any|all|not|dFdx|dFdy|fwidth|texture2D|texture2DProj|texture2DLod|texture2DProjLod|textureCube|textureCubeLod|gl_MaxVertexAttribs|gl_MaxVertexUniformVectors|gl_MaxVaryingVectors|gl_MaxVertexTextureImageUnits|gl_MaxCombinedTextureImageUnits|gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|gl_DepthRangeParameters|gl_DepthRange|gl_Position|gl_PointSize|gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData",
        n = this.createKeywordMapper({
      "variable.language": "this",
      keyword: e,
      "constant.language": t
    }, "identifier");
    this.$rules = new i().$rules, this.$rules.start.forEach(function (e) {
      typeof e.token == "function" && (e.token = n);
    });
  };

  r.inherits(s, i), t.glslHighlightRules = s;
}), ace.define("ace/mode/glsl", ["require", "exports", "module", "ace/lib/oop", "ace/mode/c_cpp", "ace/mode/glsl_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./c_cpp").Mode,
      s = e("./glsl_highlight_rules").glslHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.$id = "ace/mode/glsl";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/glsl"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-gobstones.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-gobstones.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/gobstones_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t) {
  "use strict";

  var n = e("../lib/oop"),
      r = e("./text_highlight_rules").TextHighlightRules,
      i = function i() {
    var e = {
      standard: "program|procedure|function|interactive|return|let",
      type: "type|is|variant|record|field|case"
    },
        t = {
      commands: {
        repetitions: "repeat|while|foreach|in",
        alternatives: "if|elseif|else|switch"
      },
      expressions: {
        alternatives: "choose|when|otherwise|matching|select|on"
      }
    },
        n = {
      colors: "Verde|Rojo|Azul|Negro",
      cardinals: "Norte|Sur|Este|Oeste",
      booleans: "True|False",
      numbers: /([-]?)([0-9]+)\b/,
      strings: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
    },
        r = {
      commands: "Poner|Sacar|Mover|IrAlBorde|VaciarTablero|BOOM",
      expressions: "nroBolitas|hayBolitas|puedeMover|siguiente|previo|opuesto|minBool|maxBool|minDir|maxDir|minColor|maxColor|primero|sinElPrimero|esVac\xEDa|boom",
      keys: "K_A|K_B|K_C|K_D|K_E|K_F|K_G|K_G|K_H|K_I|K_J|K_K|K_L|K_M|K_N|K_\xD1|K_O|K_P|K_Q|K_R|K_S|K_T|K_U|K_V|K_W|K_X|K_Y|K_Z|K_0|K_1|K_2|K_3|K_4|K_5|K_6|K_7|K_8|K_9|K_F1|K_F2|K_F3|K_F4|K_F5|K_F6|K_F7|K_F8|K_F9|K_F10|K_F11|K_12|K_UP|K_DOWN|K_LEFT|K_RIGHT|K_RETURN|K_BACKSPACE|K_TAB|K_SPACE|K_ESCAPEK_CTRL_A|K_CTRL_B|K_CTRL_C|K_CTRL_D|K_CTRL_E|K_CTRL_F|K_CTRL_G|K_CTRL_G|K_CTRL_H|K_CTRL_I|K_CTRL_J|K_CTRL_K|K_CTRL_L|K_CTRL_M|K_CTRL_N|K_CTRL_\xD1|K_CTRL_O|K_CTRL_P|K_CTRL_Q|K_CTRL_R|K_CTRL_S|K_CTRL_T|K_CTRL_U|K_CTRL_V|K_CTRL_W|K_CTRL_X|K_CTRL_Y|K_CTRL_Z|K_CTRL_0|K_CTRL_1|K_CTRL_2|K_CTRL_3|K_CTRL_4|K_CTRL_5|K_CTRL_6|K_CTRL_7|K_CTRL_8|K_CTRL_9|K_CTRL_F1|K_CTRL_F2|K_CTRL_F3|K_CTRL_F4|K_CTRL_F5|K_CTRL_F6|K_CTRL_F7|K_CTRL_F8|K_CTRL_F9|K_CTRL_F10|K_CTRL_F11|K_CTRL_F12|K_CTRL_UP|K_CTRL_DOWN|K_CTRL_LEFT|K_CTRL_RIGHT|K_CTRL_RETURN|K_CTRL_BACKSPACE|K_CTRL_TAB|K_CTRL_SPACE|K_CTRL_ESCAPEK_ALT_A|K_ALT_B|K_ALT_C|K_ALT_D|K_ALT_E|K_ALT_F|K_ALT_G|K_ALT_G|K_ALT_H|K_ALT_I|K_ALT_J|K_ALT_K|K_ALT_L|K_ALT_M|K_ALT_N|K_ALT_\xD1|K_ALT_O|K_ALT_P|K_ALT_Q|K_ALT_R|K_ALT_S|K_ALT_T|K_ALT_U|K_ALT_V|K_ALT_W|K_ALT_X|K_ALT_Y|K_ALT_Z|K_ALT_0|K_ALT_1|K_ALT_2|K_ALT_3|K_ALT_4|K_ALT_5|K_ALT_6|K_ALT_7|K_ALT_8|K_ALT_9|K_ALT_F1|K_ALT_F2|K_ALT_F3|K_ALT_F4|K_ALT_F5|K_ALT_F6|K_ALT_F7|K_ALT_F8|K_ALT_F9|K_ALT_F10|K_ALT_F11|K_ALT_F12|K_ALT_UP|K_ALT_DOWN|K_ALT_LEFT|K_ALT_RIGHT|K_ALT_RETURN|K_ALT_BACKSPACE|K_ALT_TAB|K_ALT_SPACE|K_ALT_ESCAPEK_SHIFT_A|K_SHIFT_B|K_SHIFT_C|K_SHIFT_D|K_SHIFT_E|K_SHIFT_F|K_SHIFT_G|K_SHIFT_G|K_SHIFT_H|K_SHIFT_I|K_SHIFT_J|K_SHIFT_K|K_SHIFT_L|K_SHIFT_M|K_SHIFT_N|K_SHIFT_\xD1|K_SHIFT_O|K_SHIFT_P|K_SHIFT_Q|K_SHIFT_R|K_SHIFT_S|K_SHIFT_T|K_SHIFT_U|K_SHIFT_V|K_SHIFT_W|K_SHIFT_X|K_SHIFT_Y|K_SHIFT_Z|K_SHIFT_0|K_SHIFT_1|K_SHIFT_2|K_SHIFT_3|K_SHIFT_4|K_SHIFT_5|K_SHIFT_6|K_SHIFT_7|K_SHIFT_8|K_SHIFT_9|K_SHIFT_F1|K_SHIFT_F2|K_SHIFT_F3|K_SHIFT_F4|K_SHIFT_F5|K_SHIFT_F6|K_SHIFT_F7|K_SHIFT_F8|K_SHIFT_F9|K_SHIFT_F10|K_SHIFT_F11|K_SHIFT_F12|K_SHIFT_UP|K_SHIFT_DOWN|K_SHIFT_LEFT|K_SHIFT_RIGHT|K_SHIFT_RETURN|K_SHIFT_BACKSPACE|K_SHIFT_TAB|K_SHIFT_SPACE|K_SHIFT_ESCAPEK_CTRL_ALT_A|K_CTRL_ALT_B|K_CTRL_ALT_C|K_CTRL_ALT_D|K_CTRL_ALT_E|K_CTRL_ALT_F|K_CTRL_ALT_G|K_CTRL_ALT_G|K_CTRL_ALT_H|K_CTRL_ALT_I|K_CTRL_ALT_J|K_CTRL_ALT_K|K_CTRL_ALT_L|K_CTRL_ALT_M|K_CTRL_ALT_N|K_CTRL_ALT_\xD1|K_CTRL_ALT_O|K_CTRL_ALT_P|K_CTRL_ALT_Q|K_CTRL_ALT_R|K_CTRL_ALT_S|K_CTRL_ALT_T|K_CTRL_ALT_U|K_CTRL_ALT_V|K_CTRL_ALT_W|K_CTRL_ALT_X|K_CTRL_ALT_Y|K_CTRL_ALT_Z|K_CTRL_ALT_0|K_CTRL_ALT_1|K_CTRL_ALT_2|K_CTRL_ALT_3|K_CTRL_ALT_4|K_CTRL_ALT_5|K_CTRL_ALT_6|K_CTRL_ALT_7|K_CTRL_ALT_8|K_CTRL_ALT_9|K_CTRL_ALT_F1|K_CTRL_ALT_F2|K_CTRL_ALT_F3|K_CTRL_ALT_F4|K_CTRL_ALT_F5|K_CTRL_ALT_F6|K_CTRL_ALT_F7|K_CTRL_ALT_F8|K_CTRL_ALT_F9|K_CTRL_ALT_F10|K_CTRL_ALT_F11|K_CTRL_ALT_F12|K_CTRL_ALT_UP|K_CTRL_ALT_DOWN|K_CTRL_ALT_LEFT|K_CTRL_ALT_RIGHT|K_CTRL_ALT_RETURN|K_CTRL_ALT_BACKSPACE|K_CTRL_ALT_TAB|K_CTRL_ALT_SPACE|K_CTRL_ALT_ESCAPEK_CTRL_SHIFT_A|K_CTRL_SHIFT_B|K_CTRL_SHIFT_C|K_CTRL_SHIFT_D|K_CTRL_SHIFT_E|K_CTRL_SHIFT_F|K_CTRL_SHIFT_G|K_CTRL_SHIFT_G|K_CTRL_SHIFT_H|K_CTRL_SHIFT_I|K_CTRL_SHIFT_J|K_CTRL_SHIFT_K|K_CTRL_SHIFT_L|K_CTRL_SHIFT_M|K_CTRL_SHIFT_N|K_CTRL_SHIFT_\xD1|K_CTRL_SHIFT_O|K_CTRL_SHIFT_P|K_CTRL_SHIFT_Q|K_CTRL_SHIFT_R|K_CTRL_SHIFT_S|K_CTRL_SHIFT_T|K_CTRL_SHIFT_U|K_CTRL_SHIFT_V|K_CTRL_SHIFT_W|K_CTRL_SHIFT_X|K_CTRL_SHIFT_Y|K_CTRL_SHIFT_Z|K_CTRL_SHIFT_0|K_CTRL_SHIFT_1|K_CTRL_SHIFT_2|K_CTRL_SHIFT_3|K_CTRL_SHIFT_4|K_CTRL_SHIFT_5|K_CTRL_SHIFT_6|K_CTRL_SHIFT_7|K_CTRL_SHIFT_8|K_CTRL_SHIFT_9|K_CTRL_SHIFT_F1|K_CTRL_SHIFT_F2|K_CTRL_SHIFT_F3|K_CTRL_SHIFT_F4|K_CTRL_SHIFT_F5|K_CTRL_SHIFT_F6|K_CTRL_SHIFT_F7|K_CTRL_SHIFT_F8|K_CTRL_SHIFT_9|K_CTRL_SHIFT_10|K_CTRL_SHIFT_11|K_CTRL_SHIFT_12|K_CTRL_SHIFT_UP|K_CTRL_SHIFT_DOWN|K_CTRL_SHIFT_LEFT|K_CTRL_SHIFT_RIGHT|K_CTRL_SHIFT_RETURN|K_CTRL_SHIFT_BACKSPACE|K_CTRL_SHIFT_TAB|K_CTRL_SHIFT_SPACE|K_CTRL_SHIFT_ESCAPEK_ALT_SHIFT_A|K_ALT_SHIFT_B|K_ALT_SHIFT_C|K_ALT_SHIFT_D|K_ALT_SHIFT_E|K_ALT_SHIFT_F|K_ALT_SHIFT_G|K_ALT_SHIFT_G|K_ALT_SHIFT_H|K_ALT_SHIFT_I|K_ALT_SHIFT_J|K_ALT_SHIFT_K|K_ALT_SHIFT_L|K_ALT_SHIFT_M|K_ALT_SHIFT_N|K_ALT_SHIFT_\xD1|K_ALT_SHIFT_O|K_ALT_SHIFT_P|K_ALT_SHIFT_Q|K_ALT_SHIFT_R|K_ALT_SHIFT_S|K_ALT_SHIFT_T|K_ALT_SHIFT_U|K_ALT_SHIFT_V|K_ALT_SHIFT_W|K_ALT_SHIFT_X|K_ALT_SHIFT_Y|K_ALT_SHIFT_Z|K_ALT_SHIFT_0|K_ALT_SHIFT_1|K_ALT_SHIFT_2|K_ALT_SHIFT_3|K_ALT_SHIFT_4|K_ALT_SHIFT_5|K_ALT_SHIFT_6|K_ALT_SHIFT_7|K_ALT_SHIFT_8|K_ALT_SHIFT_9|K_ALT_SHIFT_F1|K_ALT_SHIFT_F2|K_ALT_SHIFT_F3|K_ALT_SHIFT_F4|K_ALT_SHIFT_F5|K_ALT_SHIFT_F6|K_ALT_SHIFT_F7|K_ALT_SHIFT_F8|K_ALT_SHIFT_9|K_ALT_SHIFT_10|K_ALT_SHIFT_11|K_ALT_SHIFT_12|K_ALT_SHIFT_UP|K_ALT_SHIFT_DOWN|K_ALT_SHIFT_LEFT|K_ALT_SHIFT_RIGHT|K_ALT_SHIFT_RETURN|K_ALT_SHIFT_BACKSPACE|K_ALT_SHIFT_TAB|K_ALT_SHIFT_SPACE|K_ALT_SHIFT_ESCAPEK_CTRL_ALT_SHIFT_A|K_CTRL_ALT_SHIFT_B|K_CTRL_ALT_SHIFT_C|K_CTRL_ALT_SHIFT_D|K_CTRL_ALT_SHIFT_E|K_CTRL_ALT_SHIFT_F|K_CTRL_ALT_SHIFT_G|K_CTRL_ALT_SHIFT_G|K_CTRL_ALT_SHIFT_H|K_CTRL_ALT_SHIFT_I|K_CTRL_ALT_SHIFT_J|K_CTRL_ALT_SHIFT_K|K_CTRL_ALT_SHIFT_L|K_CTRL_ALT_SHIFT_M|K_CTRL_ALT_SHIFT_N|K_CTRL_ALT_SHIFT_\xD1|K_CTRL_ALT_SHIFT_O|K_CTRL_ALT_SHIFT_P|K_CTRL_ALT_SHIFT_Q|K_CTRL_ALT_SHIFT_R|K_CTRL_ALT_SHIFT_S|K_CTRL_ALT_SHIFT_T|K_CTRL_ALT_SHIFT_U|K_CTRL_ALT_SHIFT_V|K_CTRL_ALT_SHIFT_W|K_CTRL_ALT_SHIFT_X|K_CTRL_ALT_SHIFT_Y|K_CTRL_ALT_SHIFT_Z|K_CTRL_ALT_SHIFT_0|K_CTRL_ALT_SHIFT_1|K_CTRL_ALT_SHIFT_2|K_CTRL_ALT_SHIFT_3|K_CTRL_ALT_SHIFT_4|K_CTRL_ALT_SHIFT_5|K_CTRL_ALT_SHIFT_6|K_CTRL_ALT_SHIFT_7|K_CTRL_ALT_SHIFT_8|K_CTRL_ALT_SHIFT_9|K_CTRL_ALT_SHIFT_F1|K_CTRL_ALT_SHIFT_F2|K_CTRL_ALT_SHIFT_F3|K_CTRL_ALT_SHIFT_F4|K_CTRL_ALT_SHIFT_F5|K_CTRL_ALT_SHIFT_F6|K_CTRL_ALT_SHIFT_F7|K_CTRL_ALT_SHIFT_F8|K_CTRL_ALT_SHIFT_F9|K_CTRL_ALT_SHIFT_F10|K_CTRL_ALT_SHIFT_F11|K_CTRL_ALT_SHIFT_F12|K_CTRL_ALT_SHIFT_UP|K_CTRL_ALT_SHIFT_DOWN|K_CTRL_ALT_SHIFT_LEFT|K_CTRL_ALT_SHIFT_RIGHT|K_CTRL_ALT_SHIFT_RETURN|K_CTRL_ALT_SHIFT_BACKSPACE|K_CTRL_ALT_SHIFT_TAB|K_CTRL_ALT_SHIFT_SPACE|K_CTRL_ALT_SHIFT_ESCAPE"
    },
        i = {
      commands: ":=",
      expressions: {
        numeric: "\\+|\\-|\\*|\\^|div|mod",
        comparison: ">=|<=|==|\\/=|>|<",
        "boolean": "\\|\\||&&|not",
        other: "\\+\\+|<\\-|\\[|\\]|\\_|\\->"
      }
    },
        s = {
      line: {
        double_slash: "\\/\\/.*$",
        double_dash: "\\-\\-.*$",
        number_sign: "#.*$"
      },
      block: {
        start: "\\/\\*",
        end: "\\*\\/"
      },
      block_alt: {
        start: "\\{\\-",
        end: "\\-\\}"
      }
    };
    this.$rules = {
      start: [{
        token: "comment.line.double-slash.gobstones",
        regex: s.line.double_slash
      }, {
        token: "comment.line.double-dash.gobstones",
        regex: s.line.double_dash
      }, {
        token: "comment.line.number-sign.gobstones",
        regex: s.line.number_sign
      }, {
        token: "comment.block.dash-asterisc.gobstones",
        regex: s.block.start,
        next: "block_comment_end"
      }, {
        token: "comment.block.brace-dash.gobstones",
        regex: s.block_alt.start,
        next: "block_comment_alt_end"
      }, {
        token: "constant.numeric.gobstones",
        regex: n.numbers
      }, {
        token: "string.quoted.double.gobstones",
        regex: n.strings
      }, {
        token: "keyword.operator.other.gobstones",
        regex: i.expressions.other
      }, {
        token: "keyword.operator.numeric.gobstones",
        regex: i.expressions.numeric
      }, {
        token: "keyword.operator.compare.gobstones",
        regex: i.expressions.comparison
      }, {
        token: "keyword.operator.boolean.gobstones",
        regex: i.expressions["boolean"]
      }, {
        token: this.createKeywordMapper({
          "storage.type.definitions.gobstones": e.standard,
          "storage.type.types.gobstones": e.type,
          "keyword.control.commands.repetitions.gobstones": t.commands.repetitions,
          "keyword.control.commands.alternatives.gobstones": t.commands.alternatives,
          "keyword.control.expressions.alternatives.gobstones": t.expressions.alternatives,
          "constant.language.colors.gobstones": n.colors,
          "constant.language.cardinals.gobstones": n.cardinals,
          "constant.language.boolean.gobstones": n.booleans,
          "support.function.gobstones": r.commands,
          "support.variable.gobstones": r.expressions,
          "variable.language.gobstones": r.keys
        }, "identifier.gobstones"),
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "comma.gobstones",
        regex: ","
      }, {
        token: "semicolon.gobstones",
        regex: ";"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      block_comment_end: [{
        token: "comment.block.dash-asterisc.gobstones",
        regex: s.block.end,
        next: "start"
      }, {
        defaultToken: "comment.block.dash-asterisc.gobstones"
      }],
      block_comment_alt_end: [{
        token: "comment.block.brace-dash.gobstones",
        regex: s.block_alt.end,
        next: "start"
      }, {
        defaultToken: "comment.block.brace-dash.gobstones"
      }]
    };
  };

  n.inherits(i, r), t.GobstonesHighlightRules = i;
}), ace.define("ace/mode/gobstones", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript", "ace/mode/gobstones_highlight_rules"], function (e, t) {
  "use strict";

  var n = e("../lib/oop"),
      r = e("./javascript").Mode,
      i = e("./gobstones_highlight_rules").GobstonesHighlightRules,
      s = function s() {
    r.call(this), this.HighlightRules = i, this.$behaviour = this.$defaultBehaviour;
  };

  n.inherits(s, r), function () {
    this.createWorker = function () {
      return null;
    }, this.$id = "ace/mode/gobstones", this.snippetFileId = "ace/snippets/gobstones";
  }.call(s.prototype), t.Mode = s;
});

(function () {
  ace.require(["ace/mode/gobstones"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-golang.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-golang.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/golang_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "else|break|case|return|goto|if|const|select|continue|struct|default|switch|for|range|func|import|package|chan|defer|fallthrough|go|interface|map|range|select|type|var",
        t = "string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error",
        n = "new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append",
        r = "nil|true|false|iota",
        s = this.createKeywordMapper({
      keyword: e,
      "constant.language": r,
      "support.function": n,
      "support.type": t
    }, ""),
        o = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment.start",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: /"(?:[^"\\]|\\.)*?"/
      }, {
        token: "string",
        regex: "`",
        next: "bqstring"
      }, {
        token: "constant.numeric",
        regex: "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + o.replace('"', "") + ")'"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: ["keyword", "text", "entity.name.function"],
        regex: "(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b"
      }, {
        token: function token(e) {
          return e[e.length - 1] == "(" ? [{
            type: s(e.slice(0, -1)) || "support.function",
            value: e.slice(0, -1)
          }, {
            type: "paren.lparen",
            value: e.slice(-1)
          }] : s(e) || "identifier";
        },
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?"
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment.end",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      bqstring: [{
        token: "string",
        regex: "`",
        next: "start"
      }, {
        defaultToken: "string"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]);
  };

  r.inherits(o, s), t.GolangHighlightRules = o;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/golang", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/golang_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./golang_highlight_rules").GolangHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.foldingRules = new a(), this.$behaviour = new u();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[]\s*$/);
        u && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/golang";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/golang"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-graphqlschema.js":
/*!**************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-graphqlschema.js ***!
  \**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/graphqlschema_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "type|interface|union|enum|schema|input|implements|extends|scalar",
        t = "Int|Float|String|ID|Boolean",
        n = this.createKeywordMapper({
      keyword: e,
      "storage.type": t
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: n,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.GraphQLSchemaHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/graphqlschema", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/graphqlschema_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./graphqlschema_highlight_rules").GraphQLSchemaHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.$id = "ace/mode/graphqlschema", this.snippetFileId = "ace/snippets/graphqlschema";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/graphqlschema"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-groovy.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-groovy.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/groovy_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "assert|with|abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|def|float|native|super|while",
        t = "null|Infinity|NaN|undefined",
        n = "AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",
        r = this.createKeywordMapper({
      "variable.language": "this",
      keyword: e,
      "support.function": n,
      "constant.language": t
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
      }, {
        token: "string",
        regex: '"""',
        next: "qqstring"
      }, {
        token: "string",
        regex: "'''",
        next: "qstring"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\?:|\\?\\.|\\*\\.|<=>|=~|==~|\\.@|\\*\\.@|\\.&|as|in|is|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: /\\(?:u[0-9A-Fa-f]{4}|.|$)/
      }, {
        token: "constant.language.escape",
        regex: /\$[\w\d]+/
      }, {
        token: "constant.language.escape",
        regex: /\$\{[^"\}]+\}?/
      }, {
        token: "string",
        regex: '"{3,5}',
        next: "start"
      }, {
        token: "string",
        regex: ".+?"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: /\\(?:u[0-9A-Fa-f]{4}|.|$)/
      }, {
        token: "string",
        regex: "'{3,5}",
        next: "start"
      }, {
        token: "string",
        regex: ".+?"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]);
  };

  r.inherits(o, s), t.GroovyHighlightRules = o;
}), ace.define("ace/mode/groovy", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript", "ace/mode/groovy_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript").Mode,
      s = e("./groovy_highlight_rules").GroovyHighlightRules,
      o = function o() {
    i.call(this), this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.createWorker = function (e) {
      return null;
    }, this.$id = "ace/mode/groovy";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/groovy"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-haml.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-haml.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/ruby_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = t.constantOtherSymbol = {
    token: "constant.other.symbol.ruby",
    regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
  };
  t.qString = {
    token: "string",
    regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
  }, t.qqString = {
    token: "string",
    regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
  }, t.tString = {
    token: "string",
    regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
  };

  var o = t.constantNumericHex = {
    token: "constant.numeric",
    regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
  },
      u = t.constantNumericBinary = {
    token: "constant.numeric",
    regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/
  },
      a = t.constantNumericDecimal = {
    token: "constant.numeric",
    regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/
  },
      f = t.constantNumericDecimal = {
    token: "constant.numeric",
    regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/
  },
      l = t.constantNumericRational = {
    token: "constant.numeric",
    regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/
  },
      c = t.constantNumericComplex = {
    token: "constant.numeric",
    regex: /\b([\d]i)\b/
  },
      h = t.constantNumericFloat = {
    token: "constant.numeric",
    regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"
  },
      p = t.instanceVariable = {
    token: "variable.instance",
    regex: "@{1,2}[a-zA-Z_\\d]+"
  },
      d = function d() {
    var e = "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method",
        t = "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend",
        n = "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION",
        r = "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",
        i = this.$keywords = this.createKeywordMapper({
      keyword: t,
      "constant.language": n,
      "variable.language": r,
      "support.function": e,
      "invalid.deprecated": "debugger"
    }, "identifier"),
        d = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",
        v = {
      "(": ")",
      "[": "]",
      "{": "}",
      "<": ">",
      "^": "^",
      "|": "|",
      "%": "%"
    };
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "comment.multiline",
        regex: "^=begin(?=$|\\s.*$)",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: /[/](?=.*\/)/,
        next: "regex"
      }, [{
        token: ["constant.other.symbol.ruby", "string.start"],
        regex: /(:)?(")/,
        push: [{
          token: "constant.language.escape",
          regex: d
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /"/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /`/,
        push: [{
          token: "constant.language.escape",
          regex: d
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /`/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: ["constant.other.symbol.ruby", "string.start"],
        regex: /(:)?(')/,
        push: [{
          token: "constant.language.escape",
          regex: /\\['\\]/
        }, {
          token: "string.end",
          regex: /'/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /%[qwx]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "qStateWithoutInterpolation", this.token;
        }
      }, {
        token: "string.start",
        regex: /%[QWX]?([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "qStateWithInterpolation", this.token;
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /%[si]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "sStateWithoutInterpolation", this.token;
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /%[SI]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "sStateWithInterpolation", this.token;
        }
      }, {
        token: "string.regexp",
        regex: /%[r]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "rState", this.token;
        }
      }], {
        token: "punctuation",
        regex: "::"
      }, p, {
        token: "variable.global",
        regex: "[$][a-zA-Z_\\d]+"
      }, {
        token: "support.class",
        regex: "[A-Z][a-zA-Z_\\d]*"
      }, {
        token: ["punctuation.operator", "support.function"],
        regex: /(\.)([a-zA-Z_\d]+)(?=\()/
      }, {
        token: ["punctuation.operator", "identifier"],
        regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/
      }, {
        token: "string.character",
        regex: "\\B\\?(?:" + d + "|\\S)"
      }, {
        token: "punctuation.operator",
        regex: /\?(?=.+:)/
      }, l, c, s, o, h, u, a, f, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: i,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "punctuation.separator.key-value",
        regex: "=>"
      }, {
        stateName: "heredoc",
        onMatch: function onMatch(e, t, n) {
          var r = e[2] == "-" || e[2] == "~" ? "indentedHeredoc" : "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[3]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "string",
            value: i[2]
          }, {
            type: "support.class",
            value: i[3]
          }, {
            type: "string",
            value: i[4]
          }];
        },
        regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",
        rules: {
          heredoc: [{
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }],
          indentedHeredoc: [{
            token: "string",
            regex: "^ +"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" || t[0] === "indentedHeredoc" ? t[0] : e;
        }
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]",
        onMatch: function onMatch(e, t, n) {
          return this.next = "", e == "}" && n.length > 1 && n[1] != "start" && (n.shift(), this.next = n.shift()), this.token;
        }
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/
      }],
      comment: [{
        token: "comment.multiline",
        regex: "^=end(?=$|\\s.*$)",
        next: "start"
      }, {
        token: "comment",
        regex: ".+"
      }],
      qStateWithInterpolation: [{
        token: "string.start",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "string";
        }
      }, {
        token: "constant.language.escape",
        regex: d
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "string.end",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "string");
        }
      }, {
        defaultToken: "string"
      }],
      qStateWithoutInterpolation: [{
        token: "string.start",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "string";
        }
      }, {
        token: "constant.language.escape",
        regex: /\\['\\]/
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "string.end",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "string");
        }
      }, {
        defaultToken: "string"
      }],
      sStateWithoutInterpolation: [{
        token: "constant.other.symbol.ruby",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.other.symbol.ruby";
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.other.symbol.ruby");
        }
      }, {
        defaultToken: "constant.other.symbol.ruby"
      }],
      sStateWithInterpolation: [{
        token: "constant.other.symbol.ruby",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.other.symbol.ruby";
        }
      }, {
        token: "constant.language.escape",
        regex: d
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "constant.other.symbol.ruby",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.other.symbol.ruby");
        }
      }, {
        defaultToken: "constant.other.symbol.ruby"
      }],
      rState: [{
        token: "string.regexp",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.language.escape";
        }
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "string.regexp",
        regex: /\//
      }, {
        token: "string.regexp",
        regex: /[)\]>}^|%][imxouesn]*/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e[0] === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.language.escape");
        }
      }, {
        include: "regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex: [{
        token: "regexp.keyword",
        regex: /\\[wWdDhHsS]/
      }, {
        token: "constant.language.escape",
        regex: /\\[AGbBzZ]/
      }, {
        token: "constant.language.escape",
        regex: /\\g<[a-zA-Z0-9]*>/
      }, {
        token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"],
        regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/
      }, {
        token: ["constant.language.escape", "invalid", "constant.language.escape"],
        regex: /(\\p{\^?)([^/]*)(})/
      }, {
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: /[/][imxouesn]*/,
        next: "start"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "regexp.keyword",
        regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        push: "regex_character_class"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.keyword",
        regex: /\\[wWdDhHsS]/
      }, {
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: /&?&?\[\^?/,
        push: "regex_character_class"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "pop"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        defaultToken: "string.regexp.characterclass"
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, i), t.RubyHighlightRules = d;
}), ace.define("ace/mode/haml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules", "ace/mode/ruby_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      s = e("./ruby_highlight_rules"),
      o = s.RubyHighlightRules,
      u = function u() {
    i.call(this), this.$rules = {
      start: [{
        token: "comment.block",
        regex: /^\/$/,
        next: "comment"
      }, {
        token: "comment.block",
        regex: /^\-#$/,
        next: "comment"
      }, {
        token: "comment.line",
        regex: /\/\s*.*/
      }, {
        token: "comment.line",
        regex: /-#\s*.*/
      }, {
        token: "keyword.other.doctype",
        regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?"
      }, s.qString, s.qqString, s.tString, {
        token: "meta.tag.haml",
        regex: /(%[\w:\-]+)/
      }, {
        token: "keyword.attribute-name.class.haml",
        regex: /\.[\w-]+/
      }, {
        token: "keyword.attribute-name.id.haml",
        regex: /#[\w-]+/,
        next: "element_class"
      }, s.constantNumericHex, s.constantNumericFloat, s.constantOtherSymbol, {
        token: "text",
        regex: /=|-|~/,
        next: "embedded_ruby"
      }],
      element_class: [{
        token: "keyword.attribute-name.class.haml",
        regex: /\.[\w-]+/
      }, {
        token: "punctuation.section",
        regex: /\{/,
        next: "element_attributes"
      }, s.constantOtherSymbol, {
        token: "empty",
        regex: "$|(?!\\.|#|\\{|\\[|=|-|~|\\/])",
        next: "start"
      }],
      element_attributes: [s.constantOtherSymbol, s.qString, s.qqString, s.tString, s.constantNumericHex, s.constantNumericFloat, {
        token: "punctuation.section",
        regex: /$|\}/,
        next: "start"
      }],
      embedded_ruby: [s.constantNumericHex, s.constantNumericFloat, s.instanceVariable, s.qString, s.qqString, s.tString, {
        token: "support.class",
        regex: "[A-Z][a-zA-Z_\\d]+"
      }, {
        token: new o().getKeywords(),
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: ["keyword", "text", "text"],
        regex: "(?:do|\\{)(?: \\|[^|]+\\|)?$",
        next: "start"
      }, {
        token: ["text"],
        regex: "^$",
        next: "start"
      }, {
        token: ["text"],
        regex: "^(?!.*\\|\\s*$)",
        next: "start"
      }],
      comment: [{
        token: "comment.block",
        regex: /^$/,
        next: "start"
      }, {
        token: "comment.block",
        regex: /\s+.*/
      }]
    }, this.normalizeRules();
  };

  r.inherits(u, i), t.HamlHighlightRules = u;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/haml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/haml_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./haml_highlight_rules").HamlHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.$id = "ace/mode/haml", this.snippetFileId = "ace/snippets/haml";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/haml"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-handlebars.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-handlebars.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/handlebars_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  function s(e, t) {
    return t.splice(0, 3), t.shift() || "start";
  }

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      o = function o() {
    i.call(this);
    var e = {
      regex: "(?={{)",
      push: "handlebars"
    };

    for (var t in this.$rules) {
      this.$rules[t].unshift(e);
    }

    this.$rules.handlebars = [{
      token: "comment.start",
      regex: "{{!--",
      push: [{
        token: "comment.end",
        regex: "--}}",
        next: s
      }, {
        defaultToken: "comment"
      }]
    }, {
      token: "comment.start",
      regex: "{{!",
      push: [{
        token: "comment.end",
        regex: "}}",
        next: s
      }, {
        defaultToken: "comment"
      }]
    }, {
      token: "support.function",
      regex: "{{{",
      push: [{
        token: "support.function",
        regex: "}}}",
        next: s
      }, {
        token: "variable.parameter",
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*"
      }]
    }, {
      token: "storage.type.start",
      regex: "{{[#\\^/&]?",
      push: [{
        token: "storage.type.end",
        regex: "}}",
        next: s
      }, {
        token: "variable.parameter",
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*"
      }]
    }], this.normalizeRules();
  };

  r.inherits(o, i), t.HandlebarsHighlightRules = o;
}), ace.define("ace/mode/behaviour/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour/xml"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour/xml").XmlBehaviour,
      s = function s() {
    i.call(this);
  };

  r.inherits(s, i), t.HtmlBehaviour = s;
}), ace.define("ace/mode/handlebars", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/handlebars_highlight_rules", "ace/mode/behaviour/html", "ace/mode/folding/html"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./handlebars_highlight_rules").HandlebarsHighlightRules,
      o = e("./behaviour/html").HtmlBehaviour,
      u = e("./folding/html").FoldMode,
      a = function a() {
    i.call(this), this.HighlightRules = s, this.$behaviour = new o();
  };

  r.inherits(a, i), function () {
    this.blockComment = {
      start: "{{!--",
      end: "--}}"
    }, this.$id = "ace/mode/handlebars";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/handlebars"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-haskell.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-haskell.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/haskell_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: ["punctuation.definition.entity.haskell", "keyword.operator.function.infix.haskell", "punctuation.definition.entity.haskell"],
        regex: "(`)([a-zA-Z_']*?)(`)",
        comment: "In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10])."
      }, {
        token: "constant.language.unit.haskell",
        regex: "\\(\\)"
      }, {
        token: "constant.language.empty-list.haskell",
        regex: "\\[\\]"
      }, {
        token: "keyword.other.haskell",
        regex: "\\b(module|signature)\\b",
        push: [{
          token: "keyword.other.haskell",
          regex: "\\bwhere\\b",
          next: "pop"
        }, {
          include: "#module_name"
        }, {
          include: "#module_exports"
        }, {
          token: "invalid",
          regex: "[a-z]+"
        }, {
          defaultToken: "meta.declaration.module.haskell"
        }]
      }, {
        token: "keyword.other.haskell",
        regex: "\\bclass\\b",
        push: [{
          token: "keyword.other.haskell",
          regex: "\\bwhere\\b",
          next: "pop"
        }, {
          token: "support.class.prelude.haskell",
          regex: "\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\b"
        }, {
          token: "entity.other.inherited-class.haskell",
          regex: "[A-Z][A-Za-z_']*"
        }, {
          token: "variable.other.generic-type.haskell",
          regex: "\\b[a-z][a-zA-Z0-9_']*\\b"
        }, {
          defaultToken: "meta.declaration.class.haskell"
        }]
      }, {
        token: "keyword.other.haskell",
        regex: "\\binstance\\b",
        push: [{
          token: "keyword.other.haskell",
          regex: "\\bwhere\\b|$",
          next: "pop"
        }, {
          include: "#type_signature"
        }, {
          defaultToken: "meta.declaration.instance.haskell"
        }]
      }, {
        token: "keyword.other.haskell",
        regex: "import",
        push: [{
          token: "meta.import.haskell",
          regex: "$|;|^",
          next: "pop"
        }, {
          token: "keyword.other.haskell",
          regex: "qualified|as|hiding"
        }, {
          include: "#module_name"
        }, {
          include: "#module_exports"
        }, {
          defaultToken: "meta.import.haskell"
        }]
      }, {
        token: ["keyword.other.haskell", "meta.deriving.haskell"],
        regex: "(deriving)(\\s*\\()",
        push: [{
          token: "meta.deriving.haskell",
          regex: "\\)",
          next: "pop"
        }, {
          token: "entity.other.inherited-class.haskell",
          regex: "\\b[A-Z][a-zA-Z_']*"
        }, {
          defaultToken: "meta.deriving.haskell"
        }]
      }, {
        token: "keyword.other.haskell",
        regex: "\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\b"
      }, {
        token: "keyword.operator.haskell",
        regex: "\\binfix[lr]?\\b"
      }, {
        token: "keyword.control.haskell",
        regex: "\\b(?:do|if|then|else)\\b"
      }, {
        token: "constant.numeric.float.haskell",
        regex: "\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b",
        comment: "Floats are always decimal"
      }, {
        token: "constant.numeric.haskell",
        regex: "\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\b"
      }, {
        token: ["meta.preprocessor.c", "punctuation.definition.preprocessor.c", "meta.preprocessor.c"],
        regex: "^(\\s*)(#)(\\s*\\w+)",
        comment: 'In addition to Haskell\'s "native" syntax, GHC permits the C preprocessor to be run on a source file.'
      }, {
        include: "#pragma"
      }, {
        token: "punctuation.definition.string.begin.haskell",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.haskell",
          regex: '"',
          next: "pop"
        }, {
          token: "constant.character.escape.haskell",
          regex: "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])"
        }, {
          token: "constant.character.escape.octal.haskell",
          regex: "\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+"
        }, {
          token: "constant.character.escape.control.haskell",
          regex: "\\^[A-Z@\\[\\]\\\\\\^_]"
        }, {
          defaultToken: "string.quoted.double.haskell"
        }]
      }, {
        token: ["punctuation.definition.string.begin.haskell", "string.quoted.single.haskell", "constant.character.escape.haskell", "constant.character.escape.octal.haskell", "constant.character.escape.hexadecimal.haskell", "constant.character.escape.control.haskell", "punctuation.definition.string.end.haskell"],
        regex: "(')(?:([\\ -\\[\\]-~])|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))(')"
      }, {
        token: ["meta.function.type-declaration.haskell", "entity.name.function.haskell", "meta.function.type-declaration.haskell", "keyword.other.double-colon.haskell"],
        regex: "^(\\s*)([a-z_][a-zA-Z0-9_']*|\\([|!%$+\\-.,=</>]+\\))(\\s*)(::)",
        push: [{
          token: "meta.function.type-declaration.haskell",
          regex: "$",
          next: "pop"
        }, {
          include: "#type_signature"
        }, {
          defaultToken: "meta.function.type-declaration.haskell"
        }]
      }, {
        token: "support.constant.haskell",
        regex: "\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\(\\)|\\[\\])\\b"
      }, {
        token: "constant.other.haskell",
        regex: "\\b[A-Z]\\w*\\b"
      }, {
        include: "#comments"
      }, {
        token: "support.function.prelude.haskell",
        regex: "\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b"
      }, {
        include: "#infix_op"
      }, {
        token: "keyword.operator.haskell",
        regex: "[|!%$?~+:\\-.=</>\\\\]+",
        comment: "In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*."
      }, {
        token: "punctuation.separator.comma.haskell",
        regex: ","
      }],
      "#block_comment": [{
        token: "punctuation.definition.comment.haskell",
        regex: "\\{-(?!#)",
        push: [{
          include: "#block_comment"
        }, {
          token: "punctuation.definition.comment.haskell",
          regex: "-\\}",
          next: "pop"
        }, {
          defaultToken: "comment.block.haskell"
        }]
      }],
      "#comments": [{
        token: "punctuation.definition.comment.haskell",
        regex: "--.*",
        push_: [{
          token: "comment.line.double-dash.haskell",
          regex: "$",
          next: "pop"
        }, {
          defaultToken: "comment.line.double-dash.haskell"
        }]
      }, {
        include: "#block_comment"
      }],
      "#infix_op": [{
        token: "entity.name.function.infix.haskell",
        regex: "\\([|!%$+:\\-.=</>]+\\)|\\(,+\\)"
      }],
      "#module_exports": [{
        token: "meta.declaration.exports.haskell",
        regex: "\\(",
        push: [{
          token: "meta.declaration.exports.haskell.end",
          regex: "\\)",
          next: "pop"
        }, {
          token: "entity.name.function.haskell",
          regex: "\\b[a-z][a-zA-Z_']*"
        }, {
          token: "storage.type.haskell",
          regex: "\\b[A-Z][A-Za-z_']*"
        }, {
          token: "punctuation.separator.comma.haskell",
          regex: ","
        }, {
          include: "#infix_op"
        }, {
          token: "meta.other.unknown.haskell",
          regex: "\\(.*?\\)",
          comment: "So named because I don't know what to call this."
        }, {
          defaultToken: "meta.declaration.exports.haskell.end"
        }]
      }],
      "#module_name": [{
        token: "support.other.module.haskell",
        regex: "[A-Z][A-Za-z._']*"
      }],
      "#pragma": [{
        token: "meta.preprocessor.haskell",
        regex: "\\{-#",
        push: [{
          token: "meta.preprocessor.haskell",
          regex: "#-\\}",
          next: "pop"
        }, {
          token: "keyword.other.preprocessor.haskell",
          regex: "\\b(?:LANGUAGE|UNPACK|INLINE)\\b"
        }, {
          defaultToken: "meta.preprocessor.haskell"
        }]
      }],
      "#type_signature": [{
        token: ["meta.class-constraint.haskell", "entity.other.inherited-class.haskell", "meta.class-constraint.haskell", "variable.other.generic-type.haskell", "meta.class-constraint.haskell", "keyword.other.big-arrow.haskell"],
        regex: "(\\(\\s*)([A-Z][A-Za-z]*)(\\s+)([a-z][A-Za-z_']*)(\\)\\s*)(=>)"
      }, {
        include: "#pragma"
      }, {
        token: "keyword.other.arrow.haskell",
        regex: "->"
      }, {
        token: "keyword.other.big-arrow.haskell",
        regex: "=>"
      }, {
        token: "support.type.prelude.haskell",
        regex: "\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\b"
      }, {
        token: "variable.other.generic-type.haskell",
        regex: "\\b[a-z][a-zA-Z0-9_']*\\b"
      }, {
        token: "storage.type.haskell",
        regex: "\\b[A-Z][a-zA-Z0-9_']*\\b"
      }, {
        token: "support.constant.unit.haskell",
        regex: "\\(\\)"
      }, {
        include: "#comments"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["hs"],
    keyEquivalent: "^~H",
    name: "Haskell",
    scopeName: "source.haskell"
  }, r.inherits(s, i), t.HaskellHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/haskell", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/haskell_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./haskell_highlight_rules").HaskellHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "--", this.blockComment = null, this.$id = "ace/mode/haskell", this.snippetFileId = "ace/snippets/haskell";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/haskell"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-haskell_cabal.js":
/*!**************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-haskell_cabal.js ***!
  \**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/haskell_cabal_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment",
        regex: "^\\s*--.*$"
      }, {
        token: ["keyword"],
        regex: /^(\s*\w.*?)(:(?:\s+|$))/
      }, {
        token: "constant.numeric",
        regex: /[\d_]+(?:(?:[\.\d_]*)?)/
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false|TRUE|FALSE|True|False|yes|no)\\b"
      }, {
        token: "markup.heading",
        regex: /^(\w.*)$/
      }]
    };
  };

  r.inherits(s, i), t.CabalHighlightRules = s;
}), ace.define("ace/mode/folding/haskell_cabal", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.isHeading = function (e, t) {
      var n = "markup.heading",
          r = e.getTokens(t)[0];
      return t == 0 || r && r.type.lastIndexOf(n, 0) === 0;
    }, this.getFoldWidget = function (e, t, n) {
      if (this.isHeading(e, n)) return "start";

      if (t === "markbeginend" && !/^\s*$/.test(e.getLine(n))) {
        var r = e.getLength();

        while (++n < r) {
          if (!/^\s*$/.test(e.getLine(n))) break;
        }

        if (n == r || this.isHeading(e, n)) return "end";
      }

      return "";
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.getLine(n),
          i = r.length,
          o = e.getLength(),
          u = n,
          a = n;

      if (this.isHeading(e, n)) {
        while (++n < o) {
          if (this.isHeading(e, n)) {
            n--;
            break;
          }
        }

        a = n;
        if (a > u) while (a > u && /^\s*$/.test(e.getLine(a))) {
          a--;
        }

        if (a > u) {
          var f = e.getLine(a).length;
          return new s(u, i, a, f);
        }
      } else if (this.getFoldWidget(e, t, n) === "end") {
        var a = n,
            f = e.getLine(a).length;

        while (--n >= 0) {
          if (this.isHeading(e, n)) break;
        }

        var r = e.getLine(n),
            i = r.length;
        return new s(n, i, a, f);
      }
    };
  }.call(o.prototype);
}), ace.define("ace/mode/haskell_cabal", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/haskell_cabal_highlight_rules", "ace/mode/folding/haskell_cabal"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./haskell_cabal_highlight_rules").CabalHighlightRules,
      o = e("./folding/haskell_cabal").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "--", this.blockComment = null, this.$id = "ace/mode/haskell_cabal";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/haskell_cabal"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-haxe.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-haxe.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/haxe_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std",
        t = "null|true|false",
        n = this.createKeywordMapper({
      "variable.language": "this",
      keyword: e,
      "constant.language": t
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: n,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({<]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}>]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]);
  };

  r.inherits(o, s), t.HaxeHighlightRules = o;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/haxe", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/haxe_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./haxe_highlight_rules").HaxeHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[]\s*$/);
        o && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/haxe";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/haxe"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-hjson.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-hjson.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/hjson_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        include: "#comments"
      }, {
        include: "#rootObject"
      }, {
        include: "#value"
      }],
      "#array": [{
        token: "paren.lparen",
        regex: /\[/,
        push: [{
          token: "paren.rparen",
          regex: /\]/,
          next: "pop"
        }, {
          include: "#value"
        }, {
          include: "#comments"
        }, {
          token: "text",
          regex: /,|$/
        }, {
          token: "invalid.illegal",
          regex: /[^\s\]]/
        }, {
          defaultToken: "array"
        }]
      }],
      "#comments": [{
        token: ["comment.punctuation", "comment.line"],
        regex: /(#)(.*$)/
      }, {
        token: "comment.punctuation",
        regex: /\/\*/,
        push: [{
          token: "comment.punctuation",
          regex: /\*\//,
          next: "pop"
        }, {
          defaultToken: "comment.block"
        }]
      }, {
        token: ["comment.punctuation", "comment.line"],
        regex: /(\/\/)(.*$)/
      }],
      "#constant": [{
        token: "constant",
        regex: /\b(?:true|false|null)\b/
      }],
      "#keyname": [{
        token: "keyword",
        regex: /(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*(?=:)/
      }],
      "#mstring": [{
        token: "string",
        regex: /'''/,
        push: [{
          token: "string",
          regex: /'''/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      "#number": [{
        token: "constant.numeric",
        regex: /-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/,
        comment: "handles integer and decimal numbers"
      }],
      "#object": [{
        token: "paren.lparen",
        regex: /\{/,
        push: [{
          token: "paren.rparen",
          regex: /\}/,
          next: "pop"
        }, {
          include: "#keyname"
        }, {
          include: "#value"
        }, {
          token: "text",
          regex: /:/
        }, {
          token: "text",
          regex: /,/
        }, {
          defaultToken: "paren"
        }]
      }],
      "#rootObject": [{
        token: "paren",
        regex: /(?=\s*(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*:)/,
        push: [{
          token: "paren.rparen",
          regex: /---none---/,
          next: "pop"
        }, {
          include: "#keyname"
        }, {
          include: "#value"
        }, {
          token: "text",
          regex: /:/
        }, {
          token: "text",
          regex: /,/
        }, {
          defaultToken: "paren"
        }]
      }],
      "#string": [{
        token: "string",
        regex: /"/,
        push: [{
          token: "string",
          regex: /"/,
          next: "pop"
        }, {
          token: "constant.language.escape",
          regex: /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/
        }, {
          token: "invalid.illegal",
          regex: /\\./
        }, {
          defaultToken: "string"
        }]
      }],
      "#ustring": [{
        token: "string",
        regex: /\b[^:,0-9\-\{\[\}\]\s].*$/
      }],
      "#value": [{
        include: "#constant"
      }, {
        include: "#number"
      }, {
        include: "#string"
      }, {
        include: "#array"
      }, {
        include: "#object"
      }, {
        include: "#comments"
      }, {
        include: "#mstring"
      }, {
        include: "#ustring"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["hjson"],
    foldingStartMarker: "(?x:     # turn on extended mode\n              ^    # a line beginning with\n              \\s*    # some optional space\n              [{\\[]  # the start of an object or array\n              (?!    # but not followed by\n              .*   # whatever\n              [}\\]]  # and the close of an object or array\n              ,?   # an optional comma\n              \\s*  # some optional space\n              $    # at the end of the line\n              )\n              |    # ...or...\n              [{\\[]  # the start of an object or array\n              \\s*    # some optional space\n              $    # at the end of the line\n            )",
    foldingStopMarker: "(?x:   # turn on extended mode\n             ^    # a line beginning with\n             \\s*  # some optional space\n             [}\\]]  # and the close of an object or array\n             )",
    keyEquivalent: "^~J",
    name: "Hjson",
    scopeName: "source.hjson"
  }, r.inherits(s, i), t.HjsonHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/hjson", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/hjson_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./hjson_highlight_rules").HjsonHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/hjson";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/hjson"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-html.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-html.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
});

(function () {
  ace.require(["ace/mode/html"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-html_elixir.js":
/*!************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-html_elixir.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/elixir_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: ["meta.module.elixir", "keyword.control.module.elixir", "meta.module.elixir", "entity.name.type.module.elixir"],
        regex: "^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)"
      }, {
        token: "comment.documentation.heredoc",
        regex: '@(?:module|type)?doc (?:~[a-z])?"""',
        push: [{
          token: "comment.documentation.heredoc",
          regex: '\\s*"""',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "comment.documentation.heredoc"
        }],
        comment: "@doc with heredocs is treated as documentation"
      }, {
        token: "comment.documentation.heredoc",
        regex: '@(?:module|type)?doc ~[A-Z]"""',
        push: [{
          token: "comment.documentation.heredoc",
          regex: '\\s*"""',
          next: "pop"
        }, {
          defaultToken: "comment.documentation.heredoc"
        }],
        comment: "@doc with heredocs is treated as documentation"
      }, {
        token: "comment.documentation.heredoc",
        regex: "@(?:module|type)?doc (?:~[a-z])?'''",
        push: [{
          token: "comment.documentation.heredoc",
          regex: "\\s*'''",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "comment.documentation.heredoc"
        }],
        comment: "@doc with heredocs is treated as documentation"
      }, {
        token: "comment.documentation.heredoc",
        regex: "@(?:module|type)?doc ~[A-Z]'''",
        push: [{
          token: "comment.documentation.heredoc",
          regex: "\\s*'''",
          next: "pop"
        }, {
          defaultToken: "comment.documentation.heredoc"
        }],
        comment: "@doc with heredocs is treated as documentation"
      }, {
        token: "comment.documentation.false",
        regex: "@(?:module|type)?doc false",
        comment: "@doc false is treated as documentation"
      }, {
        token: "comment.documentation.string",
        regex: '@(?:module|type)?doc "',
        push: [{
          token: "comment.documentation.string",
          regex: '"',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "comment.documentation.string"
        }],
        comment: "@doc with string is treated as documentation"
      }, {
        token: "keyword.control.elixir",
        regex: "\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])"
      }, {
        token: "keyword.operator.elixir",
        regex: "\\b(?:and|not|or|when|xor|in|inlist|inbits)\\b",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?<!\\.)\\b(and|not|or|when|xor|in|inlist|inbits)\\b",
        comment: " as above, just doesn't need a 'end' and does a logic operation"
      }, {
        token: "constant.language.elixir",
        regex: "\\b(?:nil|true|false)\\b(?![?!])"
      }, {
        token: "variable.language.elixir",
        regex: "\\b__(?:CALLER|ENV|MODULE|DIR)__\\b(?![?!])"
      }, {
        token: ["punctuation.definition.variable.elixir", "variable.other.readwrite.module.elixir"],
        regex: "(@)([a-zA-Z_]\\w*)"
      }, {
        token: ["punctuation.definition.variable.elixir", "variable.other.anonymous.elixir"],
        regex: "(&)(\\d*)"
      }, {
        token: "variable.other.constant.elixir",
        regex: "\\b[A-Z]\\w*\\b"
      }, {
        token: "constant.numeric.elixir",
        regex: "\\b(?:0x[\\da-fA-F](?:_?[\\da-fA-F])*|\\d(?:_?\\d)*(?:\\.(?![^[:space:][:digit:]])(?:_?\\d)*)?(?:[eE][-+]?\\d(?:_?\\d)*)?|0b[01]+|0o[0-7]+)\\b",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "\\b(0x\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b"
      }, {
        token: "punctuation.definition.constant.elixir",
        regex: ":'",
        push: [{
          token: "punctuation.definition.constant.elixir",
          regex: "'",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "constant.other.symbol.single-quoted.elixir"
        }]
      }, {
        token: "punctuation.definition.constant.elixir",
        regex: ':"',
        push: [{
          token: "punctuation.definition.constant.elixir",
          regex: '"',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "constant.other.symbol.double-quoted.elixir"
        }]
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "(?:''')",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?>''')",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "^\\s*'''",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "support.function.variable.quoted.single.heredoc.elixir"
        }],
        comment: "Single-quoted heredocs"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "'",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "'",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "support.function.variable.quoted.single.elixir"
        }],
        comment: "single quoted string (allows for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: '(?:""")',
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: '(?>""")',
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: '^\\s*"""',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.quoted.double.heredoc.elixir"
        }],
        comment: "Double-quoted heredocs"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: '"',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.quoted.double.elixir"
        }],
        comment: "double quoted string (allows for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: '~[a-z](?:""")',
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: '~[a-z](?>""")',
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: '^\\s*"""',
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.quoted.double.heredoc.elixir"
        }],
        comment: "Double-quoted heredocs sigils"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[a-z]\\{",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\}[a-z]*",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.interpolated.elixir"
        }],
        comment: "sigil (allow for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[a-z]\\[",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\][a-z]*",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.interpolated.elixir"
        }],
        comment: "sigil (allow for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[a-z]\\<",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\>[a-z]*",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.interpolated.elixir"
        }],
        comment: "sigil (allow for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[a-z]\\(",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\)[a-z]*",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.interpolated.elixir"
        }],
        comment: "sigil (allow for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[a-z][^\\w]",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "[^\\w][a-z]*",
          next: "pop"
        }, {
          include: "#interpolated_elixir"
        }, {
          include: "#escaped_char"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.interpolated.elixir"
        }],
        comment: "sigil (allow for interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: '~[A-Z](?:""")',
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: '~[A-Z](?>""")',
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: '^\\s*"""',
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "Double-quoted heredocs sigils"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[A-Z]\\{",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\}[a-z]*",
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "sigil (without interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[A-Z]\\[",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\][a-z]*",
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "sigil (without interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[A-Z]\\<",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\>[a-z]*",
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "sigil (without interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[A-Z]\\(",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "\\)[a-z]*",
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "sigil (without interpolation)"
      }, {
        token: "punctuation.definition.string.begin.elixir",
        regex: "~[A-Z][^\\w]",
        push: [{
          token: "punctuation.definition.string.end.elixir",
          regex: "[^\\w][a-z]*",
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.literal.upper.elixir"
        }],
        comment: "sigil (without interpolation)"
      }, {
        token: ["punctuation.definition.constant.elixir", "constant.other.symbol.elixir"],
        regex: "(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",
        comment: "symbols"
      }, {
        token: "punctuation.definition.constant.elixir",
        regex: "(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",
        comment: "symbols"
      }, {
        token: ["punctuation.definition.comment.elixir", "comment.line.number-sign.elixir"],
        regex: "(#)(.*)"
      }, {
        token: "constant.numeric.elixir",
        regex: "\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])",
        TODO: "FIXME: regexp doesn't have js equivalent",
        originalRegex: "(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|[^xMC])|[^\\s\\\\])",
        comment: '\n			matches questionmark-letters.\n\n			examples (1st alternation = hex):\n			?\\x1     ?\\x61\n\n			examples (2rd alternation = escaped):\n			?\\n      ?\\b\n\n			examples (3rd alternation = normal):\n			?a       ?A       ?0 \n			?*       ?"       ?( \n			?.       ?#\n			\n			the negative lookbehind prevents against matching\n			p(42.tainted?)\n			'
      }, {
        token: "keyword.operator.assignment.augmented.elixir",
        regex: "\\+=|\\-=|\\|\\|=|~=|&&="
      }, {
        token: "keyword.operator.comparison.elixir",
        regex: "===?|!==?|<=?|>=?"
      }, {
        token: "keyword.operator.bitwise.elixir",
        regex: "\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}"
      }, {
        token: "keyword.operator.logical.elixir",
        regex: "!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",
        originalRegex: "(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b"
      }, {
        token: "keyword.operator.arithmetic.elixir",
        regex: "\\*|\\+|\\-|/"
      }, {
        token: "keyword.operator.other.elixir",
        regex: "\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>"
      }, {
        token: "keyword.operator.assignment.elixir",
        regex: "="
      }, {
        token: "punctuation.separator.other.elixir",
        regex: ":"
      }, {
        token: "punctuation.separator.statement.elixir",
        regex: "\\;"
      }, {
        token: "punctuation.separator.object.elixir",
        regex: ","
      }, {
        token: "punctuation.separator.method.elixir",
        regex: "\\."
      }, {
        token: "punctuation.section.scope.elixir",
        regex: "\\{|\\}"
      }, {
        token: "punctuation.section.array.elixir",
        regex: "\\[|\\]"
      }, {
        token: "punctuation.section.function.elixir",
        regex: "\\(|\\)"
      }],
      "#escaped_char": [{
        token: "constant.character.escape.elixir",
        regex: "\\\\(?:x[\\da-fA-F]{1,2}|.)"
      }],
      "#interpolated_elixir": [{
        token: ["source.elixir.embedded.source", "source.elixir.embedded.source.empty"],
        regex: "(#\\{)(\\})"
      }, {
        todo: {
          token: "punctuation.section.embedded.elixir",
          regex: "#\\{",
          push: [{
            token: "punctuation.section.embedded.elixir",
            regex: "\\}",
            next: "pop"
          }, {
            include: "#nest_curly_and_self"
          }, {
            include: "$self"
          }, {
            defaultToken: "source.elixir.embedded.source"
          }]
        }
      }],
      "#nest_curly_and_self": [{
        token: "punctuation.section.scope.elixir",
        regex: "\\{",
        push: [{
          token: "punctuation.section.scope.elixir",
          regex: "\\}",
          next: "pop"
        }, {
          include: "#nest_curly_and_self"
        }]
      }, {
        include: "$self"
      }],
      "#regex_sub": [{
        include: "#interpolated_elixir"
      }, {
        include: "#escaped_char"
      }, {
        token: ["punctuation.definition.arbitrary-repitition.elixir", "string.regexp.arbitrary-repitition.elixir", "string.regexp.arbitrary-repitition.elixir", "punctuation.definition.arbitrary-repitition.elixir"],
        regex: "(\\{)(\\d+)((?:,\\d+)?)(\\})"
      }, {
        token: "punctuation.definition.character-class.elixir",
        regex: "\\[(?:\\^?\\])?",
        push: [{
          token: "punctuation.definition.character-class.elixir",
          regex: "\\]",
          next: "pop"
        }, {
          include: "#escaped_char"
        }, {
          defaultToken: "string.regexp.character-class.elixir"
        }]
      }, {
        token: "punctuation.definition.group.elixir",
        regex: "\\(",
        push: [{
          token: "punctuation.definition.group.elixir",
          regex: "\\)",
          next: "pop"
        }, {
          include: "#regex_sub"
        }, {
          defaultToken: "string.regexp.group.elixir"
        }]
      }, {
        token: ["punctuation.definition.comment.elixir", "comment.line.number-sign.elixir"],
        regex: "(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)",
        originalRegex: "(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",
        comment: "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags."
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    comment: "Textmate bundle for Elixir Programming Language.",
    fileTypes: ["ex", "exs"],
    firstLineMatch: "^#!/.*\\belixir",
    foldingStartMarker: "(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",
    foldingStopMarker: "^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",
    keyEquivalent: "^~E",
    name: "Elixir",
    scopeName: "source.elixir"
  }, r.inherits(s, i), t.ElixirHighlightRules = s;
}), ace.define("ace/mode/html_elixir_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules", "ace/mode/elixir_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      s = e("./elixir_highlight_rules").ElixirHighlightRules,
      o = function o() {
    i.call(this);
    var e = [{
      regex: "<%%|%%>",
      token: "constant.language.escape"
    }, {
      token: "comment.start.eex",
      regex: "<%#",
      push: [{
        token: "comment.end.eex",
        regex: "%>",
        next: "pop",
        defaultToken: "comment"
      }]
    }, {
      token: "support.elixir_tag",
      regex: "<%+(?!>)[-=]?",
      push: "elixir-start"
    }],
        t = [{
      token: "support.elixir_tag",
      regex: "%>",
      next: "pop"
    }, {
      token: "comment",
      regex: "#(?:[^%]|%[^>])*"
    }];

    for (var n in this.$rules) {
      this.$rules[n].unshift.apply(this.$rules[n], e);
    }

    this.embedRules(s, "elixir-", t, ["start"]), this.normalizeRules();
  };

  r.inherits(o, i), t.HtmlElixirHighlightRules = o;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/elixir", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/elixir_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./elixir_highlight_rules").ElixirHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.$id = "ace/mode/elixir";
  }.call(u.prototype), t.Mode = u;
}), ace.define("ace/mode/html_elixir", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_elixir_highlight_rules", "ace/mode/html", "ace/mode/javascript", "ace/mode/css", "ace/mode/elixir"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_elixir_highlight_rules").HtmlElixirHighlightRules,
      s = e("./html").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./elixir").Mode,
      f = function f() {
    s.call(this), this.HighlightRules = i, this.createModeDelegates({
      "js-": o,
      "css-": u,
      "elixir-": a
    });
  };

  r.inherits(f, s), function () {
    this.$id = "ace/mode/html_elixir";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/html_elixir"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-html_ruby.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-html_ruby.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/ruby_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = t.constantOtherSymbol = {
    token: "constant.other.symbol.ruby",
    regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
  };
  t.qString = {
    token: "string",
    regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
  }, t.qqString = {
    token: "string",
    regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
  }, t.tString = {
    token: "string",
    regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
  };

  var o = t.constantNumericHex = {
    token: "constant.numeric",
    regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
  },
      u = t.constantNumericBinary = {
    token: "constant.numeric",
    regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/
  },
      a = t.constantNumericDecimal = {
    token: "constant.numeric",
    regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/
  },
      f = t.constantNumericDecimal = {
    token: "constant.numeric",
    regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/
  },
      l = t.constantNumericRational = {
    token: "constant.numeric",
    regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/
  },
      c = t.constantNumericComplex = {
    token: "constant.numeric",
    regex: /\b([\d]i)\b/
  },
      h = t.constantNumericFloat = {
    token: "constant.numeric",
    regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"
  },
      p = t.instanceVariable = {
    token: "variable.instance",
    regex: "@{1,2}[a-zA-Z_\\d]+"
  },
      d = function d() {
    var e = "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method",
        t = "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend",
        n = "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION",
        r = "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",
        i = this.$keywords = this.createKeywordMapper({
      keyword: t,
      "constant.language": n,
      "variable.language": r,
      "support.function": e,
      "invalid.deprecated": "debugger"
    }, "identifier"),
        d = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",
        v = {
      "(": ")",
      "[": "]",
      "{": "}",
      "<": ">",
      "^": "^",
      "|": "|",
      "%": "%"
    };
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "comment.multiline",
        regex: "^=begin(?=$|\\s.*$)",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: /[/](?=.*\/)/,
        next: "regex"
      }, [{
        token: ["constant.other.symbol.ruby", "string.start"],
        regex: /(:)?(")/,
        push: [{
          token: "constant.language.escape",
          regex: d
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /"/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /`/,
        push: [{
          token: "constant.language.escape",
          regex: d
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /`/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: ["constant.other.symbol.ruby", "string.start"],
        regex: /(:)?(')/,
        push: [{
          token: "constant.language.escape",
          regex: /\\['\\]/
        }, {
          token: "string.end",
          regex: /'/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /%[qwx]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "qStateWithoutInterpolation", this.token;
        }
      }, {
        token: "string.start",
        regex: /%[QWX]?([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "qStateWithInterpolation", this.token;
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /%[si]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "sStateWithoutInterpolation", this.token;
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /%[SI]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "sStateWithInterpolation", this.token;
        }
      }, {
        token: "string.regexp",
        regex: /%[r]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "rState", this.token;
        }
      }], {
        token: "punctuation",
        regex: "::"
      }, p, {
        token: "variable.global",
        regex: "[$][a-zA-Z_\\d]+"
      }, {
        token: "support.class",
        regex: "[A-Z][a-zA-Z_\\d]*"
      }, {
        token: ["punctuation.operator", "support.function"],
        regex: /(\.)([a-zA-Z_\d]+)(?=\()/
      }, {
        token: ["punctuation.operator", "identifier"],
        regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/
      }, {
        token: "string.character",
        regex: "\\B\\?(?:" + d + "|\\S)"
      }, {
        token: "punctuation.operator",
        regex: /\?(?=.+:)/
      }, l, c, s, o, h, u, a, f, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: i,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "punctuation.separator.key-value",
        regex: "=>"
      }, {
        stateName: "heredoc",
        onMatch: function onMatch(e, t, n) {
          var r = e[2] == "-" || e[2] == "~" ? "indentedHeredoc" : "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[3]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "string",
            value: i[2]
          }, {
            type: "support.class",
            value: i[3]
          }, {
            type: "string",
            value: i[4]
          }];
        },
        regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",
        rules: {
          heredoc: [{
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }],
          indentedHeredoc: [{
            token: "string",
            regex: "^ +"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" || t[0] === "indentedHeredoc" ? t[0] : e;
        }
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]",
        onMatch: function onMatch(e, t, n) {
          return this.next = "", e == "}" && n.length > 1 && n[1] != "start" && (n.shift(), this.next = n.shift()), this.token;
        }
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/
      }],
      comment: [{
        token: "comment.multiline",
        regex: "^=end(?=$|\\s.*$)",
        next: "start"
      }, {
        token: "comment",
        regex: ".+"
      }],
      qStateWithInterpolation: [{
        token: "string.start",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "string";
        }
      }, {
        token: "constant.language.escape",
        regex: d
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "string.end",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "string");
        }
      }, {
        defaultToken: "string"
      }],
      qStateWithoutInterpolation: [{
        token: "string.start",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "string";
        }
      }, {
        token: "constant.language.escape",
        regex: /\\['\\]/
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "string.end",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "string");
        }
      }, {
        defaultToken: "string"
      }],
      sStateWithoutInterpolation: [{
        token: "constant.other.symbol.ruby",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.other.symbol.ruby";
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.other.symbol.ruby");
        }
      }, {
        defaultToken: "constant.other.symbol.ruby"
      }],
      sStateWithInterpolation: [{
        token: "constant.other.symbol.ruby",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.other.symbol.ruby";
        }
      }, {
        token: "constant.language.escape",
        regex: d
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "constant.other.symbol.ruby",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.other.symbol.ruby");
        }
      }, {
        defaultToken: "constant.other.symbol.ruby"
      }],
      rState: [{
        token: "string.regexp",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.language.escape";
        }
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "string.regexp",
        regex: /\//
      }, {
        token: "string.regexp",
        regex: /[)\]>}^|%][imxouesn]*/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e[0] === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.language.escape");
        }
      }, {
        include: "regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex: [{
        token: "regexp.keyword",
        regex: /\\[wWdDhHsS]/
      }, {
        token: "constant.language.escape",
        regex: /\\[AGbBzZ]/
      }, {
        token: "constant.language.escape",
        regex: /\\g<[a-zA-Z0-9]*>/
      }, {
        token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"],
        regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/
      }, {
        token: ["constant.language.escape", "invalid", "constant.language.escape"],
        regex: /(\\p{\^?)([^/]*)(})/
      }, {
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: /[/][imxouesn]*/,
        next: "start"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "regexp.keyword",
        regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        push: "regex_character_class"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.keyword",
        regex: /\\[wWdDhHsS]/
      }, {
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: /&?&?\[\^?/,
        push: "regex_character_class"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "pop"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        defaultToken: "string.regexp.characterclass"
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, i), t.RubyHighlightRules = d;
}), ace.define("ace/mode/html_ruby_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules", "ace/mode/ruby_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      s = e("./ruby_highlight_rules").RubyHighlightRules,
      o = function o() {
    i.call(this);
    var e = [{
      regex: "<%%|%%>",
      token: "constant.language.escape"
    }, {
      token: "comment.start.erb",
      regex: "<%#",
      push: [{
        token: "comment.end.erb",
        regex: "%>",
        next: "pop",
        defaultToken: "comment"
      }]
    }, {
      token: "support.ruby_tag",
      regex: "<%+(?!>)[-=]?",
      push: "ruby-start"
    }],
        t = [{
      token: "support.ruby_tag",
      regex: "%>",
      next: "pop"
    }, {
      token: "comment",
      regex: "#(?:[^%]|%[^>])*"
    }];

    for (var n in this.$rules) {
      this.$rules[n].unshift.apply(this.$rules[n], e);
    }

    this.embedRules(s, "ruby-", t, ["start"]), this.normalizeRules();
  };

  r.inherits(o, i), t.HtmlRubyHighlightRules = o;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/folding/ruby", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = e("../../token_iterator").TokenIterator,
      u = t.FoldMode = function () {};

  r.inherits(u, i), function () {
    this.indentKeywords = {
      "class": 1,
      def: 1,
      module: 1,
      "do": 1,
      unless: 1,
      "if": 1,
      "while": 1,
      "for": 1,
      until: 1,
      begin: 1,
      "else": 0,
      elsif: 0,
      rescue: 0,
      ensure: 0,
      when: 0,
      end: -1,
      "case": 1,
      "=begin": 1,
      "=end": -1
    }, this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/, this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = this.foldingStartMarker.test(r),
          s = this.foldingStopMarker.test(r);

      if (i && !s) {
        var o = r.match(this.foldingStartMarker);

        if (o[1]) {
          if (o[1] == "if" || o[1] == "else" || o[1] == "while" || o[1] == "until" || o[1] == "unless") {
            if (o[1] == "else" && /^\s*else\s*$/.test(r) === !1) return;
            if (/^\s*(?:if|else|while|until|unless)\s*/.test(r) === !1) return;
          }

          if (o[1] == "when" && /\sthen\s/.test(r) === !0) return;
          if (e.getTokenAt(n, o.index + 2).type === "keyword") return "start";
        } else {
          if (!o[3]) return "start";
          if (e.getTokenAt(n, o.index + 1).type === "comment.multiline") return "start";
        }
      }

      if (t != "markbeginend" || !s || i && s) return "";
      var o = r.match(this.foldingStopMarker);

      if (o[3] === "end") {
        if (e.getTokenAt(n, o.index + 1).type === "keyword") return "end";
      } else {
        if (!o[1]) return "end";
        if (e.getTokenAt(n, o.index + 1).type === "comment.multiline") return "end";
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.doc.getLine(n),
          i = this.foldingStartMarker.exec(r);
      if (i) return i[1] || i[3] ? this.rubyBlock(e, n, i.index + 2) : this.openingBracketBlock(e, "{", n, i.index);
      var i = this.foldingStopMarker.exec(r);
      if (i) return i[3] === "end" && e.getTokenAt(n, i.index + 1).type === "keyword" ? this.rubyBlock(e, n, i.index + 1) : i[1] === "=end" && e.getTokenAt(n, i.index + 1).type === "comment.multiline" ? this.rubyBlock(e, n, i.index + 1) : this.closingBracketBlock(e, "}", n, i.index + i[0].length);
    }, this.rubyBlock = function (e, t, n, r) {
      var i = new o(e, t, n),
          u = i.getCurrentToken();
      if (!u || u.type != "keyword" && u.type != "comment.multiline") return;
      var a = u.value,
          f = e.getLine(t);

      switch (u.value) {
        case "if":
        case "unless":
        case "while":
        case "until":
          var l = new RegExp("^\\s*" + u.value);
          if (!l.test(f)) return;
          var c = this.indentKeywords[a];
          break;

        case "when":
          if (/\sthen\s/.test(f)) return;

        case "elsif":
        case "rescue":
        case "ensure":
          var c = 1;
          break;

        case "else":
          var l = new RegExp("^\\s*" + u.value + "\\s*$");
          if (!l.test(f)) return;
          var c = 1;
          break;

        default:
          var c = this.indentKeywords[a];
      }

      var h = [a];
      if (!c) return;
      var p = c === -1 ? e.getLine(t - 1).length : e.getLine(t).length,
          d = t,
          v = [];
      v.push(i.getCurrentTokenRange()), i.step = c === -1 ? i.stepBackward : i.stepForward;
      if (u.type == "comment.multiline") while (u = i.step()) {
        if (u.type !== "comment.multiline") continue;

        if (c == 1) {
          p = 6;
          if (u.value == "=end") break;
        } else if (u.value == "=begin") break;
      } else while (u = i.step()) {
        var m = !1;
        if (u.type !== "keyword") continue;
        var g = c * this.indentKeywords[u.value];
        f = e.getLine(i.getCurrentTokenRow());

        switch (u.value) {
          case "do":
            for (var y = i.$tokenIndex - 1; y >= 0; y--) {
              var b = i.$rowTokens[y];

              if (b && (b.value == "while" || b.value == "until" || b.value == "for")) {
                g = 0;
                break;
              }
            }

            break;

          case "else":
            var l = new RegExp("^\\s*" + u.value + "\\s*$");
            if (!l.test(f) || a == "case") g = 0, m = !0;
            break;

          case "if":
          case "unless":
          case "while":
          case "until":
            var l = new RegExp("^\\s*" + u.value);
            l.test(f) || (g = 0, m = !0);
            break;

          case "when":
            if (/\sthen\s/.test(f) || a == "case") g = 0, m = !0;
        }

        if (g > 0) h.unshift(u.value);else if (g <= 0 && m === !1) {
          h.shift();

          if (!h.length) {
            if ((a == "while" || a == "until" || a == "for") && u.value != "do") break;
            if (u.value == "do" && c == -1 && g != 0) break;
            if (u.value != "do") break;
          }

          g === 0 && h.unshift(u.value);
        }
      }
      if (!u) return null;
      if (r) return v.push(i.getCurrentTokenRange()), v;
      var t = i.getCurrentTokenRow();

      if (c === -1) {
        if (u.type === "comment.multiline") var w = 6;else var w = e.getLine(t).length;
        return new s(t, w, d - 1, p);
      }

      return new s(d, p, t - 1, e.getLine(t - 1).length);
    };
  }.call(u.prototype);
}), ace.define("ace/mode/ruby", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/ruby_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/ruby"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./ruby_highlight_rules").RubyHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/ruby").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f(), this.indentKeywords = this.foldingRules.indentKeywords;
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[]\s*$/),
            u = t.match(/^\s*(class|def|module)\s.*$/),
            a = t.match(/.*do(\s*|\s+\|.*\|\s*)$/),
            f = t.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);
        if (o || u || a || f) r += n;
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return /^\s+(end|else|rescue|ensure)$/.test(t + n) || this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n);
      if (/}/.test(r)) return this.$outdent.autoOutdent(t, n);
      var i = this.$getIndent(r),
          s = t.getLine(n - 1),
          o = this.$getIndent(s),
          a = t.getTabString();
      o.length <= i.length && i.slice(-a.length) == a && t.remove(new u(n, i.length - a.length, n, i.length));
    }, this.getMatching = function (e, t, n) {
      if (t == undefined) {
        var r = e.selection.lead;
        n = r.column, t = r.row;
      }

      var i = e.getTokenAt(t, n);
      if (i && i.value in this.indentKeywords) return this.foldingRules.rubyBlock(e, t, n, !0);
    }, this.$id = "ace/mode/ruby", this.snippetFileId = "ace/snippets/ruby";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/html_ruby", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_ruby_highlight_rules", "ace/mode/html", "ace/mode/javascript", "ace/mode/css", "ace/mode/ruby"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_ruby_highlight_rules").HtmlRubyHighlightRules,
      s = e("./html").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./ruby").Mode,
      f = function f() {
    s.call(this), this.HighlightRules = i, this.createModeDelegates({
      "js-": o,
      "css-": u,
      "ruby-": a
    });
  };

  r.inherits(f, s), function () {
    this.$id = "ace/mode/html_ruby";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/html_ruby"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-ini.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-ini.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/ini_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = "\\\\(?:[\\\\0abtrn;#=:]|x[a-fA-F\\d]{4})",
      o = function o() {
    this.$rules = {
      start: [{
        token: "punctuation.definition.comment.ini",
        regex: "#.*",
        push_: [{
          token: "comment.line.number-sign.ini",
          regex: "$|^",
          next: "pop"
        }, {
          defaultToken: "comment.line.number-sign.ini"
        }]
      }, {
        token: "punctuation.definition.comment.ini",
        regex: ";.*",
        push_: [{
          token: "comment.line.semicolon.ini",
          regex: "$|^",
          next: "pop"
        }, {
          defaultToken: "comment.line.semicolon.ini"
        }]
      }, {
        token: ["keyword.other.definition.ini", "text", "punctuation.separator.key-value.ini"],
        regex: "\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)"
      }, {
        token: ["punctuation.definition.entity.ini", "constant.section.group-title.ini", "punctuation.definition.entity.ini"],
        regex: "^(\\[)(.*?)(\\])"
      }, {
        token: "punctuation.definition.string.begin.ini",
        regex: "'",
        push: [{
          token: "punctuation.definition.string.end.ini",
          regex: "'",
          next: "pop"
        }, {
          token: "constant.language.escape",
          regex: s
        }, {
          defaultToken: "string.quoted.single.ini"
        }]
      }, {
        token: "punctuation.definition.string.begin.ini",
        regex: '"',
        push: [{
          token: "constant.language.escape",
          regex: s
        }, {
          token: "punctuation.definition.string.end.ini",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.quoted.double.ini"
        }]
      }]
    }, this.normalizeRules();
  };

  o.metaData = {
    fileTypes: ["ini", "conf"],
    keyEquivalent: "^~I",
    name: "Ini",
    scopeName: "source.ini"
  }, r.inherits(o, i), t.IniHighlightRules = o;
}), ace.define("ace/mode/folding/ini", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function () {};

  r.inherits(o, s), function () {
    this.foldingStartMarker = /^\s*\[([^\])]*)]\s*(?:$|[;#])/, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.foldingStartMarker,
          s = e.getLine(n),
          o = s.match(r);
      if (!o) return;
      var u = o[1] + ".",
          a = s.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        s = e.getLine(n);
        if (/^\s*$/.test(s)) continue;
        o = s.match(r);
        if (o && o[1].lastIndexOf(u, 0) !== 0) break;
        c = n;
      }

      if (c > l) {
        var h = e.getLine(c).length;
        return new i(l, a, c, h);
      }
    };
  }.call(o.prototype);
}), ace.define("ace/mode/ini", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/ini_highlight_rules", "ace/mode/folding/ini"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./ini_highlight_rules").IniHighlightRules,
      o = e("./folding/ini").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = ";", this.blockComment = null, this.$id = "ace/mode/ini";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/ini"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-io.js":
/*!***************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-io.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/io_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "keyword.control.io",
        regex: "\\b(?:if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\b"
      }, {
        token: "punctuation.definition.comment.io",
        regex: "/\\*",
        push: [{
          token: "punctuation.definition.comment.io",
          regex: "\\*/",
          next: "pop"
        }, {
          defaultToken: "comment.block.io"
        }]
      }, {
        token: "punctuation.definition.comment.io",
        regex: "//",
        push: [{
          token: "comment.line.double-slash.io",
          regex: "$",
          next: "pop"
        }, {
          defaultToken: "comment.line.double-slash.io"
        }]
      }, {
        token: "punctuation.definition.comment.io",
        regex: "#",
        push: [{
          token: "comment.line.number-sign.io",
          regex: "$",
          next: "pop"
        }, {
          defaultToken: "comment.line.number-sign.io"
        }]
      }, {
        token: "variable.language.io",
        regex: "\\b(?:self|sender|target|proto|protos|parent)\\b",
        comment: "I wonder if some of this isn't variable.other.language? --Allan; scoping this as variable.language to match Objective-C's handling of 'self', which is inconsistent with C++'s handling of 'this' but perhaps intentionally so -- Rob"
      }, {
        token: "keyword.operator.io",
        regex: "<=|>=|=|:=|\\*|\\||\\|\\||\\+|-|/|&|&&|>|<|\\?|@|@@|\\b(?:and|or)\\b"
      }, {
        token: "constant.other.io",
        regex: "\\bGL[\\w_]+\\b"
      }, {
        token: "support.class.io",
        regex: "\\b[A-Z](?:\\w+)?\\b"
      }, {
        token: "support.function.io",
        regex: "\\b(?:clone|call|init|method|list|vector|block|\\w+(?=\\s*\\())\\b"
      }, {
        token: "support.function.open-gl.io",
        regex: "\\bgl(?:u|ut)?[A-Z]\\w+\\b"
      }, {
        token: "punctuation.definition.string.begin.io",
        regex: '"""',
        push: [{
          token: "punctuation.definition.string.end.io",
          regex: '"""',
          next: "pop"
        }, {
          token: "constant.character.escape.io",
          regex: "\\\\."
        }, {
          defaultToken: "string.quoted.triple.io"
        }]
      }, {
        token: "punctuation.definition.string.begin.io",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.io",
          regex: '"',
          next: "pop"
        }, {
          token: "constant.character.escape.io",
          regex: "\\\\."
        }, {
          defaultToken: "string.quoted.double.io"
        }]
      }, {
        token: "constant.numeric.io",
        regex: "\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"
      }, {
        token: "variable.other.global.io",
        regex: "Lobby\\b"
      }, {
        token: "constant.language.io",
        regex: "\\b(?:TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\b"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["io"],
    keyEquivalent: "^~I",
    name: "Io",
    scopeName: "source.io"
  }, r.inherits(s, i), t.IoHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/io", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/io_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./io_highlight_rules").IoHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/io", this.snippetFileId = "ace/snippets/io";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/io"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-jack.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-jack.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/jack_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "string",
        regex: '"',
        next: "string2"
      }, {
        token: "string",
        regex: "'",
        next: "string1"
      }, {
        token: "constant.numeric",
        regex: "-?0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "(?:0|[-+]?[1-9][0-9]*)\\b"
      }, {
        token: "constant.binary",
        regex: "<[0-9A-Fa-f][0-9A-Fa-f](\\s+[0-9A-Fa-f][0-9A-Fa-f])*>"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: "constant.language.null",
        regex: "null\\b"
      }, {
        token: "storage.type",
        regex: "(?:Integer|Boolean|Null|String|Buffer|Tuple|List|Object|Function|Coroutine|Form)\\b"
      }, {
        token: "keyword",
        regex: "(?:return|abort|vars|for|delete|in|is|escape|exec|split|and|if|elif|else|while)\\b"
      }, {
        token: "language.builtin",
        regex: "(?:lines|source|parse|read-stream|interval|substr|parseint|write|print|range|rand|inspect|bind|i-values|i-pairs|i-map|i-filter|i-chunk|i-all\\?|i-any\\?|i-collect|i-zip|i-merge|i-each)\\b"
      }, {
        token: "comment",
        regex: "--.*$"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "storage.form",
        regex: "@[a-z]+"
      }, {
        token: "constant.other.symbol",
        regex: ":+[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?"
      }, {
        token: "variable",
        regex: "[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?"
      }, {
        token: "keyword.operator",
        regex: "\\|\\||\\^\\^|&&|!=|==|<=|<|>=|>|\\+|-|\\*|\\/|\\^|\\%|\\#|\\!"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      string1: [{
        token: "constant.language.escape",
        regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/
      }, {
        token: "string",
        regex: "[^'\\\\]+"
      }, {
        token: "string",
        regex: "'",
        next: "start"
      }, {
        token: "string",
        regex: "",
        next: "start"
      }],
      string2: [{
        token: "constant.language.escape",
        regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/
      }, {
        token: "string",
        regex: '[^"\\\\]+'
      }, {
        token: "string",
        regex: '"',
        next: "start"
      }, {
        token: "string",
        regex: "",
        next: "start"
      }]
    };
  };

  r.inherits(s, i), t.JackHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/jack", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/jack_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./jack_highlight_rules").JackHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "--", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t);

      if (e == "start") {
        var i = t.match(/^.*[\{\(\[]\s*$/);
        i && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/jack";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/jack"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-jade.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-jade.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/markdown_highlight_rules", ["require", "exports", "module", "ace/config", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../config").$modes,
      i = e("../lib/oop"),
      s = e("../lib/lang"),
      o = e("./text_highlight_rules").TextHighlightRules,
      u = e("./html_highlight_rules").HtmlHighlightRules,
      a = function a(e) {
    return "(?:[^" + s.escapeRegExp(e) + "\\\\]|\\\\.)*";
  },
      f = function f() {
    u.call(this);
    var e = {
      token: "support.function",
      regex: /^\s*(```+[^`]*|~~~+[^~]*)$/,
      onMatch: function onMatch(e, t, n, i) {
        var s = e.match(/^(\s*)([`~]+)(.*)/),
            o = /[\w-]+|$/.exec(s[3])[0];
        return r[o] || (o = ""), n.unshift("githubblock", [], [s[1], s[2], o], t), this.token;
      },
      next: "githubblock"
    },
        t = [{
      token: "support.function",
      regex: ".*",
      onMatch: function onMatch(e, t, n, i) {
        var s = n[1],
            o = n[2][0],
            u = n[2][1],
            a = n[2][2],
            f = /^(\s*)(`+|~+)\s*$/.exec(e);
        if (f && f[1].length < o.length + 3 && f[2].length >= u.length && f[2][0] == u[0]) return n.splice(0, 3), this.next = n.shift(), this.token;
        this.next = "";

        if (a && r[a]) {
          var l = r[a].getTokenizer().getLineTokens(e, s.slice(0));
          return n[1] = l.state, l.tokens;
        }

        return this.token;
      }
    }];
    this.$rules.start.unshift({
      token: "empty_line",
      regex: "^$",
      next: "allowBlock"
    }, {
      token: "markup.heading.1",
      regex: "^=+(?=\\s*$)"
    }, {
      token: "markup.heading.2",
      regex: "^\\-+(?=\\s*$)"
    }, {
      token: function token(e) {
        return "markup.heading." + e.length;
      },
      regex: /^#{1,6}(?=\s|$)/,
      next: "header"
    }, e, {
      token: "string.blockquote",
      regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",
      next: "blockquote"
    }, {
      token: "constant",
      regex: "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",
      next: "allowBlock"
    }, {
      token: "markup.list",
      regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
      next: "listblock-start"
    }, {
      include: "basic"
    }), this.addRules({
      basic: [{
        token: "constant.language.escape",
        regex: /\\[\\`*_{}\[\]()#+\-.!]/
      }, {
        token: "support.function",
        regex: "(`+)(.*?[^`])(\\1)"
      }, {
        token: ["text", "constant", "text", "url", "string", "text"],
        regex: '^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'
      }, {
        token: ["text", "string", "text", "constant", "text"],
        regex: "(\\[)(" + a("]") + ")(\\]\\s*\\[)(" + a("]") + ")(\\])"
      }, {
        token: ["text", "string", "text", "markup.underline", "string", "text"],
        regex: "(\\!?\\[)(" + a("]") + ")(\\]\\()" + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + '(\\s*"' + a('"') + '"\\s*)?' + "(\\))"
      }, {
        token: "string.strong",
        regex: "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"
      }, {
        token: "string.emphasis",
        regex: "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"
      }, {
        token: ["text", "url", "text"],
        regex: "(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"
      }],
      allowBlock: [{
        token: "support.function",
        regex: "^ {4}.+",
        next: "allowBlock"
      }, {
        token: "empty_line",
        regex: "^$",
        next: "allowBlock"
      }, {
        token: "empty",
        regex: "",
        next: "start"
      }],
      header: [{
        regex: "$",
        next: "start"
      }, {
        include: "basic"
      }, {
        defaultToken: "heading"
      }],
      "listblock-start": [{
        token: "support.variable",
        regex: /(?:\[[ x]\])?/,
        next: "listblock"
      }],
      listblock: [{
        token: "empty_line",
        regex: "^$",
        next: "start"
      }, {
        token: "markup.list",
        regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
        next: "listblock-start"
      }, {
        include: "basic",
        noEscape: !0
      }, e, {
        defaultToken: "list"
      }],
      blockquote: [{
        token: "empty_line",
        regex: "^\\s*$",
        next: "start"
      }, {
        token: "string.blockquote",
        regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",
        next: "blockquote"
      }, {
        include: "basic",
        noEscape: !0
      }, {
        defaultToken: "string.blockquote"
      }],
      githubblock: t
    }), this.normalizeRules();
  };

  i.inherits(f, o), t.MarkdownHighlightRules = f;
}), ace.define("ace/mode/scss_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/css_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./css_highlight_rules"),
      u = function u() {
    var e = i.arrayToMap(o.supportType.split("|")),
        t = i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unquote".split("|")),
        n = i.arrayToMap(o.supportConstant.split("|")),
        r = i.arrayToMap(o.supportConstantColor.split("|")),
        s = i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),
        u = i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),
        a = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: '["].*\\\\$',
        next: "qqstring"
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "string",
        regex: "['].*\\\\$",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: a + "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: "constant.numeric",
        regex: a
      }, {
        token: ["support.function", "string", "support.function"],
        regex: "(url\\()(.*)(\\))"
      }, {
        token: function token(i) {
          return e.hasOwnProperty(i.toLowerCase()) ? "support.type" : s.hasOwnProperty(i) ? "keyword" : n.hasOwnProperty(i) ? "constant.language" : t.hasOwnProperty(i) ? "support.function" : r.hasOwnProperty(i.toLowerCase()) ? "support.constant.color" : u.hasOwnProperty(i.toLowerCase()) ? "variable.language" : "text";
        },
        regex: "\\-?[@a-z_][@a-z0-9_\\-]*"
      }, {
        token: "variable",
        regex: "[a-z_\\-$][a-z0-9_\\-$]*\\b"
      }, {
        token: "variable.language",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        token: "keyword.operator",
        regex: "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        caseInsensitive: !0
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqstring: [{
        token: "string",
        regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      qstring: [{
        token: "string",
        regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }]
    };
  };

  r.inherits(u, s), t.ScssHighlightRules = u;
}), ace.define("ace/mode/less_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/css_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = e("./css_highlight_rules"),
      o = function o() {
    var e = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|or|and|when|not",
        t = e.split("|"),
        n = s.supportType.split("|"),
        r = this.createKeywordMapper({
      "support.constant": s.supportConstant,
      keyword: e,
      "support.constant.color": s.supportConstantColor,
      "support.constant.fonts": s.supportConstantFonts
    }, "identifier", !0),
        i = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + i + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: "constant.numeric",
        regex: i
      }, {
        token: ["support.function", "paren.lparen", "string", "paren.rparen"],
        regex: "(url)(\\()(.*)(\\))"
      }, {
        token: ["support.function", "paren.lparen"],
        regex: "(:extend|[a-z0-9_\\-]+)(\\()"
      }, {
        token: function token(e) {
          return t.indexOf(e.toLowerCase()) > -1 ? "keyword" : "variable";
        },
        regex: "[@\\$][a-z0-9_\\-@\\$]*\\b"
      }, {
        token: "variable",
        regex: "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"
      }, {
        token: function token(e, t) {
          return n.indexOf(e.toLowerCase()) > -1 ? ["support.type.property", "text"] : ["support.type.unknownProperty", "text"];
        },
        regex: "([a-z0-9-_]+)(\\s*:)"
      }, {
        token: "keyword",
        regex: "&"
      }, {
        token: r,
        regex: "\\-?[@a-z_][@a-z0-9_\\-]*"
      }, {
        token: "variable.language",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: ":[a-z_][a-z0-9-_]*"
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        token: "keyword.operator",
        regex: "<|>|<=|>=|=|!=|-|%|\\+|\\*"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        caseInsensitive: !0
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.normalizeRules();
  };

  r.inherits(o, i), t.LessHighlightRules = o;
}), ace.define("ace/mode/coffee_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function s() {
    var e = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",
        t = "this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes|yield|export|import|default",
        n = "true|false|null|undefined|NaN|Infinity",
        r = "case|const|function|var|void|with|enum|implements|interface|let|package|private|protected|public|static",
        i = "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",
        s = "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",
        o = "window|arguments|prototype|document",
        u = this.createKeywordMapper({
      keyword: t,
      "constant.language": n,
      "invalid.illegal": r,
      "language.support.class": i,
      "language.support.function": s,
      "variable.language": o
    }, "identifier"),
        a = {
      token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"],
      regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source
    },
        f = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;
    this.$rules = {
      start: [{
        token: "constant.numeric",
        regex: "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"
      }, {
        stateName: "qdoc",
        token: "string",
        regex: "'''",
        next: [{
          token: "string",
          regex: "'''",
          next: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "qqdoc",
        token: "string",
        regex: '"""',
        next: [{
          token: "string",
          regex: '"""',
          next: "start"
        }, {
          token: "paren.string",
          regex: "#{",
          push: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "qstring",
        token: "string",
        regex: "'",
        next: [{
          token: "string",
          regex: "'",
          next: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "qqstring",
        token: "string.start",
        regex: '"',
        next: [{
          token: "string.end",
          regex: '"',
          next: "start"
        }, {
          token: "paren.string",
          regex: "#{",
          push: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "js",
        token: "string",
        regex: "`",
        next: [{
          token: "string",
          regex: "`",
          next: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        regex: "[{}]",
        onMatch: function onMatch(e, t, n) {
          this.next = "";
          if (e == "{" && n.length) return n.unshift("start", t), "paren";

          if (e == "}" && n.length) {
            n.shift(), this.next = n.shift() || "";
            if (this.next.indexOf("string") != -1) return "paren.string";
          }

          return "paren";
        }
      }, {
        token: "string.regex",
        regex: "///",
        next: "heregex"
      }, {
        token: "string.regex",
        regex: /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/
      }, {
        token: "comment",
        regex: "###(?!#)",
        next: "comment"
      }, {
        token: "comment",
        regex: "#.*"
      }, {
        token: ["punctuation.operator", "text", "identifier"],
        regex: "(\\.)(\\s*)(" + r + ")"
      }, {
        token: "punctuation.operator",
        regex: "\\.{1,3}"
      }, {
        token: ["keyword", "text", "language.support.class", "text", "keyword", "text", "language.support.class"],
        regex: "(class)(\\s+)(" + e + ")(?:(\\s+)(extends)(\\s+)(" + e + "))?"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text"].concat(a.token),
        regex: "(" + e + ")(\\s*)([=:])(\\s*)" + a.regex
      }, a, {
        token: "variable",
        regex: "@(?:" + e + ")?"
      }, {
        token: u,
        regex: e
      }, {
        token: "punctuation.operator",
        regex: "\\,|\\."
      }, {
        token: "storage.type",
        regex: "[\\-=]>"
      }, {
        token: "keyword.operator",
        regex: "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"
      }, {
        token: "paren.lparen",
        regex: "[({[]"
      }, {
        token: "paren.rparen",
        regex: "[\\]})]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      heregex: [{
        token: "string.regex",
        regex: ".*?///[imgy]{0,4}",
        next: "start"
      }, {
        token: "comment.regex",
        regex: "\\s+(?:#.*)?"
      }, {
        token: "string.regex",
        regex: "\\S+"
      }],
      comment: [{
        token: "comment",
        regex: "###",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.normalizeRules();
  }

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules;
  r.inherits(s, i), t.CoffeeHighlightRules = s;
}), ace.define("ace/mode/jade_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/markdown_highlight_rules", "ace/mode/scss_highlight_rules", "ace/mode/less_highlight_rules", "ace/mode/coffee_highlight_rules", "ace/mode/javascript_highlight_rules"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return {
      token: "entity.name.function.jade",
      regex: "^\\s*\\:" + e,
      next: t + "start"
    };
  }

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = e("./markdown_highlight_rules").MarkdownHighlightRules,
      o = e("./scss_highlight_rules").ScssHighlightRules,
      u = e("./less_highlight_rules").LessHighlightRules,
      a = e("./coffee_highlight_rules").CoffeeHighlightRules,
      f = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      c = function c() {
    var e = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      start: [{
        token: "keyword.control.import.include.jade",
        regex: "\\s*\\binclude\\b"
      }, {
        token: "keyword.other.doctype.jade",
        regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?"
      }, {
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.length - 2, t), "comment";
        },
        regex: /^\s*\/\//,
        next: "comment_block"
      }, l("markdown", "markdown-"), l("sass", "sass-"), l("less", "less-"), l("coffee", "coffee-"), {
        token: ["storage.type.function.jade", "entity.name.function.jade", "punctuation.definition.parameters.begin.jade", "variable.parameter.function.jade", "punctuation.definition.parameters.end.jade"],
        regex: "^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))"
      }, {
        token: ["storage.type.function.jade", "entity.name.function.jade"],
        regex: "^(\\s*mixin)( [\\w\\-]+)"
      }, {
        token: "source.js.embedded.jade",
        regex: "^\\s*(?:-|=|!=)",
        next: "js-start"
      }, {
        token: "string.interpolated.jade",
        regex: "[#!]\\{[^\\}]+\\}"
      }, {
        token: "meta.tag.any.jade",
        regex: /^\s*(?!\w+:)(?:[\w-]+|(?=\.|#)])/,
        next: "tag_single"
      }, {
        token: "suport.type.attribute.id.jade",
        regex: "#\\w+"
      }, {
        token: "suport.type.attribute.class.jade",
        regex: "\\.\\w+"
      }, {
        token: "punctuation",
        regex: "\\s*(?:\\()",
        next: "tag_attributes"
      }],
      comment_block: [{
        regex: /^\s*(?:\/\/)?/,
        onMatch: function onMatch(e, t, n) {
          return e.length <= n[1] ? e.slice(-1) == "/" ? (n[1] = e.length - 2, this.next = "", "comment") : (n.shift(), n.shift(), this.next = n.shift(), "text") : (this.next = "", "comment");
        },
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      tag_single: [{
        token: "entity.other.attribute-name.class.jade",
        regex: "\\.[\\w-]+"
      }, {
        token: "entity.other.attribute-name.id.jade",
        regex: "#[\\w-]+"
      }, {
        token: ["text", "punctuation"],
        regex: "($)|((?!\\.|#|=|-))",
        next: "start"
      }],
      tag_attributes: [{
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: ["entity.other.attribute-name.jade", "punctuation"],
        regex: "([a-zA-Z:\\.-]+)(=)?",
        next: "attribute_strings"
      }, {
        token: "punctuation",
        regex: "\\)",
        next: "start"
      }],
      attribute_strings: [{
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "string",
        regex: "(?=\\S)",
        next: "tag_attributes"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: e
      }, {
        token: "string",
        regex: '[^"\\\\]+'
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "tag_attributes"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: e
      }, {
        token: "string",
        regex: "[^'\\\\]+"
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "tag_attributes"
      }]
    }, this.embedRules(f, "js-", [{
      token: "text",
      regex: ".$",
      next: "start"
    }]);
  };

  r.inherits(c, i), t.JadeHighlightRules = c;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/jade", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/jade_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./jade_highlight_rules").JadeHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.$id = "ace/mode/jade";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/jade"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-java.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-java.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/java_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|var",
        t = "null|Infinity|NaN|undefined",
        n = "AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",
        r = this.createKeywordMapper({
      "variable.language": "this",
      keyword: e,
      "constant.language": t,
      "support.function": n
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/
      }, {
        token: "constant.numeric",
        regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        regex: "(open(?:\\s+))?module(?=\\s*\\w)",
        token: "keyword",
        next: [{
          regex: "{",
          token: "paren.lparen",
          next: [{
            regex: "}",
            token: "paren.rparen",
            next: "start"
          }, {
            regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",
            token: "keyword"
          }]
        }, {
          token: "text",
          regex: "\\s+"
        }, {
          token: "identifier",
          regex: "\\w+"
        }, {
          token: "punctuation.operator",
          regex: "."
        }, {
          token: "text",
          regex: "\\s+"
        }, {
          regex: "",
          next: "start"
        }]
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(o, s), t.JavaHighlightRules = o;
}), ace.define("ace/mode/folding/java", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/cstyle", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./cstyle").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.importRegex = /^import /, this.getCStyleFoldWidget = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      if (t === "markbegin") {
        var r = e.getLine(n);
        if (this.importRegex.test(r)) if (n == 0 || !this.importRegex.test(e.getLine(n - 1))) return "start";
      }

      return this.getCStyleFoldWidget(e, t, n);
    }, this.getCstyleFoldWidgetRange = this.getFoldWidgetRange, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n),
          o = i.match(this.importRegex);
      if (!o || t !== "markbegin") return this.getCstyleFoldWidgetRange(e, t, n, r);
      var u = o[0].length,
          a = e.getLength(),
          f = n,
          l = n;

      while (++n < a) {
        var i = e.getLine(n);
        if (i.match(/^\s*$/)) continue;
        if (!i.match(this.importRegex)) break;
        l = n;
      }

      if (l > f) {
        var c = e.getLine(l).length;
        return new s(f, u, l, c);
      }
    };
  }.call(o.prototype);
}), ace.define("ace/mode/java", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript", "ace/mode/java_highlight_rules", "ace/mode/folding/java"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript").Mode,
      s = e("./java_highlight_rules").JavaHighlightRules,
      o = e("./folding/java").FoldMode,
      u = function u() {
    i.call(this), this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.createWorker = function (e) {
      return null;
    }, this.$id = "ace/mode/java", this.snippetFileId = "ace/snippets/java";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/java"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-javascript.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-javascript.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/javascript"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-json.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-json.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/json_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "variable",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'
      }, {
        token: "string",
        regex: '"',
        next: "string"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: "text",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment.start",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      string: [{
        token: "constant.language.escape",
        regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      comment: [{
        token: "comment.end",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    };
  };

  r.inherits(s, i), t.JsonHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/json", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/json_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./json_highlight_rules").JsonHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = e("../worker/worker_client").WorkerClient,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t);

      if (e == "start") {
        var i = t.match(/^.*[\{\(\[]\s*$/);
        i && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new f(["ace"], "ace/mode/json_worker", "JsonWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/json";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/json"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-json5.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-json5.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/json_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "variable",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'
      }, {
        token: "string",
        regex: '"',
        next: "string"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: "text",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment.start",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      string: [{
        token: "constant.language.escape",
        regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      comment: [{
        token: "comment.end",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    };
  };

  r.inherits(s, i), t.JsonHighlightRules = s;
}), ace.define("ace/mode/json5_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/json_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./json_highlight_rules").JsonHighlightRules,
      s = function s() {
    i.call(this);
    var e = [{
      token: "variable",
      regex: /[a-zA-Z$_\u00a1-\uffff][\w$\u00a1-\uffff]*\s*(?=:)/
    }, {
      token: "variable",
      regex: /['](?:(?:\\.)|(?:[^'\\]))*?[']\s*(?=:)/
    }, {
      token: "constant.language.boolean",
      regex: /(?:null)\b/
    }, {
      token: "string",
      regex: /'/,
      next: [{
        token: "constant.language.escape",
        regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/,
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: /'|$/,
        next: "start"
      }, {
        defaultToken: "string"
      }]
    }, {
      token: "string",
      regex: /"(?![^"]*":)/,
      next: [{
        token: "constant.language.escape",
        regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/,
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: /"|$/,
        next: "start"
      }, {
        defaultToken: "string"
      }]
    }, {
      token: "constant.numeric",
      regex: /[+-]?(?:Infinity|NaN)\b/
    }];

    for (var t in this.$rules) {
      this.$rules[t].unshift.apply(this.$rules[t], e);
    }

    this.normalizeRules();
  };

  r.inherits(s, i), t.Json5HighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/json5", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/json5_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./json5_highlight_rules").Json5HighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/json5";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/json5"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-jsoniq.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-jsoniq.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/xquery/jsoniq_lexer", ["require", "exports", "module"], function (e, t, n) {
  n.exports = function r(t, n, i) {
    function o(u, a) {
      if (!n[u]) {
        if (!t[u]) {
          var f = typeof e == "function" && e;
          if (!a && f) return f(u, !0);
          if (s) return s(u, !0);
          var l = new Error("Cannot find module '" + u + "'");
          throw l.code = "MODULE_NOT_FOUND", l;
        }

        var c = n[u] = {
          exports: {}
        };
        t[u][0].call(c.exports, function (e) {
          var n = t[u][1][e];
          return o(n ? n : e);
        }, c, c.exports, r, t, n, i);
      }

      return n[u].exports;
    }

    var s = typeof e == "function" && e;

    for (var u = 0; u < i.length; u++) {
      o(i[u]);
    }

    return o(i[0]);
  }({
    "/node_modules/xqlint/lib/lexers/JSONiqTokenizer.js": [function (e, t, n) {
      var r = n.JSONiqTokenizer = function i(e, t) {
        function r(e, t) {
          E = t, S = e, x = e.length, s(0, 0, 0);
        }

        function s(e, t, n) {
          m = t, g = t, y = e, b = t, w = n, N = n, E.reset(S);
        }

        function o() {
          E.startNonterminal("EQName", g);

          switch (y) {
            case 80:
              f(80);
              break;

            case 94:
              f(94);
              break;

            case 118:
              f(118);
              break;

            case 119:
              f(119);
              break;

            case 122:
              f(122);
              break;

            case 143:
              f(143);
              break;

            case 150:
              f(150);
              break;

            case 163:
              f(163);
              break;

            case 183:
              f(183);
              break;

            case 189:
              f(189);
              break;

            case 214:
              f(214);
              break;

            case 224:
              f(224);
              break;

            case 225:
              f(225);
              break;

            case 241:
              f(241);
              break;

            case 242:
              f(242);
              break;

            case 251:
              f(251);
              break;

            default:
              u();
          }

          E.endNonterminal("EQName", g);
        }

        function u() {
          E.startNonterminal("FunctionName", g);

          switch (y) {
            case 17:
              f(17);
              break;

            case 68:
              f(68);
              break;

            case 71:
              f(71);
              break;

            case 72:
              f(72);
              break;

            case 73:
              f(73);
              break;

            case 77:
              f(77);
              break;

            case 78:
              f(78);
              break;

            case 82:
              f(82);
              break;

            case 86:
              f(86);
              break;

            case 87:
              f(87);
              break;

            case 88:
              f(88);
              break;

            case 91:
              f(91);
              break;

            case 92:
              f(92);
              break;

            case 101:
              f(101);
              break;

            case 103:
              f(103);
              break;

            case 106:
              f(106);
              break;

            case 107:
              f(107);
              break;

            case 108:
              f(108);
              break;

            case 109:
              f(109);
              break;

            case 110:
              f(110);
              break;

            case 111:
              f(111);
              break;

            case 116:
              f(116);
              break;

            case 117:
              f(117);
              break;

            case 120:
              f(120);
              break;

            case 121:
              f(121);
              break;

            case 124:
              f(124);
              break;

            case 126:
              f(126);
              break;

            case 127:
              f(127);
              break;

            case 129:
              f(129);
              break;

            case 132:
              f(132);
              break;

            case 133:
              f(133);
              break;

            case 134:
              f(134);
              break;

            case 135:
              f(135);
              break;

            case 144:
              f(144);
              break;

            case 146:
              f(146);
              break;

            case 148:
              f(148);
              break;

            case 149:
              f(149);
              break;

            case 151:
              f(151);
              break;

            case 157:
              f(157);
              break;

            case 158:
              f(158);
              break;

            case 160:
              f(160);
              break;

            case 161:
              f(161);
              break;

            case 162:
              f(162);
              break;

            case 168:
              f(168);
              break;

            case 170:
              f(170);
              break;

            case 172:
              f(172);
              break;

            case 176:
              f(176);
              break;

            case 178:
              f(178);
              break;

            case 179:
              f(179);
              break;

            case 180:
              f(180);
              break;

            case 182:
              f(182);
              break;

            case 184:
              f(184);
              break;

            case 196:
              f(196);
              break;

            case 198:
              f(198);
              break;

            case 199:
              f(199);
              break;

            case 200:
              f(200);
              break;

            case 204:
              f(204);
              break;

            case 210:
              f(210);
              break;

            case 211:
              f(211);
              break;

            case 216:
              f(216);
              break;

            case 217:
              f(217);
              break;

            case 218:
              f(218);
              break;

            case 222:
              f(222);
              break;

            case 227:
              f(227);
              break;

            case 233:
              f(233);
              break;

            case 234:
              f(234);
              break;

            case 235:
              f(235);
              break;

            case 246:
              f(246);
              break;

            case 247:
              f(247);
              break;

            case 248:
              f(248);
              break;

            case 252:
              f(252);
              break;

            case 254:
              f(254);
              break;

            case 258:
              f(258);
              break;

            case 264:
              f(264);
              break;

            case 268:
              f(268);
              break;

            case 272:
              f(272);
              break;

            case 70:
              f(70);
              break;

            case 79:
              f(79);
              break;

            case 81:
              f(81);
              break;

            case 83:
              f(83);
              break;

            case 84:
              f(84);
              break;

            case 89:
              f(89);
              break;

            case 96:
              f(96);
              break;

            case 99:
              f(99);
              break;

            case 100:
              f(100);
              break;

            case 102:
              f(102);
              break;

            case 104:
              f(104);
              break;

            case 123:
              f(123);
              break;

            case 130:
              f(130);
              break;

            case 131:
              f(131);
              break;

            case 139:
              f(139);
              break;

            case 152:
              f(152);
              break;

            case 153:
              f(153);
              break;

            case 159:
              f(159);
              break;

            case 169:
              f(169);
              break;

            case 190:
              f(190);
              break;

            case 197:
              f(197);
              break;

            case 201:
              f(201);
              break;

            case 220:
              f(220);
              break;

            case 223:
              f(223);
              break;

            case 226:
              f(226);
              break;

            case 232:
              f(232);
              break;

            case 238:
              f(238);
              break;

            case 249:
              f(249);
              break;

            case 250:
              f(250);
              break;

            case 255:
              f(255);
              break;

            case 259:
              f(259);
              break;

            case 260:
              f(260);
              break;

            case 261:
              f(261);
              break;

            case 265:
              f(265);
              break;

            case 95:
              f(95);
              break;

            case 174:
              f(174);
              break;

            default:
              f(219);
          }

          E.endNonterminal("FunctionName", g);
        }

        function a() {
          E.startNonterminal("NCName", g);

          switch (y) {
            case 28:
              f(28);
              break;

            case 68:
              f(68);
              break;

            case 73:
              f(73);
              break;

            case 77:
              f(77);
              break;

            case 78:
              f(78);
              break;

            case 82:
              f(82);
              break;

            case 86:
              f(86);
              break;

            case 87:
              f(87);
              break;

            case 88:
              f(88);
              break;

            case 92:
              f(92);
              break;

            case 103:
              f(103);
              break;

            case 107:
              f(107);
              break;

            case 111:
              f(111);
              break;

            case 116:
              f(116);
              break;

            case 120:
              f(120);
              break;

            case 121:
              f(121);
              break;

            case 124:
              f(124);
              break;

            case 126:
              f(126);
              break;

            case 129:
              f(129);
              break;

            case 135:
              f(135);
              break;

            case 144:
              f(144);
              break;

            case 146:
              f(146);
              break;

            case 148:
              f(148);
              break;

            case 149:
              f(149);
              break;

            case 158:
              f(158);
              break;

            case 160:
              f(160);
              break;

            case 161:
              f(161);
              break;

            case 162:
              f(162);
              break;

            case 170:
              f(170);
              break;

            case 172:
              f(172);
              break;

            case 176:
              f(176);
              break;

            case 178:
              f(178);
              break;

            case 179:
              f(179);
              break;

            case 184:
              f(184);
              break;

            case 196:
              f(196);
              break;

            case 198:
              f(198);
              break;

            case 199:
              f(199);
              break;

            case 218:
              f(218);
              break;

            case 222:
              f(222);
              break;

            case 234:
              f(234);
              break;

            case 235:
              f(235);
              break;

            case 246:
              f(246);
              break;

            case 247:
              f(247);
              break;

            case 252:
              f(252);
              break;

            case 264:
              f(264);
              break;

            case 268:
              f(268);
              break;

            case 71:
              f(71);
              break;

            case 72:
              f(72);
              break;

            case 80:
              f(80);
              break;

            case 91:
              f(91);
              break;

            case 94:
              f(94);
              break;

            case 101:
              f(101);
              break;

            case 106:
              f(106);
              break;

            case 108:
              f(108);
              break;

            case 109:
              f(109);
              break;

            case 110:
              f(110);
              break;

            case 117:
              f(117);
              break;

            case 118:
              f(118);
              break;

            case 119:
              f(119);
              break;

            case 122:
              f(122);
              break;

            case 127:
              f(127);
              break;

            case 132:
              f(132);
              break;

            case 133:
              f(133);
              break;

            case 134:
              f(134);
              break;

            case 143:
              f(143);
              break;

            case 150:
              f(150);
              break;

            case 151:
              f(151);
              break;

            case 157:
              f(157);
              break;

            case 163:
              f(163);
              break;

            case 168:
              f(168);
              break;

            case 180:
              f(180);
              break;

            case 182:
              f(182);
              break;

            case 183:
              f(183);
              break;

            case 189:
              f(189);
              break;

            case 200:
              f(200);
              break;

            case 204:
              f(204);
              break;

            case 210:
              f(210);
              break;

            case 211:
              f(211);
              break;

            case 214:
              f(214);
              break;

            case 216:
              f(216);
              break;

            case 217:
              f(217);
              break;

            case 224:
              f(224);
              break;

            case 225:
              f(225);
              break;

            case 227:
              f(227);
              break;

            case 233:
              f(233);
              break;

            case 241:
              f(241);
              break;

            case 242:
              f(242);
              break;

            case 248:
              f(248);
              break;

            case 251:
              f(251);
              break;

            case 254:
              f(254);
              break;

            case 258:
              f(258);
              break;

            case 260:
              f(260);
              break;

            case 272:
              f(272);
              break;

            case 70:
              f(70);
              break;

            case 79:
              f(79);
              break;

            case 81:
              f(81);
              break;

            case 83:
              f(83);
              break;

            case 84:
              f(84);
              break;

            case 89:
              f(89);
              break;

            case 96:
              f(96);
              break;

            case 99:
              f(99);
              break;

            case 100:
              f(100);
              break;

            case 102:
              f(102);
              break;

            case 104:
              f(104);
              break;

            case 123:
              f(123);
              break;

            case 130:
              f(130);
              break;

            case 131:
              f(131);
              break;

            case 139:
              f(139);
              break;

            case 152:
              f(152);
              break;

            case 153:
              f(153);
              break;

            case 159:
              f(159);
              break;

            case 169:
              f(169);
              break;

            case 190:
              f(190);
              break;

            case 197:
              f(197);
              break;

            case 201:
              f(201);
              break;

            case 220:
              f(220);
              break;

            case 223:
              f(223);
              break;

            case 226:
              f(226);
              break;

            case 232:
              f(232);
              break;

            case 238:
              f(238);
              break;

            case 249:
              f(249);
              break;

            case 250:
              f(250);
              break;

            case 255:
              f(255);
              break;

            case 259:
              f(259);
              break;

            case 261:
              f(261);
              break;

            case 265:
              f(265);
              break;

            case 95:
              f(95);
              break;

            case 174:
              f(174);
              break;

            default:
              f(219);
          }

          E.endNonterminal("NCName", g);
        }

        function f(e) {
          y == e ? (l(), E.terminal(i.TOKEN[y], b, w > x ? x : w), m = b, g = w, y = 0) : d(b, w, 0, y, e);
        }

        function l() {
          g != b && (m = g, g = b, E.whitespace(m, g));
        }

        function c(e) {
          var t;

          for (;;) {
            t = C(e);
            if (t != 30) break;
          }

          return t;
        }

        function h(e) {
          y == 0 && (y = c(e), b = T, w = N);
        }

        function p(e) {
          y == 0 && (y = C(e), b = T, w = N);
        }

        function d(e, t, r, i, s) {
          throw new n.ParseException(e, t, r, i, s);
        }

        function C(e) {
          var t = !1;
          T = N;
          var n = N,
              r = i.INITIAL[e],
              s = 0;

          for (var o = r & 4095; o != 0;) {
            var u,
                a = n < x ? S.charCodeAt(n) : 0;
            ++n;
            if (a < 128) u = i.MAP0[a];else if (a < 55296) {
              var f = a >> 4;
              u = i.MAP1[(a & 15) + i.MAP1[(f & 31) + i.MAP1[f >> 5]]];
            } else {
              if (a < 56320) {
                var f = n < x ? S.charCodeAt(n) : 0;
                f >= 56320 && f < 57344 && (++n, a = ((a & 1023) << 10) + (f & 1023) + 65536, t = !0);
              }

              var l = 0,
                  c = 5;

              for (var h = 3;; h = c + l >> 1) {
                if (i.MAP2[h] > a) c = h - 1;else {
                  if (!(i.MAP2[6 + h] < a)) {
                    u = i.MAP2[12 + h];
                    break;
                  }

                  l = h + 1;
                }

                if (l > c) {
                  u = 0;
                  break;
                }
              }
            }
            s = o;
            var p = (u << 12) + o - 1;
            o = i.TRANSITION[(p & 15) + i.TRANSITION[p >> 4]], o > 4095 && (r = o, o &= 4095, N = n);
          }

          r >>= 12;

          if (r == 0) {
            N = n - 1;
            var f = N < x ? S.charCodeAt(N) : 0;
            return f >= 56320 && f < 57344 && --N, d(T, N, s, -1, -1);
          }

          if (t) for (var v = r >> 9; v > 0; --v) {
            --N;
            var f = N < x ? S.charCodeAt(N) : 0;
            f >= 56320 && f < 57344 && --N;
          } else N -= r >> 9;
          return (r & 511) - 1;
        }

        r(e, t);
        var n = this;
        this.ParseException = function (e, t, n, r, i) {
          var s = e,
              o = t,
              u = n,
              a = r,
              f = i;
          this.getBegin = function () {
            return s;
          }, this.getEnd = function () {
            return o;
          }, this.getState = function () {
            return u;
          }, this.getExpected = function () {
            return f;
          }, this.getOffending = function () {
            return a;
          }, this.getMessage = function () {
            return a < 0 ? "lexical analysis failed" : "syntax error";
          };
        }, this.getInput = function () {
          return S;
        }, this.getOffendingToken = function (e) {
          var t = e.getOffending();
          return t >= 0 ? i.TOKEN[t] : null;
        }, this.getExpectedTokenSet = function (e) {
          var t;
          return e.getExpected() < 0 ? t = i.getTokenSet(-e.getState()) : t = [i.TOKEN[e.getExpected()]], t;
        }, this.getErrorMessage = function (e) {
          var t = this.getExpectedTokenSet(e),
              n = this.getOffendingToken(e),
              r = S.substring(0, e.getBegin()),
              i = r.split("\n"),
              s = i.length,
              o = i[s - 1].length + 1,
              u = e.getEnd() - e.getBegin();
          return e.getMessage() + (n == null ? "" : ", found " + n) + "\nwhile expecting " + (t.length == 1 ? t[0] : "[" + t.join(", ") + "]") + "\n" + (u == 0 || n != null ? "" : "after successfully scanning " + u + " characters beginning ") + "at line " + s + ", column " + o + ":\n..." + S.substring(e.getBegin(), Math.min(S.length, e.getBegin() + 64)) + "...";
        }, this.parse_start = function () {
          E.startNonterminal("start", g), h(14);

          switch (y) {
            case 58:
              f(58);
              break;

            case 57:
              f(57);
              break;

            case 59:
              f(59);
              break;

            case 43:
              f(43);
              break;

            case 45:
              f(45);
              break;

            case 44:
              f(44);
              break;

            case 37:
              f(37);
              break;

            case 41:
              f(41);
              break;

            case 277:
              f(277);
              break;

            case 274:
              f(274);
              break;

            case 42:
              f(42);
              break;

            case 46:
              f(46);
              break;

            case 52:
              f(52);
              break;

            case 65:
              f(65);
              break;

            case 66:
              f(66);
              break;

            case 49:
              f(49);
              break;

            case 51:
              f(51);
              break;

            case 56:
              f(56);
              break;

            case 54:
              f(54);
              break;

            case 36:
              f(36);
              break;

            case 276:
              f(276);
              break;

            case 40:
              f(40);
              break;

            case 5:
              f(5);
              break;

            case 4:
              f(4);
              break;

            case 6:
              f(6);
              break;

            case 15:
              f(15);
              break;

            case 16:
              f(16);
              break;

            case 18:
              f(18);
              break;

            case 19:
              f(19);
              break;

            case 20:
              f(20);
              break;

            case 8:
              f(8);
              break;

            case 9:
              f(9);
              break;

            case 7:
              f(7);
              break;

            case 35:
              f(35);
              break;

            default:
              o();
          }

          E.endNonterminal("start", g);
        }, this.parse_StartTag = function () {
          E.startNonterminal("StartTag", g), h(8);

          switch (y) {
            case 61:
              f(61);
              break;

            case 53:
              f(53);
              break;

            case 29:
              f(29);
              break;

            case 60:
              f(60);
              break;

            case 37:
              f(37);
              break;

            case 41:
              f(41);
              break;

            default:
              f(35);
          }

          E.endNonterminal("StartTag", g);
        }, this.parse_TagContent = function () {
          E.startNonterminal("TagContent", g), p(11);

          switch (y) {
            case 25:
              f(25);
              break;

            case 9:
              f(9);
              break;

            case 10:
              f(10);
              break;

            case 58:
              f(58);
              break;

            case 57:
              f(57);
              break;

            case 21:
              f(21);
              break;

            case 31:
              f(31);
              break;

            case 275:
              f(275);
              break;

            case 278:
              f(278);
              break;

            case 274:
              f(274);
              break;

            default:
              f(35);
          }

          E.endNonterminal("TagContent", g);
        }, this.parse_AposAttr = function () {
          E.startNonterminal("AposAttr", g), p(10);

          switch (y) {
            case 23:
              f(23);
              break;

            case 27:
              f(27);
              break;

            case 21:
              f(21);
              break;

            case 31:
              f(31);
              break;

            case 275:
              f(275);
              break;

            case 278:
              f(278);
              break;

            case 274:
              f(274);
              break;

            case 41:
              f(41);
              break;

            default:
              f(35);
          }

          E.endNonterminal("AposAttr", g);
        }, this.parse_QuotAttr = function () {
          E.startNonterminal("QuotAttr", g), p(9);

          switch (y) {
            case 22:
              f(22);
              break;

            case 26:
              f(26);
              break;

            case 21:
              f(21);
              break;

            case 31:
              f(31);
              break;

            case 275:
              f(275);
              break;

            case 278:
              f(278);
              break;

            case 274:
              f(274);
              break;

            case 37:
              f(37);
              break;

            default:
              f(35);
          }

          E.endNonterminal("QuotAttr", g);
        }, this.parse_CData = function () {
          E.startNonterminal("CData", g), p(1);

          switch (y) {
            case 14:
              f(14);
              break;

            case 67:
              f(67);
              break;

            default:
              f(35);
          }

          E.endNonterminal("CData", g);
        }, this.parse_XMLComment = function () {
          E.startNonterminal("XMLComment", g), p(0);

          switch (y) {
            case 12:
              f(12);
              break;

            case 50:
              f(50);
              break;

            default:
              f(35);
          }

          E.endNonterminal("XMLComment", g);
        }, this.parse_PI = function () {
          E.startNonterminal("PI", g), p(3);

          switch (y) {
            case 13:
              f(13);
              break;

            case 62:
              f(62);
              break;

            case 63:
              f(63);
              break;

            default:
              f(35);
          }

          E.endNonterminal("PI", g);
        }, this.parse_Pragma = function () {
          E.startNonterminal("Pragma", g), p(2);

          switch (y) {
            case 11:
              f(11);
              break;

            case 38:
              f(38);
              break;

            case 39:
              f(39);
              break;

            default:
              f(35);
          }

          E.endNonterminal("Pragma", g);
        }, this.parse_Comment = function () {
          E.startNonterminal("Comment", g), p(4);

          switch (y) {
            case 55:
              f(55);
              break;

            case 44:
              f(44);
              break;

            case 32:
              f(32);
              break;

            default:
              f(35);
          }

          E.endNonterminal("Comment", g);
        }, this.parse_CommentDoc = function () {
          E.startNonterminal("CommentDoc", g), p(6);

          switch (y) {
            case 33:
              f(33);
              break;

            case 34:
              f(34);
              break;

            case 55:
              f(55);
              break;

            case 44:
              f(44);
              break;

            default:
              f(35);
          }

          E.endNonterminal("CommentDoc", g);
        }, this.parse_QuotString = function () {
          E.startNonterminal("QuotString", g), p(5);

          switch (y) {
            case 3:
              f(3);
              break;

            case 2:
              f(2);
              break;

            case 1:
              f(1);
              break;

            case 37:
              f(37);
              break;

            default:
              f(35);
          }

          E.endNonterminal("QuotString", g);
        }, this.parse_AposString = function () {
          E.startNonterminal("AposString", g), p(7);

          switch (y) {
            case 21:
              f(21);
              break;

            case 31:
              f(31);
              break;

            case 23:
              f(23);
              break;

            case 24:
              f(24);
              break;

            case 41:
              f(41);
              break;

            default:
              f(35);
          }

          E.endNonterminal("AposString", g);
        }, this.parse_Prefix = function () {
          E.startNonterminal("Prefix", g), h(13), l(), a(), E.endNonterminal("Prefix", g);
        }, this.parse__EQName = function () {
          E.startNonterminal("_EQName", g), h(12), l(), o(), E.endNonterminal("_EQName", g);
        };
        var v, m, g, y, b, w, E, S, x, T, N;
      };

      r.getTokenSet = function (e) {
        var t = [],
            n = e < 0 ? -e : INITIAL[e] & 4095;

        for (var i = 0; i < 279; i += 32) {
          var s = i,
              o = (i >> 5) * 2066 + n - 1,
              u = o >> 2,
              a = u >> 2,
              f = r.EXPECTED[(o & 3) + r.EXPECTED[(u & 3) + r.EXPECTED[(a & 3) + r.EXPECTED[a >> 2]]]];

          for (; f != 0; f >>>= 1, ++s) {
            (f & 1) != 0 && t.push(r.TOKEN[s]);
          }
        }

        return t;
      }, r.MAP0 = [67, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 37, 31, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 31, 62, 63, 64, 65, 37], r.MAP1 = [108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 67, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 37, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 37, 31, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 31, 62, 63, 64, 65, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 31, 31, 37, 37, 37, 37, 37, 37, 37, 66, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66], r.MAP2 = [57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 37, 31, 37, 31, 31, 37], r.INITIAL = [1, 2, 49155, 57348, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], r.TRANSITION = [19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 17408, 19288, 17439, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22126, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17672, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19469, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 36919, 18234, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18419, 18432, 18304, 18448, 18485, 18523, 18553, 18583, 18599, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 18825, 18841, 18871, 18906, 18944, 18960, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19074, 36169, 17439, 36866, 17466, 36890, 36866, 22314, 19105, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22126, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17672, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19469, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 36919, 18234, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18419, 18432, 18304, 18448, 18485, 18523, 18553, 18583, 18599, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 18825, 18841, 18871, 18906, 18944, 18960, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22182, 19288, 19121, 36866, 17466, 18345, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19273, 19552, 19304, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19332, 17423, 19363, 36866, 17466, 17537, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 18614, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 19391, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 19427, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36154, 19288, 19457, 36866, 17466, 17740, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22780, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22375, 22197, 18469, 36866, 17466, 36890, 36866, 21991, 24018, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 21331, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 19485, 19501, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19537, 22390, 19568, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19596, 19611, 19457, 36866, 17466, 36890, 36866, 18246, 19627, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22242, 20553, 19457, 36866, 17466, 36890, 36866, 18648, 30477, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36472, 19288, 19457, 36866, 17466, 17809, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 21770, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 19643, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 19672, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 20538, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 17975, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22345, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19726, 19742, 21529, 24035, 23112, 26225, 23511, 27749, 27397, 24035, 34360, 24035, 24036, 23114, 35166, 23114, 23114, 19758, 23511, 35247, 23511, 23511, 28447, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 19821, 23511, 23511, 23511, 23511, 23512, 19441, 36539, 24035, 24035, 24035, 24035, 19846, 19869, 23114, 23114, 23114, 28618, 32187, 19892, 23511, 23511, 23511, 34585, 20402, 36647, 24035, 24035, 24036, 23114, 33757, 23114, 23114, 23029, 20271, 23511, 27070, 23511, 23511, 30562, 24035, 24035, 29274, 26576, 23114, 23114, 31118, 23036, 29695, 23511, 23511, 32431, 23634, 30821, 24035, 23110, 19913, 23114, 23467, 31261, 23261, 34299, 19932, 24035, 32609, 19965, 35389, 19984, 27689, 19830, 29391, 29337, 20041, 22643, 35619, 33728, 20062, 20121, 20166, 35100, 26145, 20211, 23008, 19876, 20208, 20227, 25670, 20132, 26578, 27685, 20141, 20243, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36094, 19288, 19457, 36866, 17466, 21724, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22735, 19552, 20287, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22750, 19288, 21529, 24035, 23112, 28056, 23511, 29483, 28756, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 20327, 23511, 23511, 23511, 23511, 31156, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 20371, 23511, 23511, 23511, 23511, 27443, 20395, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 29457, 29700, 23511, 23511, 23511, 23511, 33444, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 28350, 20421, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 20447, 20475, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 20523, 22257, 20569, 20783, 21715, 17603, 20699, 20837, 20614, 20630, 21149, 20670, 21405, 17486, 17509, 17525, 18373, 19179, 20695, 20716, 20732, 20755, 19194, 18042, 21641, 20592, 20779, 20598, 21412, 17470, 17591, 20896, 17468, 17619, 20799, 20700, 21031, 20744, 20699, 20828, 18075, 21259, 20581, 20853, 18048, 20868, 20884, 17756, 17784, 17800, 17825, 17854, 21171, 21200, 20931, 20947, 21378, 20955, 20971, 18086, 20645, 21002, 20986, 18178, 17960, 18012, 18381, 18064, 29176, 21044, 21438, 21018, 21122, 21393, 21060, 21844, 21094, 20654, 17493, 18150, 18166, 18214, 25967, 20763, 21799, 21110, 21830, 21138, 21246, 21301, 18336, 18361, 21165, 21187, 20812, 21216, 21232, 21287, 21317, 18553, 21347, 21363, 21428, 21454, 21271, 21483, 21499, 21515, 21575, 21467, 18712, 21591, 21633, 21078, 18189, 18198, 20679, 21657, 21701, 21074, 21687, 21740, 21756, 21786, 21815, 21860, 21876, 21892, 21946, 21962, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36457, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 36813, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 21981, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 22151, 22007, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 27898, 17884, 18890, 17906, 17928, 22042, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 22070, 22112, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 22142, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36109, 19288, 18469, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22167, 19288, 19457, 36866, 17466, 17768, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22227, 36487, 22273, 36866, 17466, 36890, 36866, 19316, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18749, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 22304, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19580, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22330, 19089, 19457, 36866, 17466, 18721, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22765, 19347, 19457, 36866, 17466, 36890, 36866, 18114, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34541, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 22540, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29908, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22561, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 23837, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22584, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36442, 19288, 21605, 24035, 23112, 28137, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 31568, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22690, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 27584, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 22659, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22360, 19552, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22675, 22811, 19457, 36866, 17466, 36890, 36866, 19133, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22827, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36064, 19288, 22865, 22881, 32031, 22897, 22913, 22956, 29939, 24035, 24035, 24035, 23003, 23114, 23114, 23114, 23024, 22420, 23511, 23511, 23511, 23052, 29116, 23073, 29268, 24035, 25563, 26915, 23106, 23131, 23114, 23114, 23159, 23181, 23197, 23248, 23511, 23511, 23282, 23305, 22493, 32364, 24035, 33472, 30138, 26325, 31770, 33508, 27345, 33667, 23114, 23321, 23473, 23351, 35793, 36576, 23511, 23375, 22500, 24145, 24035, 29197, 20192, 24533, 23440, 23114, 19017, 23459, 22839, 23489, 23510, 23511, 33563, 23528, 32076, 25389, 24035, 26576, 23561, 23583, 23114, 32683, 22516, 23622, 23655, 23511, 23634, 35456, 37144, 23110, 23683, 34153, 20499, 32513, 25824, 23705, 24035, 24035, 23111, 23114, 19874, 27078, 33263, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 20507, 32241, 20150, 31862, 27464, 35108, 23727, 23007, 35895, 34953, 26578, 27685, 20141, 24569, 31691, 19787, 33967, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36427, 19552, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 27027, 26576, 23114, 23114, 23114, 31471, 23756, 22468, 23511, 23511, 23511, 34687, 23772, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 23788, 24035, 24035, 24035, 21559, 23828, 23114, 23114, 23114, 25086, 22839, 23853, 23511, 23511, 23511, 23876, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 31761, 23909, 23953, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36049, 19288, 21605, 30825, 23112, 23987, 23511, 24003, 31001, 27617, 24034, 24035, 24036, 24052, 24089, 23114, 23114, 22420, 24109, 24168, 23511, 23511, 29116, 24188, 27609, 20017, 29516, 24035, 26576, 24222, 19968, 23114, 24252, 33811, 22468, 24270, 33587, 23511, 24320, 27443, 22493, 24035, 24035, 24035, 24035, 24339, 23113, 23114, 23114, 23114, 28128, 28618, 29700, 23511, 23511, 23511, 28276, 34564, 20402, 24035, 24035, 32929, 24036, 23114, 23114, 23114, 24357, 23029, 22839, 23511, 23511, 23511, 24377, 25645, 24035, 34112, 24035, 26576, 23114, 26643, 23114, 32683, 22516, 23511, 25638, 23511, 23711, 24035, 24395, 27809, 23114, 24414, 20499, 24432, 30917, 23628, 24035, 30680, 23111, 23114, 30233, 27078, 25748, 24452, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 24475, 19829, 26577, 26597, 26154, 24519, 24556, 24596, 23007, 20046, 20132, 26578, 24634, 20141, 24569, 31691, 24679, 24727, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36412, 19288, 21605, 19943, 34861, 32618, 26027, 29483, 32016, 32050, 36233, 24776, 35574, 24801, 24819, 32671, 31289, 22420, 24868, 24886, 20087, 26849, 29116, 19803, 24035, 24035, 24035, 36228, 26576, 23114, 23114, 23114, 24981, 33811, 22468, 23511, 23511, 23511, 29028, 27443, 22493, 24923, 27965, 24035, 24035, 32797, 24946, 23443, 23114, 23114, 29636, 24997, 22849, 28252, 23511, 23511, 23511, 25042, 25110, 24035, 24035, 34085, 24036, 25133, 23114, 23114, 25152, 23029, 22839, 25169, 23511, 36764, 23511, 25645, 30403, 24035, 25186, 26576, 31806, 24093, 25212, 32683, 22516, 32713, 26245, 34293, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 32406, 23111, 23114, 28676, 30944, 27689, 25234, 24035, 23112, 19872, 37063, 23266, 24036, 23114, 30243, 20379, 26100, 29218, 20211, 30105, 25257, 25284, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 24834, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36034, 19288, 21671, 25314, 25072, 25330, 25346, 25362, 29939, 29951, 35288, 29984, 23812, 27216, 25405, 25424, 30456, 22584, 26292, 25461, 25480, 31592, 29116, 25516, 34963, 25545, 27007, 25579, 33937, 25614, 25661, 25686, 34872, 25702, 25718, 25734, 25769, 25795, 25811, 25840, 22493, 26533, 25856, 24035, 25876, 30763, 27481, 25909, 23114, 28987, 25936, 25954, 29700, 25983, 23511, 31412, 26043, 26063, 22568, 29241, 29592, 26116, 31216, 35383, 26170, 34783, 26194, 26221, 22839, 26241, 26261, 22477, 26283, 26308, 27306, 31035, 24655, 26576, 29854, 33386, 26341, 32683, 22516, 32153, 30926, 26361, 19996, 26381, 35463, 26397, 26424, 34646, 26478, 35605, 31386, 26494, 35567, 31964, 22940, 23689, 25218, 30309, 32289, 19830, 33605, 23112, 32109, 27733, 27084, 24496, 35886, 35221, 26525, 36602, 26549, 26558, 26574, 26594, 26613, 26629, 26666, 26700, 26578, 27685, 23740, 24285, 31691, 26733, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36397, 19552, 18991, 25887, 28117, 32618, 26776, 29483, 29939, 26802, 24035, 24035, 24036, 28664, 23114, 23114, 23114, 22420, 30297, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 25559, 26576, 23114, 23114, 23114, 30525, 33811, 22468, 23511, 23511, 23511, 28725, 27443, 22493, 24035, 24035, 27249, 24035, 24035, 23113, 23114, 23114, 26827, 23114, 28618, 29700, 23511, 23511, 26845, 23511, 34564, 20402, 24035, 24035, 26979, 24036, 23114, 23114, 23114, 24974, 23029, 22839, 23511, 23511, 23511, 26865, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 33305, 24035, 25598, 23114, 19874, 34253, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 26886, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 26931, 24569, 26439, 26947, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36019, 19288, 26995, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 27043, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 27061, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 29978, 24035, 24035, 23113, 23114, 33114, 23114, 23114, 30010, 29700, 23511, 35913, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 27155, 26576, 23114, 23114, 30447, 23036, 29695, 23511, 23511, 30935, 20099, 24152, 25529, 27100, 34461, 27121, 22625, 29156, 26009, 27137, 30422, 31903, 31655, 28870, 27171, 32439, 31731, 19830, 27232, 22612, 27265, 26786, 25494, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 20342, 27288, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 27322, 27339, 28020, 27361, 27382, 29939, 24035, 24035, 32581, 24036, 23114, 23114, 23114, 27425, 22420, 23511, 23511, 23511, 27442, 28306, 19803, 24035, 24035, 24035, 24035, 26710, 23114, 23114, 23114, 23114, 32261, 22468, 23511, 23511, 23511, 23511, 35719, 24694, 29510, 24035, 24035, 24035, 24035, 26717, 23114, 23114, 23114, 23114, 28618, 32217, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 27459, 23114, 23114, 23114, 36252, 23029, 20271, 23511, 23511, 23511, 28840, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 27480, 34483, 28401, 29761, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36382, 19288, 21605, 27497, 27517, 28504, 28898, 27569, 29939, 29401, 27600, 27323, 27633, 19025, 27662, 23114, 27705, 22420, 20483, 27721, 23511, 27765, 28306, 19803, 23540, 24035, 24610, 27781, 27805, 26650, 23114, 28573, 32990, 25920, 22468, 26870, 23511, 26684, 34262, 34737, 25057, 34622, 24035, 24035, 23971, 24206, 27825, 27847, 23114, 23114, 27865, 27885, 35766, 27914, 23511, 23511, 32766, 32844, 27934, 28795, 26909, 27955, 26092, 27988, 25445, 28005, 28036, 28052, 21965, 23511, 32196, 19897, 28072, 28102, 36534, 21541, 23801, 28153, 28180, 28197, 28221, 23036, 32695, 28251, 28268, 28292, 23667, 34825, 23930, 24580, 28322, 28344, 31627, 28366, 25996, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 35625, 33477, 33359, 27674, 28393, 33992, 24036, 23114, 30243, 19829, 28417, 28433, 28463, 23008, 19876, 20208, 23007, 20046, 20132, 28489, 28520, 20141, 24569, 31691, 19787, 28550, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 28589, 24035, 24035, 24035, 24035, 28608, 23114, 23114, 23114, 23114, 28618, 20431, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36004, 19288, 28634, 31951, 28565, 28702, 28718, 28741, 32544, 20175, 28792, 32086, 20105, 28811, 29059, 29862, 28856, 22420, 28886, 30354, 23359, 28922, 28306, 28952, 23888, 26320, 36506, 24035, 29331, 28968, 36609, 23114, 29003, 31661, 27061, 30649, 27366, 23511, 29023, 27918, 24694, 24035, 24035, 23893, 33094, 30867, 23113, 23114, 23114, 29044, 34184, 30010, 29700, 23511, 23511, 29081, 29102, 34585, 20402, 27789, 24035, 24035, 24036, 23114, 29132, 23114, 23114, 23029, 20271, 23511, 29153, 23511, 23511, 30562, 30174, 24035, 24035, 27409, 25438, 23114, 23114, 29172, 36668, 31332, 23511, 23511, 29192, 30144, 24035, 23110, 30203, 23114, 23467, 31544, 23261, 23628, 24035, 22545, 23111, 23114, 29213, 27078, 27689, 29234, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 29257, 23008, 19876, 20208, 28768, 29290, 29320, 34776, 29353, 20141, 22435, 29378, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36367, 19288, 21605, 34616, 19006, 32618, 31497, 31507, 36216, 20184, 24035, 34393, 29424, 34668, 23114, 34900, 29447, 22420, 30360, 23511, 37089, 29473, 28306, 19803, 29499, 24398, 24035, 24035, 26576, 31799, 29532, 29550, 23114, 33811, 22468, 32298, 29571, 31184, 23511, 23512, 37127, 36628, 29589, 24035, 24135, 24035, 23113, 29608, 23114, 27831, 29634, 28618, 29652, 30037, 23511, 24172, 29671, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 29555, 29690, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 29719, 24035, 23110, 29738, 23114, 23467, 34035, 29756, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 29777, 34364, 28181, 30243, 29799, 31920, 27272, 27185, 23008, 31126, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29828, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35989, 19552, 19687, 35139, 28649, 29878, 29894, 29924, 29939, 23224, 23085, 31969, 24036, 35173, 24752, 24803, 23114, 22420, 31190, 30318, 24870, 23511, 28306, 29967, 23967, 24035, 24035, 24035, 26576, 3e4, 23114, 23114, 23114, 33811, 22468, 30026, 23511, 23511, 23511, 23512, 26078, 24035, 24035, 24035, 30053, 37137, 30071, 23114, 23114, 33368, 25136, 28618, 30723, 23511, 23511, 37096, 31356, 34585, 20402, 30092, 30127, 30160, 24036, 35740, 30219, 24960, 30259, 23029, 20271, 34042, 30285, 30342, 30376, 23289, 30055, 30400, 30419, 30438, 32640, 33532, 33514, 30472, 18792, 26267, 24323, 23057, 30493, 23639, 20008, 30196, 33188, 30517, 20075, 23511, 30541, 23628, 30578, 33928, 28776, 30594, 19874, 30610, 30637, 19830, 30677, 27646, 19872, 25779, 23266, 23232, 35016, 30243, 30696, 29812, 30712, 30746, 27206, 30779, 30807, 23007, 33395, 20132, 26578, 27685, 31703, 22928, 31691, 19787, 31079, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36352, 19288, 23335, 30841, 26131, 30888, 30904, 30986, 29939, 24035, 24704, 31017, 20025, 23114, 26178, 31051, 31095, 22420, 23511, 22524, 31142, 31172, 28534, 31206, 35497, 25196, 24035, 28592, 24503, 23114, 31239, 31285, 23114, 31305, 31321, 31355, 31372, 31407, 23511, 30556, 24694, 24035, 27501, 19805, 24035, 24035, 23113, 23114, 31428, 24066, 23114, 28618, 29700, 23511, 31837, 18809, 23511, 34585, 31448, 24035, 24035, 24035, 23090, 23114, 23114, 23114, 23114, 31619, 35038, 23511, 23511, 23511, 23511, 33714, 24035, 33085, 24035, 29431, 23114, 31467, 23114, 23143, 31487, 23511, 31523, 23511, 35195, 36783, 24035, 30111, 23567, 23114, 23467, 31543, 31560, 23628, 24035, 24035, 23111, 23114, 19874, 30953, 31584, 34508, 24035, 31608, 26345, 37055, 23266, 31643, 31677, 31719, 31747, 31786, 31822, 26898, 23008, 19876, 31859, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 31878, 31936, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35974, 19288, 21605, 27972, 35663, 31985, 29655, 32001, 36715, 24785, 25893, 23545, 31912, 19853, 19916, 25938, 24540, 22420, 31843, 29674, 29573, 32735, 28936, 19803, 24035, 24035, 32047, 24035, 26576, 23114, 23114, 27544, 23114, 33811, 22468, 23511, 23511, 32161, 23511, 23512, 32066, 24035, 33313, 24035, 24035, 24035, 23113, 27426, 32102, 23114, 23114, 28618, 32125, 23511, 32144, 23511, 23511, 33569, 20402, 24035, 27045, 24035, 24036, 23114, 23114, 28328, 23114, 30076, 32177, 23511, 23511, 30384, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23595, 32212, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 22635, 25753, 32233, 32257, 32277, 19829, 26577, 26597, 20211, 23008, 19876, 32322, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 32352, 35285, 32380, 34196, 33016, 30661, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 32404, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 32422, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 30269, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 19949, 24035, 23111, 32455, 19874, 31269, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36337, 19552, 19209, 21617, 26509, 32475, 32491, 32529, 29939, 24035, 32578, 25241, 32597, 23114, 32634, 29007, 32656, 22420, 23511, 32729, 26365, 32751, 28306, 32788, 32882, 24035, 24035, 32813, 36727, 23114, 33182, 23114, 27553, 33235, 32829, 23511, 32706, 23511, 28906, 28377, 26962, 32881, 32904, 32898, 32920, 24035, 32953, 23114, 32977, 26408, 23114, 28164, 33006, 23511, 33039, 35774, 23511, 32306, 20402, 33076, 30872, 24035, 24036, 25408, 33110, 28979, 23114, 23029, 20271, 35835, 33130, 33054, 23511, 30562, 33148, 24035, 24035, 33167, 23114, 23114, 33775, 23036, 20459, 23511, 23511, 25464, 24646, 24035, 24035, 22446, 23114, 23114, 25627, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 31391, 33204, 33220, 33251, 33287, 26577, 26597, 20211, 33329, 19876, 33345, 23007, 20046, 20132, 26578, 27685, 28473, 22599, 31691, 33411, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35959, 19288, 21907, 27243, 29843, 32618, 33427, 31507, 29939, 33460, 34090, 24035, 24036, 33493, 24416, 33530, 23114, 22420, 33548, 24379, 33585, 23511, 28306, 19803, 33603, 24202, 24035, 24035, 25593, 33749, 28205, 23114, 23114, 32388, 22468, 33853, 33060, 23511, 23511, 31339, 33621, 24035, 24035, 34397, 24618, 30757, 33663, 23114, 23114, 33683, 35684, 28618, 26678, 23511, 23511, 32506, 33699, 34585, 20402, 24035, 32562, 26973, 24036, 23114, 23114, 33377, 33773, 23029, 20271, 23511, 23511, 30621, 23511, 23860, 24035, 33791, 21553, 26576, 36558, 23114, 33809, 23036, 32857, 26047, 23511, 33827, 23634, 24035, 24035, 23110, 23114, 23114, 31252, 23511, 33845, 23628, 24035, 24459, 23111, 23114, 33869, 27078, 30791, 29783, 24035, 24742, 19872, 33895, 23266, 26462, 19710, 33879, 33919, 26577, 26597, 24123, 24930, 21930, 20208, 30501, 33953, 25268, 20252, 33983, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36322, 19552, 23390, 33634, 35154, 34008, 34024, 34058, 35544, 34106, 34128, 26811, 33151, 34144, 34169, 34212, 23114, 34228, 34244, 34278, 34315, 23511, 34331, 34347, 34380, 34413, 24035, 24663, 26576, 34429, 34453, 34477, 29534, 33811, 22468, 34499, 34524, 34557, 25170, 34580, 35436, 23937, 34601, 24035, 24341, 26453, 23113, 34638, 34662, 23114, 24236, 28618, 34684, 34703, 34729, 23511, 35352, 34753, 34799, 24035, 34815, 32558, 34848, 34888, 35814, 34923, 23165, 29137, 23606, 30326, 30730, 34939, 33023, 30562, 36848, 34979, 24035, 24847, 34996, 23114, 23114, 35032, 29695, 35054, 23511, 23511, 35091, 33296, 35124, 24296, 28235, 24361, 36276, 32772, 35067, 35189, 27301, 30855, 24852, 22452, 35211, 35237, 35316, 25500, 35270, 23405, 24304, 35304, 29362, 24036, 23114, 35332, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 35368, 28823, 23920, 32336, 35405, 20141, 24569, 31691, 35421, 35479, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35944, 22795, 21605, 33647, 35877, 35513, 30962, 35529, 34073, 35557, 24035, 24035, 20405, 31107, 23114, 23114, 23114, 35590, 34713, 23511, 23511, 23511, 35641, 19803, 29408, 32937, 25298, 24035, 35657, 23115, 27849, 24760, 35679, 26205, 22468, 23511, 35700, 24907, 24901, 35075, 31893, 34980, 24035, 24035, 24035, 24035, 23113, 35009, 23114, 23114, 23114, 28618, 35716, 30970, 23511, 23511, 23511, 34585, 23215, 24035, 24035, 24035, 24036, 35735, 23114, 23114, 23114, 27105, 35756, 35790, 23511, 23511, 23511, 35254, 35446, 24035, 24035, 31223, 35809, 23114, 23114, 23036, 36825, 35830, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 31031, 20355, 19872, 33903, 23266, 24036, 23114, 28686, 19829, 26577, 26597, 20211, 23008, 23424, 20208, 24711, 31065, 24486, 26578, 27685, 20141, 19773, 35851, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36307, 19288, 21605, 35494, 19702, 32618, 33437, 31507, 29939, 25117, 24035, 27939, 24036, 27869, 23114, 26829, 23114, 22420, 23494, 23511, 33132, 23511, 28306, 19803, 24035, 34832, 24035, 24035, 26576, 23114, 25153, 23114, 23114, 33811, 22468, 23511, 23511, 35911, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35929, 19288, 21605, 25860, 23112, 36185, 23511, 36201, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 26748, 24035, 24035, 24035, 24035, 24035, 36249, 23114, 23114, 23114, 23114, 28618, 28835, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 27151, 24035, 26760, 23114, 27989, 23114, 23114, 36268, 20271, 23511, 24436, 23511, 29703, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36292, 19288, 21605, 36503, 21922, 32618, 34534, 31507, 36522, 24035, 33793, 24035, 35864, 23114, 23114, 36555, 23417, 22420, 23511, 23511, 36574, 26020, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 36592, 24035, 24035, 36625, 24035, 24035, 23113, 23114, 32961, 23114, 23114, 29618, 29700, 23511, 29086, 23511, 23511, 34585, 20402, 36644, 24035, 24035, 24036, 29740, 23114, 23114, 23114, 29065, 36663, 31527, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 31451, 23112, 36684, 23511, 36700, 29939, 24035, 24035, 24035, 30185, 23114, 23114, 23114, 27526, 22420, 23511, 23511, 23511, 32865, 28306, 19803, 36743, 24035, 27017, 24035, 26576, 27535, 23114, 31432, 23114, 33811, 22468, 33271, 23511, 32128, 23511, 23512, 24694, 24035, 27196, 24035, 24035, 24035, 23113, 32459, 23114, 23114, 23114, 28618, 29700, 33829, 36762, 23511, 23511, 34585, 20402, 24035, 36746, 24035, 29722, 23114, 23114, 34437, 23114, 34907, 20271, 23511, 23511, 18801, 23511, 23206, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 36837, 24035, 24035, 33739, 23114, 23114, 25094, 23511, 23261, 23628, 24035, 36780, 23111, 24073, 19874, 27078, 35344, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22720, 19288, 36799, 36866, 17466, 36890, 36864, 21991, 22211, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 17631, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36883, 36906, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22705, 19288, 19457, 36866, 17466, 36890, 36866, 19375, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36124, 19288, 36951, 36866, 17466, 36890, 36866, 21991, 22404, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18567, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36979, 36995, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18027, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 21529, 24035, 23112, 23033, 23511, 31507, 25377, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 37040, 23511, 23511, 23511, 23511, 28086, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 37079, 23511, 23511, 23511, 23511, 23512, 34766, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 37112, 37160, 18469, 36866, 17466, 36890, 36866, 17656, 37174, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18537, 22984, 17553, 17572, 22285, 18780, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36883, 36906, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 127011, 110630, 114730, 106539, 127011, 127011, 127011, 53264, 18, 18, 0, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 0, 0, 127011, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 3002368, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2576384, 2215936, 2215936, 2215936, 2416640, 2424832, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2543616, 2215936, 2215936, 2215936, 2215936, 2215936, 2629632, 2215936, 2617344, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2691072, 2215936, 2707456, 2215936, 2715648, 2215936, 2723840, 2764800, 2215936, 2215936, 2797568, 2215936, 2822144, 2215936, 2215936, 2854912, 2215936, 2215936, 2215936, 2912256, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 180224, 0, 0, 2174976, 0, 0, 2170880, 2617344, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2691072, 2170880, 2707456, 2170880, 2715648, 2170880, 2723840, 2764800, 2170880, 2170880, 2797568, 2170880, 2170880, 2797568, 2170880, 2822144, 2170880, 2170880, 2854912, 2170880, 2170880, 2170880, 2912256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2609152, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2654208, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 184599, 280, 0, 2174976, 0, 0, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 544, 0, 546, 0, 0, 2179072, 0, 0, 0, 552, 0, 0, 2170880, 2170880, 2170880, 3117056, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2158592, 2158592, 2232320, 2232320, 0, 2240512, 2240512, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3129344, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2400256, 2215936, 2215936, 2215936, 2215936, 2711552, 2170880, 2170880, 2170880, 2170880, 2170880, 2760704, 2768896, 2789376, 2813952, 2170880, 2170880, 2170880, 2875392, 2904064, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2453504, 2457600, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 167936, 0, 0, 0, 0, 2174976, 0, 0, 2215936, 2215936, 2514944, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2592768, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 32768, 0, 0, 0, 0, 0, 2174976, 32768, 0, 2633728, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2711552, 2215936, 2215936, 2215936, 2215936, 2215936, 2760704, 2768896, 2789376, 2813952, 2215936, 2215936, 2215936, 2875392, 2904064, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 0, 65819, 2215936, 2215936, 3031040, 2215936, 3055616, 2215936, 2215936, 2215936, 2215936, 3092480, 2215936, 2215936, 3125248, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3002368, 2215936, 2215936, 2170880, 2170880, 2494464, 2170880, 2170880, 0, 0, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2445312, 2170880, 2465792, 2473984, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2523136, 2170880, 2170880, 2641920, 2170880, 2170880, 2170880, 2699264, 2170880, 2727936, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2879488, 2170880, 2916352, 2170880, 2170880, 2170880, 2879488, 2170880, 2916352, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3026944, 2170880, 2170880, 3063808, 2170880, 2170880, 3112960, 2170880, 2170880, 3133440, 2170880, 2170880, 3112960, 2170880, 2170880, 3133440, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 2379776, 2215936, 2523136, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2596864, 2215936, 2621440, 2215936, 2215936, 2641920, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 548, 0, 0, 0, 0, 287, 2170880, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3117056, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2699264, 2215936, 2727936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2879488, 2215936, 2916352, 2215936, 2215936, 0, 0, 0, 0, 188416, 0, 2179072, 0, 0, 0, 0, 0, 287, 2170880, 0, 2171019, 2171019, 2171019, 2400395, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3031179, 2171019, 3055755, 2171019, 2171019, 2215936, 3133440, 2215936, 2215936, 2215936, 3162112, 2215936, 2215936, 3182592, 3186688, 2215936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2523275, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2597003, 2171019, 2621579, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, 4337664, 28, 2170880, 2170880, 2170880, 2629632, 2170880, 2170880, 2170880, 2170880, 2719744, 2744320, 2170880, 2170880, 2170880, 2834432, 2838528, 2170880, 2908160, 2170880, 2170880, 2936832, 2215936, 2215936, 2215936, 2215936, 2719744, 2744320, 2215936, 2215936, 2215936, 2834432, 2838528, 2215936, 2908160, 2215936, 2215936, 2936832, 2215936, 2215936, 2985984, 2215936, 2994176, 2215936, 2215936, 3014656, 2215936, 3059712, 3076096, 3088384, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2445312, 2215936, 2465792, 2473984, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171019, 2171019, 2494603, 2171019, 2171019, 2215936, 2215936, 2215936, 3215360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2985984, 2170880, 2994176, 2170880, 2170880, 3016168, 2170880, 3059712, 3076096, 3088384, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 124, 124, 0, 128, 128, 2170880, 2170880, 2170880, 3215360, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2486272, 2170880, 2170880, 2506752, 2170880, 2170880, 2170880, 2535424, 2539520, 2170880, 2170880, 2588672, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 2170880, 2170880, 3051520, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3170304, 0, 2387968, 2392064, 2170880, 2170880, 2433024, 2170880, 2170880, 2170880, 3170304, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2486272, 2215936, 2215936, 2506752, 2215936, 2215936, 2215936, 2535424, 2539520, 2215936, 2215936, 2588672, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 136, 0, 2215936, 2215936, 2920448, 2215936, 2215936, 2215936, 2990080, 2215936, 2215936, 2215936, 2215936, 3051520, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3108864, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3026944, 2215936, 2215936, 3063808, 2215936, 2215936, 3112960, 2215936, 2215936, 2215936, 3170304, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2453504, 2457600, 2170880, 2170880, 2170880, 2486272, 2170880, 2170880, 2506752, 2170880, 2170880, 2170880, 2537049, 2539520, 2170880, 2170880, 2588672, 2170880, 2170880, 2170880, 1508, 2170880, 2170880, 2170880, 1512, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, 2170880, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 2170880, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2686976, 2748416, 2170880, 2170880, 2170880, 2924544, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3121152, 2170880, 2170880, 3145728, 3158016, 3166208, 2170880, 2420736, 2428928, 2170880, 2478080, 2170880, 2170880, 2170880, 2170880, 0, 0, 2170880, 2170880, 2170880, 2170880, 2646016, 2670592, 0, 0, 3145728, 3158016, 3166208, 2387968, 2392064, 2215936, 2215936, 2433024, 2215936, 2461696, 2215936, 2215936, 2215936, 2510848, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 0, 2170880, 2215936, 2215936, 2580480, 2215936, 2605056, 2637824, 2215936, 2215936, 2686976, 2748416, 2215936, 2215936, 2215936, 2924544, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 286, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 3121152, 2215936, 2215936, 3145728, 3158016, 3166208, 2387968, 2392064, 2170880, 2170880, 2433024, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, 2170880, 1625, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 647, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2576384, 2170880, 2170880, 2170880, 2170880, 2170880, 2609152, 2170880, 2170880, 2686976, 0, 0, 2748416, 2170880, 2170880, 0, 2170880, 2924544, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 0, 0, 28, 28, 2170880, 3141632, 2215936, 2420736, 2428928, 2215936, 2478080, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2646016, 2670592, 2752512, 2756608, 2846720, 2961408, 2215936, 2998272, 2215936, 3010560, 2215936, 2215936, 2215936, 3141632, 2170880, 2420736, 2428928, 2752512, 2756608, 0, 2846720, 2961408, 2170880, 2998272, 2170880, 3010560, 2170880, 2170880, 2170880, 3141632, 2170880, 2170880, 2490368, 2215936, 2490368, 2215936, 2215936, 2215936, 2547712, 2555904, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 245760, 0, 3129344, 2170880, 2170880, 2490368, 2170880, 2170880, 2170880, 0, 0, 2547712, 2555904, 2170880, 2170880, 2170880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 45056, 0, 2584576, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 1482, 97, 97, 97, 97, 97, 97, 97, 1354, 97, 97, 97, 97, 97, 97, 97, 97, 1148, 97, 97, 97, 97, 97, 97, 97, 2584576, 2170880, 2170880, 1512, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2441216, 2170880, 2527232, 2170880, 2600960, 2170880, 2850816, 2170880, 2170880, 2170880, 3022848, 2215936, 2441216, 2215936, 2527232, 2215936, 2600960, 2215936, 2850816, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 287, 2170880, 2215936, 3022848, 2170880, 2441216, 2170880, 2527232, 0, 0, 2170880, 2600960, 2170880, 0, 2850816, 2170880, 2170880, 2170880, 2170880, 2170880, 2523136, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2596864, 2170880, 2621440, 2170880, 2170880, 2641920, 2170880, 2170880, 2170880, 3022848, 2170880, 2519040, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2519040, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 2453504, 2457600, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2514944, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2592768, 2170880, 2170880, 2519040, 0, 2024, 2170880, 2170880, 0, 2170880, 2170880, 2170880, 2396160, 2170880, 2170880, 2170880, 2170880, 3018752, 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396160, 0, 2024, 2170880, 2170880, 2170880, 2170880, 3018752, 2170880, 2650112, 2965504, 2170880, 2215936, 2650112, 2965504, 2215936, 0, 0, 2170880, 2650112, 2965504, 2170880, 2551808, 2170880, 2551808, 2215936, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 141, 45, 45, 67, 67, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 0, 2551808, 2170880, 2170880, 2215936, 0, 2170880, 2170880, 2215936, 0, 2170880, 2170880, 2215936, 0, 2170880, 2977792, 2977792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 29, 102432, 127011, 110630, 114730, 106539, 127011, 127011, 127011, 53264, 18, 18, 49172, 0, 0, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 136, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 4256099, 4256099, 24, 24, 0, 28, 28, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, 2170880, 0, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 2170880, 2170880, 2547712, 2555904, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3129344, 2215936, 2215936, 543, 543, 545, 545, 0, 0, 2179072, 0, 550, 551, 551, 0, 287, 2171166, 2171166, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 645, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 149, 2584576, 2170880, 2170880, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2441216, 2170880, 2527232, 2170880, 2600960, 2519040, 0, 0, 2170880, 2170880, 0, 2170880, 2170880, 2170880, 2396160, 2170880, 2170880, 2170880, 2170880, 3018752, 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396160, 0, 0, 2170880, 2170880, 2170880, 2170880, 3018752, 2170880, 2650112, 2965504, 53264, 18, 49172, 57366, 24, 155648, 28, 102432, 155648, 155687, 114730, 106539, 0, 0, 155648, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 0, 0, 0, 0, 2220032, 0, 94208, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 208896, 18, 278528, 24, 24, 0, 28, 28, 53264, 18, 159765, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 139394, 28, 28, 102432, 131, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 32768, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 546, 0, 0, 2183168, 0, 0, 552, 832, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2609152, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2654208, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 1084, 0, 1088, 0, 1092, 0, 0, 0, 0, 0, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 937, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 644, 0, 0, 0, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 826, 0, 828, 0, 0, 2183168, 0, 0, 830, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2592768, 2170880, 2170880, 2170880, 2170880, 2633728, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2711552, 2170880, 2170880, 2170880, 2170880, 2170880, 2760704, 53264, 18, 49172, 57366, 24, 8192, 28, 172066, 172032, 110630, 172066, 106539, 0, 0, 172032, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 16384, 28, 28, 28, 28, 102432, 0, 98304, 0, 0, 2220032, 110630, 0, 0, 0, 0, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 45056, 0, 0, 0, 53264, 18, 49172, 57366, 25, 8192, 30, 102432, 0, 110630, 114730, 106539, 0, 0, 176219, 53264, 18, 18, 49172, 0, 57366, 0, 124, 124, 124, 0, 128, 128, 128, 128, 102432, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 0, 546, 0, 0, 2183168, 0, 65536, 552, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2646016, 2670592, 2752512, 2756608, 2846720, 2961408, 2170880, 2998272, 2170880, 3010560, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 143, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1824, 67, 1826, 67, 67, 67, 67, 17, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 32768, 120, 121, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 2179072, 548, 0, 65820, 65820, 0, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 2033, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 978, 0, 546, 70179, 0, 2183168, 0, 0, 552, 0, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1013, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 67, 67, 67, 483, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1359, 97, 97, 97, 67, 67, 1584, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1668, 45, 45, 45, 45, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 774, 67, 67, 1713, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 1723, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 1538, 45, 45, 45, 45, 45, 1559, 45, 45, 1561, 45, 45, 45, 45, 45, 45, 45, 687, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1771, 1772, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 1827, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 1614, 97, 97, 97, 97, 97, 603, 97, 97, 605, 97, 97, 608, 97, 97, 97, 97, 0, 1532, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 450, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 1839, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 1883, 97, 1885, 97, 0, 1888, 0, 97, 97, 0, 97, 97, 1848, 97, 97, 97, 97, 1852, 45, 45, 45, 45, 45, 45, 45, 384, 391, 45, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 45, 45, 45, 45, 1237, 45, 45, 45, 45, 45, 45, 67, 0, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1951, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1963, 97, 2023, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 1994, 67, 1995, 67, 67, 67, 67, 67, 67, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 137, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2793472, 2805760, 2170880, 2830336, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3031040, 2170880, 3055616, 2170880, 2170880, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 281, 549, 0, 65820, 65820, 0, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2031, 2032, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1769, 67, 0, 546, 70179, 549, 549, 0, 0, 552, 0, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1858, 45, 641, 0, 0, 0, 0, 41606, 926, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 456, 67, 0, 0, 0, 1313, 0, 0, 0, 1096, 1319, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1110, 97, 97, 97, 97, 67, 67, 67, 67, 1301, 1476, 0, 0, 0, 0, 1307, 1478, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1486, 97, 1487, 97, 1313, 1480, 0, 0, 0, 0, 1319, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1476, 0, 1478, 0, 1480, 0, 97, 97, 97, 97, 97, 97, 97, 45, 1853, 45, 1855, 45, 45, 45, 45, 53264, 18, 49172, 57366, 26, 8192, 31, 102432, 0, 110630, 114730, 106539, 0, 0, 225368, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 32768, 53264, 18, 18, 49172, 163840, 57366, 0, 24, 24, 229376, 0, 28, 28, 28, 229376, 102432, 0, 0, 0, 0, 2220167, 110630, 0, 0, 0, 114730, 106539, 0, 2171019, 2171019, 2171019, 2171019, 2592907, 2171019, 2171019, 2171019, 2171019, 2633867, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2654347, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3117195, 2171019, 2171019, 2171019, 2171019, 2240641, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 140, 2171019, 2171019, 2171019, 2416779, 2424971, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2617483, 2171019, 2171019, 2642059, 2171019, 2171019, 2171019, 2699403, 2171019, 2728075, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3215499, 2215936, 2215936, 2215936, 2215936, 2215936, 2437120, 2215936, 2215936, 2171019, 2822283, 2171019, 2171019, 2855051, 2171019, 2171019, 2171019, 2912395, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3002507, 2171019, 2171019, 2215936, 2215936, 2494464, 2215936, 2215936, 2215936, 2171166, 2171166, 2416926, 2425118, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2576670, 2171166, 2617630, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2691358, 2171166, 2707742, 2171166, 2715934, 2171166, 2724126, 2765086, 2171166, 2171166, 2797854, 2171166, 2822430, 2171166, 2171166, 2855198, 2171166, 2171166, 2171166, 2912542, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2793758, 2806046, 2171166, 2830622, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3109150, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2543902, 2171166, 2171166, 2171166, 2171166, 2171166, 2629918, 2793611, 2805899, 2171019, 2830475, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 0, 546, 0, 0, 2183168, 0, 0, 552, 0, 2171166, 2171166, 2171166, 2400542, 2171166, 2171166, 2171166, 0, 2171166, 2171166, 2171166, 0, 2171166, 2920734, 2171166, 2171166, 2171166, 2990366, 2171166, 2171166, 2171166, 2171166, 3117342, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 0, 53264, 0, 18, 18, 4329472, 2232445, 0, 2240641, 4337664, 2711691, 2171019, 2171019, 2171019, 2171019, 2171019, 2760843, 2769035, 2789515, 2814091, 2171019, 2171019, 2171019, 2875531, 2904203, 2171019, 2171019, 3092619, 2171019, 2171019, 3125387, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3199115, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2453504, 2457600, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2793472, 2805760, 2215936, 2830336, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2494464, 2170880, 2170880, 2171166, 2171166, 2634014, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2711838, 2171166, 2171166, 2171166, 2171166, 2171166, 2760990, 2769182, 2789662, 2814238, 2171166, 2171166, 2171166, 2875678, 2904350, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3199262, 2171166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379915, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2445451, 2171019, 2465931, 2474123, 2171019, 2171019, 3113099, 2171019, 2171019, 3133579, 2171019, 2171019, 2171019, 3162251, 2171019, 2171019, 3182731, 3186827, 2171019, 2379776, 2879627, 2171019, 2916491, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3027083, 2171019, 2171019, 3063947, 2699550, 2171166, 2728222, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2879774, 2171166, 2916638, 2171166, 2171166, 2171166, 2171166, 2171166, 2609438, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2654494, 2171166, 2171166, 2171166, 2171166, 2171166, 2445598, 2171166, 2466078, 2474270, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2523422, 2171019, 2437259, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2543755, 2171019, 2171019, 2171019, 2584715, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2908299, 2171019, 2171019, 2936971, 2171019, 2171019, 2986123, 2171019, 2994315, 2171019, 2171019, 3014795, 2171019, 3059851, 3076235, 3088523, 2171166, 2171166, 2986270, 2171166, 2994462, 2171166, 2171166, 3014942, 2171166, 3059998, 3076382, 3088670, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3027230, 2171166, 2171166, 3064094, 2171166, 2171166, 3113246, 2171166, 2171166, 3133726, 2506891, 2171019, 2171019, 2171019, 2535563, 2539659, 2171019, 2171019, 2588811, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2691211, 2171019, 2707595, 2171019, 2715787, 2171019, 2723979, 2764939, 2171019, 2171019, 2797707, 2215936, 2215936, 3170304, 0, 0, 0, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2453790, 2457886, 2171166, 2171166, 2171166, 2486558, 2171166, 2171166, 2507038, 2171166, 2171166, 2171166, 2535710, 2539806, 2171166, 2171166, 2588958, 2171166, 2171166, 2171166, 2171166, 2515230, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2593054, 2171166, 2171166, 2171166, 2171166, 3051806, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3170590, 0, 2388107, 2392203, 2171019, 2171019, 2433163, 2171019, 2461835, 2171019, 2171019, 2171019, 2510987, 2171019, 2171019, 2171019, 2171019, 2580619, 2171019, 2605195, 2637963, 2171019, 2171019, 2171019, 2920587, 2171019, 2171019, 2171019, 2990219, 2171019, 2171019, 2171019, 2171019, 3051659, 2171019, 2171019, 2171019, 2453643, 2457739, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2515083, 2171019, 2171019, 2171019, 2171019, 2646155, 2670731, 2752651, 2756747, 2846859, 2961547, 2171019, 2998411, 2171019, 3010699, 2171019, 2171019, 2687115, 2748555, 2171019, 2171019, 2171019, 2924683, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3121291, 2171019, 2171019, 2171019, 3170443, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2486272, 2215936, 2215936, 2506752, 3145867, 3158155, 3166347, 2387968, 2392064, 2215936, 2215936, 2433024, 2215936, 2461696, 2215936, 2215936, 2215936, 2510848, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 553, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 3121152, 2215936, 2215936, 3145728, 3158016, 3166208, 2388254, 2392350, 2171166, 2171166, 2433310, 2171166, 2461982, 2171166, 2171166, 2171166, 2511134, 2171166, 2171166, 0, 2171166, 2171166, 2580766, 2171166, 2605342, 2638110, 2171166, 2171166, 2171166, 2171166, 3031326, 2171166, 3055902, 2171166, 2171166, 2171166, 2171166, 3092766, 2171166, 2171166, 3125534, 2171166, 2171166, 2171166, 3162398, 2171166, 2171166, 3182878, 3186974, 2171166, 0, 0, 0, 2171019, 2171019, 2171019, 2171019, 3109003, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2215936, 2215936, 2215936, 2400256, 2215936, 2215936, 2215936, 2215936, 2171166, 2687262, 0, 0, 2748702, 2171166, 2171166, 0, 2171166, 2924830, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2597150, 2171166, 2621726, 2171166, 2171166, 2642206, 2171166, 2171166, 2171166, 2171166, 3121438, 2171166, 2171166, 3146014, 3158302, 3166494, 2171019, 2420875, 2429067, 2171019, 2478219, 2171019, 2171019, 2171019, 2171019, 2547851, 2556043, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3129483, 2215936, 2171019, 3141771, 2215936, 2420736, 2428928, 2215936, 2478080, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2646016, 2670592, 2752512, 2756608, 2846720, 2961408, 2215936, 2998272, 2215936, 3010560, 2215936, 2215936, 2215936, 3141632, 2171166, 2421022, 2429214, 2171166, 2478366, 2171166, 2171166, 2171166, 2171166, 0, 0, 2171166, 2171166, 2171166, 2171166, 2646302, 2670878, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 0, 45, 45, 45, 45, 45, 1405, 1406, 45, 45, 45, 45, 1409, 45, 45, 45, 45, 45, 1415, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1238, 45, 45, 45, 45, 67, 2752798, 2756894, 0, 2847006, 2961694, 2171166, 2998558, 2171166, 3010846, 2171166, 2171166, 2171166, 3141918, 2171019, 2171019, 2490507, 3129344, 2171166, 2171166, 2490654, 2171166, 2171166, 2171166, 0, 0, 2547998, 2556190, 2171166, 2171166, 2171166, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 167, 45, 45, 45, 45, 185, 187, 45, 45, 198, 45, 45, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3129630, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2576523, 2171019, 2171019, 2171019, 2171019, 2171019, 2609291, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3002368, 2215936, 2215936, 2171166, 2171166, 2494750, 2171166, 2171166, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 147, 2584576, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 3002654, 2171166, 2171166, 2171019, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2175257, 0, 0, 2584862, 2171166, 2171166, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171019, 2441355, 2171019, 2527371, 2171019, 2601099, 2171019, 2850955, 2171019, 2171019, 2171019, 3022987, 2215936, 2441216, 2215936, 2527232, 2215936, 2600960, 2215936, 2850816, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 69632, 287, 2170880, 2215936, 3022848, 2171166, 2441502, 2171166, 2527518, 0, 0, 2171166, 2601246, 2171166, 0, 2851102, 2171166, 2171166, 2171166, 2171166, 2720030, 2744606, 2171166, 2171166, 2171166, 2834718, 2838814, 2171166, 2908446, 2171166, 2171166, 2937118, 3023134, 2171019, 2519179, 2171019, 2171019, 2171019, 2171019, 2171019, 2215936, 2519040, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 3215646, 0, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2486411, 2171019, 2171019, 2171019, 2629771, 2171019, 2171019, 2171019, 2171019, 2719883, 2744459, 2171019, 2171019, 2171019, 2834571, 2838667, 2171019, 2519326, 0, 0, 2171166, 2171166, 0, 2171166, 2171166, 2171166, 2396299, 2171019, 2171019, 2171019, 2171019, 3018891, 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396446, 0, 0, 2171166, 2171166, 2171166, 2171166, 3019038, 2171019, 2650251, 2965643, 2171019, 2215936, 2650112, 2965504, 2215936, 0, 0, 2171166, 2650398, 2965790, 2171166, 2551947, 2171019, 2551808, 2215936, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 144, 45, 45, 67, 67, 67, 67, 67, 228, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1929, 97, 97, 97, 97, 0, 0, 0, 2552094, 2171166, 2171019, 2215936, 0, 2171166, 2171019, 2215936, 0, 2171166, 2171019, 2215936, 0, 2171166, 2977931, 2977792, 2978078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1321, 97, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 140, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2445312, 2170880, 2465792, 2473984, 2170880, 2170880, 2170880, 2584576, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 0, 140, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3002368, 2170880, 2170880, 2215936, 2215936, 2494464, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3215360, 544, 0, 0, 0, 544, 0, 546, 0, 0, 0, 546, 0, 0, 2183168, 0, 0, 552, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 0, 2170880, 2170880, 2170880, 0, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 552, 0, 0, 0, 552, 0, 287, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2437120, 2170880, 2170880, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 644, 0, 2215936, 2215936, 3170304, 544, 0, 546, 0, 552, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 0, 140, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 249856, 110630, 114730, 106539, 0, 0, 32768, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 151640, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2416640, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 253952, 110630, 114730, 106539, 0, 0, 32856, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 192512, 53264, 18, 18, 49172, 0, 57366, 0, 2232445, 184320, 2232445, 0, 2240641, 2240641, 184320, 2240641, 102432, 0, 0, 0, 221184, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3108864, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 0, 0, 0, 45056, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, 127, 127, 53264, 18, 49172, 258071, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 32768, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 204800, 53264, 18, 49172, 57366, 24, 27, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 33, 0, 33, 33, 33, 0, 0, 0, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 16384, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2170880, 2170880, 2170880, 2416640, 67, 67, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2030, 45, 45, 45, 45, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1699, 67, 67, 67, 67, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 1358, 97, 97, 97, 641, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 45, 45, 45, 0, 1480, 0, 0, 0, 0, 1319, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1680, 45, 45, 45, 641, 0, 924, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 45, 45, 45, 45, 67, 67, 37139, 37139, 24853, 24853, 0, 70179, 282, 0, 0, 65820, 65820, 369, 287, 97, 0, 0, 97, 97, 0, 97, 2028, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1767, 67, 67, 67, 0, 0, 0, 0, 0, 0, 1612, 97, 97, 97, 97, 97, 97, 0, 1785, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1790, 97, 0, 0, 2170880, 2170880, 3051520, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3170304, 241664, 2387968, 2392064, 2170880, 2170880, 2433024, 53264, 19, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 274432, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 270336, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 1134711, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 1126440, 1126440, 1126440, 0, 0, 1126400, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 36, 110630, 114730, 106539, 0, 0, 217088, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 94, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 96, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 24666, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 126, 28, 28, 28, 28, 102432, 53264, 122, 123, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 2170880, 2170880, 4256099, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 1319, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1109, 97, 97, 97, 97, 1113, 132, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 146, 150, 45, 45, 45, 45, 45, 175, 45, 180, 45, 186, 45, 189, 45, 45, 203, 67, 256, 67, 67, 270, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 293, 297, 97, 97, 97, 97, 97, 322, 97, 327, 97, 333, 97, 0, 0, 97, 2026, 0, 2027, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 336, 97, 97, 350, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 2424832, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2617344, 2170880, 45, 439, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 525, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 622, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 1527, 369, 648, 45, 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1239, 45, 45, 45, 67, 729, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 762, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 0, 0, 0, 1477, 0, 1086, 0, 0, 0, 1479, 0, 1090, 67, 67, 796, 67, 67, 799, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1291, 67, 67, 67, 811, 67, 67, 67, 67, 67, 816, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 833, 97, 97, 97, 97, 97, 97, 97, 97, 1380, 0, 0, 0, 45, 45, 45, 45, 45, 1185, 45, 45, 45, 45, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 45, 45, 45, 45, 67, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 97, 97, 97, 894, 97, 97, 897, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1382, 45, 45, 45, 97, 909, 97, 97, 97, 97, 97, 914, 97, 97, 97, 97, 97, 97, 97, 923, 67, 67, 1079, 67, 67, 67, 67, 67, 37689, 1085, 25403, 1089, 66365, 1093, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 148, 1114, 97, 97, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 97, 97, 606, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1173, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 145, 45, 45, 67, 67, 67, 67, 67, 1762, 67, 67, 67, 1766, 67, 67, 67, 67, 67, 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1934, 67, 67, 1255, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 67, 67, 67, 67, 1297, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 33344, 97, 97, 97, 1335, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 1377, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 670, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 67, 67, 1438, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1592, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 0, 0, 1305, 0, 0, 0, 0, 0, 1311, 0, 0, 0, 1317, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1322, 97, 97, 1491, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 1553, 45, 1504, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 97, 97, 0, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 1540, 45, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1700, 67, 67, 67, 97, 1648, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1541, 0, 97, 97, 97, 97, 0, 1940, 0, 97, 97, 97, 97, 97, 97, 45, 45, 2011, 45, 45, 45, 2015, 67, 67, 2017, 67, 67, 67, 2021, 97, 67, 67, 812, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 97, 97, 97, 910, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 923, 0, 0, 0, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 1188, 45, 45, 45, 45, 1414, 45, 45, 45, 1417, 45, 1419, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 453, 45, 45, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 282, 41098, 65820, 97, 1324, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 930, 45, 45, 45, 45, 97, 97, 97, 97, 1378, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 45, 67, 67, 1923, 67, 1925, 67, 67, 1927, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1985, 45, 45, 45, 45, 45, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 45, 946, 45, 45, 950, 45, 45, 45, 0, 97, 97, 97, 1939, 0, 0, 0, 97, 1943, 97, 97, 1945, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 990, 45, 45, 45, 67, 257, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 337, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, 2170880, 2170880, 2170880, 2416640, 401, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 459, 461, 67, 67, 67, 67, 67, 67, 67, 67, 475, 67, 480, 67, 67, 67, 67, 67, 67, 1054, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 484, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 67, 67, 97, 556, 558, 97, 97, 97, 97, 97, 97, 97, 97, 572, 97, 577, 97, 97, 0, 0, 1896, 97, 97, 97, 97, 97, 97, 1903, 45, 45, 45, 45, 983, 45, 45, 45, 45, 988, 45, 45, 45, 45, 45, 45, 1195, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1549, 45, 45, 45, 45, 45, 581, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1004, 45, 45, 45, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 761, 67, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 1071, 67, 67, 67, 67, 1076, 794, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 544, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, 97, 97, 97, 97, 859, 97, 0, 0, 2025, 97, 20480, 97, 97, 2029, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1775, 67, 67, 67, 97, 97, 97, 97, 892, 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1515, 97, 993, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 992, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1607, 67, 67, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 97, 45, 1556, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 696, 45, 1596, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 499, 67, 97, 97, 97, 1621, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1346, 97, 97, 97, 97, 1740, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 45, 45, 67, 97, 97, 97, 97, 97, 97, 1836, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1984, 97, 45, 45, 45, 45, 45, 45, 1808, 45, 45, 45, 45, 45, 45, 45, 45, 67, 739, 67, 67, 67, 67, 67, 744, 45, 45, 1909, 45, 45, 45, 45, 45, 45, 45, 67, 1917, 67, 1918, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 67, 67, 67, 67, 67, 97, 1930, 97, 1931, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 1580, 67, 67, 0, 97, 97, 1938, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 699, 45, 45, 45, 704, 45, 45, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 97, 2006, 97, 97, 97, 97, 0, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 722, 723, 45, 45, 45, 45, 45, 45, 2045, 67, 67, 67, 2047, 0, 0, 97, 97, 97, 2051, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1957, 45, 67, 67, 67, 67, 67, 1836, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 67, 67, 1761, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 45, 45, 420, 45, 45, 422, 45, 45, 425, 45, 45, 45, 45, 45, 45, 45, 387, 45, 45, 45, 45, 397, 45, 45, 45, 67, 460, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 515, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 97, 0, 2039, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1426, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1689, 67, 67, 67, 97, 557, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 612, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 896, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 885, 97, 97, 97, 97, 97, 45, 939, 45, 45, 45, 45, 943, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1916, 67, 67, 67, 67, 67, 45, 67, 67, 67, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 1019, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 804, 67, 67, 67, 67, 67, 1077, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2437120, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2543616, 2170880, 2170880, 2170880, 2170880, 2170880, 2629632, 1169, 97, 1171, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 936, 45, 45, 67, 67, 214, 67, 220, 67, 67, 233, 67, 243, 67, 248, 67, 67, 67, 67, 67, 67, 1298, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1617, 97, 0, 0, 0, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 45, 45, 45, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 1281, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 776, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 907, 45, 1412, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 690, 45, 45, 695, 45, 45, 67, 67, 67, 67, 67, 1465, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1712, 97, 97, 97, 97, 1741, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1924, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1983, 97, 97, 45, 45, 1987, 45, 1988, 45, 0, 97, 97, 97, 97, 0, 0, 0, 1942, 97, 97, 97, 97, 97, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 711, 45, 45, 153, 45, 45, 166, 45, 176, 45, 181, 45, 45, 188, 191, 196, 45, 204, 255, 258, 263, 67, 271, 67, 67, 0, 37139, 24853, 0, 0, 0, 282, 41098, 65820, 97, 97, 97, 294, 97, 300, 97, 97, 313, 97, 323, 97, 328, 97, 97, 335, 338, 343, 97, 351, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 41098, 0, 140, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1411, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 67, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1263, 67, 67, 67, 67, 67, 97, 97, 583, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1526, 97, 598, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 0, 97, 97, 1796, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1744, 45, 45, 45, 369, 0, 651, 45, 653, 45, 654, 45, 656, 45, 45, 45, 660, 45, 45, 45, 45, 1558, 45, 45, 45, 45, 45, 45, 45, 45, 1566, 45, 45, 681, 45, 683, 45, 45, 45, 45, 45, 45, 45, 45, 691, 692, 694, 45, 45, 45, 716, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 709, 45, 45, 712, 45, 714, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, 45, 726, 45, 45, 45, 733, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 747, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 1613, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 67, 764, 67, 67, 67, 67, 768, 67, 770, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1977, 67, 778, 779, 781, 67, 67, 67, 67, 67, 67, 788, 789, 67, 67, 792, 793, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 67, 67, 824, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 836, 97, 838, 97, 839, 97, 841, 97, 97, 97, 845, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 97, 97, 0, 1728, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 1802, 45, 97, 97, 862, 97, 97, 97, 97, 866, 97, 868, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1788, 97, 97, 97, 0, 0, 97, 97, 876, 877, 879, 97, 97, 97, 97, 97, 97, 886, 887, 97, 97, 890, 891, 97, 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1646, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 97, 97, 922, 923, 45, 955, 45, 957, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 195, 45, 45, 45, 45, 45, 981, 982, 45, 45, 45, 45, 45, 45, 989, 45, 45, 45, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, 67, 67, 67, 1031, 67, 1033, 67, 67, 67, 67, 67, 67, 67, 817, 819, 67, 67, 67, 67, 67, 37689, 544, 67, 1065, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 1078, 67, 67, 1081, 1082, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2437406, 2171166, 2171166, 97, 1115, 97, 1117, 97, 97, 97, 97, 97, 97, 1125, 97, 1127, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 1644, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 1642, 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1159, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1502, 97, 97, 97, 97, 97, 1172, 97, 97, 1175, 1176, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 935, 45, 45, 45, 1233, 45, 45, 45, 1236, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1873, 67, 67, 45, 45, 1218, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 1230, 45, 45, 67, 67, 215, 219, 222, 67, 230, 67, 67, 244, 246, 249, 67, 67, 67, 67, 67, 67, 1882, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1904, 45, 1905, 45, 67, 67, 67, 67, 67, 1258, 67, 1260, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 67, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 67, 818, 67, 67, 67, 67, 67, 67, 37689, 544, 67, 67, 1295, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2174976, 0, 0, 97, 97, 97, 1326, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1514, 97, 97, 97, 97, 97, 1338, 97, 1340, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 1503, 97, 1363, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 578, 97, 1375, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 45, 45, 45, 45, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1778, 97, 97, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 97, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 1554, 45, 1570, 1571, 45, 67, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 67, 1061, 67, 67, 1582, 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 1594, 67, 67, 67, 67, 67, 97, 2038, 0, 97, 97, 97, 97, 97, 2044, 45, 45, 45, 995, 45, 45, 45, 45, 1e3, 45, 45, 45, 45, 45, 45, 45, 1809, 45, 1811, 45, 45, 45, 45, 45, 67, 1610, 1611, 67, 1476, 0, 1478, 0, 1480, 0, 97, 97, 97, 97, 97, 97, 1618, 1647, 1649, 97, 97, 97, 1652, 97, 1654, 1655, 97, 0, 45, 45, 45, 1658, 45, 45, 67, 67, 216, 67, 67, 67, 67, 234, 67, 67, 67, 67, 252, 254, 1845, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 947, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1881, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1902, 45, 45, 45, 45, 45, 45, 1908, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1921, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 0, 97, 1937, 97, 97, 1940, 0, 0, 97, 97, 97, 97, 97, 97, 1947, 1948, 1949, 45, 45, 45, 1952, 45, 1954, 45, 45, 45, 45, 1959, 1960, 1961, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 67, 67, 1964, 67, 1966, 67, 67, 67, 67, 1971, 1972, 1973, 97, 0, 0, 0, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 884, 97, 97, 97, 889, 97, 97, 1978, 97, 0, 0, 1981, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 736, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 45, 67, 67, 67, 67, 0, 2049, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 933, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 97, 97, 288, 97, 97, 97, 97, 97, 97, 317, 97, 97, 97, 97, 97, 97, 0, 0, 97, 1787, 97, 97, 97, 97, 0, 0, 45, 45, 378, 45, 45, 45, 45, 45, 390, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 431, 433, 45, 45, 45, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 67, 97, 97, 97, 1144, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 632, 97, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 67, 97, 97, 97, 97, 97, 97, 1837, 0, 97, 97, 97, 97, 97, 0, 0, 0, 1897, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, 45, 45, 45, 97, 2010, 45, 45, 45, 45, 45, 45, 2016, 67, 67, 67, 67, 67, 67, 2022, 45, 2046, 67, 67, 67, 0, 0, 2050, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 932, 45, 45, 45, 45, 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 45, 45, 133, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 701, 702, 45, 45, 705, 706, 45, 45, 45, 45, 45, 45, 703, 45, 45, 45, 45, 45, 45, 45, 45, 45, 719, 45, 45, 45, 45, 45, 725, 45, 45, 45, 369, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 834, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1799, 97, 97, 45, 45, 45, 1569, 45, 45, 45, 1572, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1306, 0, 67, 67, 67, 1598, 67, 67, 67, 67, 67, 67, 67, 67, 1606, 67, 67, 1609, 97, 97, 97, 1650, 97, 97, 1653, 97, 97, 97, 0, 45, 45, 1657, 45, 45, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1421, 45, 45, 45, 1703, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1711, 97, 97, 0, 1895, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 958, 45, 960, 45, 45, 45, 45, 45, 45, 45, 45, 1913, 45, 45, 1915, 67, 67, 67, 67, 67, 67, 67, 466, 67, 67, 67, 67, 67, 67, 481, 67, 45, 1749, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 45, 45, 45, 45, 173, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1773, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1886, 0, 0, 0, 97, 97, 67, 2035, 2036, 67, 67, 97, 0, 0, 97, 2041, 2042, 97, 97, 45, 45, 45, 45, 1662, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1397, 45, 45, 45, 45, 151, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 437, 205, 45, 67, 67, 67, 218, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1047, 67, 67, 67, 67, 97, 97, 97, 97, 298, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 97, 97, 97, 97, 97, 97, 352, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 0, 0, 0, 0, 0, 365, 0, 41098, 0, 140, 45, 45, 45, 45, 45, 1427, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1435, 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1037, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 923, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1919, 67, 1759, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 45, 154, 45, 162, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 964, 45, 45, 45, 206, 45, 67, 67, 67, 67, 221, 67, 229, 67, 67, 67, 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 67, 785, 67, 67, 67, 67, 67, 67, 67, 67, 802, 67, 67, 67, 807, 67, 67, 67, 97, 97, 97, 97, 353, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 402, 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 45, 45, 674, 45, 45, 45, 45, 45, 45, 45, 45, 389, 45, 394, 45, 45, 398, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 447, 45, 45, 45, 454, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 488, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 67, 67, 67, 67, 67, 1774, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 67, 67, 523, 67, 67, 527, 67, 67, 67, 67, 67, 533, 67, 67, 67, 540, 97, 97, 97, 585, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 97, 97, 97, 97, 1784, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 0, 18, 18, 24, 24, 0, 28, 28, 97, 97, 620, 97, 97, 624, 97, 97, 97, 97, 97, 630, 97, 97, 97, 637, 713, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 45, 45, 45, 1197, 45, 45, 45, 45, 45, 45, 45, 45, 730, 732, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1581, 67, 45, 67, 67, 67, 67, 1012, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 775, 67, 67, 67, 67, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 479, 67, 67, 67, 67, 67, 67, 1080, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, 287, 0, 2379776, 2170880, 2170880, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 920, 97, 97, 0, 0, 0, 0, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 45, 1219, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 45, 959, 45, 45, 45, 45, 45, 45, 45, 45, 45, 184, 45, 45, 45, 45, 202, 45, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1266, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1279, 67, 67, 67, 67, 67, 272, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1293, 67, 67, 67, 1296, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 281, 94, 0, 0, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 0, 97, 1376, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1384, 45, 45, 67, 208, 67, 67, 67, 67, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, 1069, 1070, 67, 67, 67, 67, 67, 67, 67, 0, 37140, 24854, 0, 0, 0, 0, 41098, 65821, 45, 1423, 45, 45, 45, 45, 45, 45, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1083, 37689, 0, 25403, 0, 66365, 0, 0, 0, 1436, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1830, 67, 1452, 1453, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 67, 67, 1461, 67, 67, 67, 1464, 67, 1466, 67, 67, 67, 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 1587, 67, 67, 67, 67, 67, 67, 67, 67, 1595, 1489, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 1505, 1506, 97, 97, 97, 97, 1510, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 1164, 97, 97, 97, 97, 97, 1516, 97, 97, 97, 1519, 97, 1521, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1600, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1301, 0, 0, 0, 1307, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 1627, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 919, 97, 97, 97, 0, 97, 97, 97, 1781, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1792, 1860, 45, 1862, 1863, 45, 1865, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1875, 67, 1877, 1878, 67, 1880, 67, 97, 97, 97, 97, 97, 1887, 0, 1889, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 237568, 0, 367, 0, 97, 1893, 0, 0, 0, 97, 1898, 1899, 97, 1901, 97, 45, 45, 45, 45, 45, 2014, 45, 67, 67, 67, 67, 67, 2020, 67, 97, 1989, 45, 1990, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1996, 67, 1997, 67, 67, 67, 67, 67, 273, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 2005, 0, 97, 2007, 97, 97, 18, 0, 139621, 0, 0, 0, 642, 0, 133, 364, 0, 0, 367, 41606, 0, 97, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 209, 67, 67, 67, 223, 67, 67, 67, 67, 67, 67, 67, 67, 67, 786, 67, 67, 67, 791, 67, 67, 45, 45, 940, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 727, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1016, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 133, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 142, 45, 45, 67, 210, 67, 67, 67, 225, 67, 67, 239, 67, 67, 67, 250, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, 476, 67, 67, 67, 67, 67, 67, 67, 1709, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1843, 0, 67, 259, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 289, 97, 97, 97, 303, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 97, 339, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 358, 0, 0, 0, 0, 0, 0, 41098, 0, 140, 45, 45, 45, 45, 45, 1953, 45, 1955, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1687, 1688, 67, 67, 67, 67, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1203, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 477, 67, 67, 67, 67, 67, 67, 67, 1970, 97, 97, 97, 1974, 0, 0, 0, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1372, 97, 97, 97, 97, 67, 522, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 536, 67, 67, 67, 67, 67, 67, 1696, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 574, 97, 97, 97, 97, 97, 301, 97, 309, 97, 97, 97, 97, 97, 97, 97, 97, 97, 900, 97, 97, 97, 905, 97, 97, 97, 619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 633, 97, 97, 18, 0, 139621, 0, 0, 362, 0, 0, 0, 364, 0, 0, 367, 41606, 369, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 664, 67, 67, 67, 67, 750, 751, 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1057, 1058, 67, 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 67, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 902, 97, 97, 97, 97, 67, 67, 1051, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1302, 0, 0, 0, 1308, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1139, 97, 97, 97, 97, 1156, 97, 97, 97, 97, 97, 97, 1161, 97, 97, 97, 97, 97, 1166, 97, 97, 18, 640, 139621, 0, 641, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 67, 67, 67, 67, 1257, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1305, 0, 0, 97, 97, 1337, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1630, 97, 67, 1474, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2380062, 2171166, 2171166, 97, 1529, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1228, 45, 45, 45, 45, 67, 67, 67, 67, 1707, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1891, 1739, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 1200, 45, 45, 45, 45, 97, 97, 1894, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1420, 45, 45, 45, 45, 67, 67, 1965, 67, 1967, 67, 67, 67, 97, 97, 97, 97, 0, 1976, 0, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 97, 97, 1979, 0, 0, 97, 1982, 97, 97, 97, 1986, 45, 45, 45, 45, 45, 735, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 2e3, 97, 97, 97, 2002, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1798, 97, 97, 97, 45, 45, 45, 2034, 67, 67, 67, 67, 97, 0, 0, 2040, 97, 97, 97, 97, 45, 45, 45, 45, 1752, 45, 45, 45, 1753, 1754, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 45, 45, 438, 45, 45, 45, 45, 45, 445, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1430, 67, 67, 67, 67, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 531, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 1096, 97, 97, 97, 621, 97, 97, 97, 97, 97, 628, 97, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 45, 942, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 708, 45, 45, 45, 45, 763, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 809, 810, 67, 67, 67, 67, 783, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 1303, 0, 0, 0, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 45, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 67, 67, 67, 67, 1027, 67, 67, 67, 67, 1032, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 1097, 1064, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 67, 1098, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 331, 97, 97, 97, 97, 1158, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 1309, 0, 0, 0, 1315, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1374, 97, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1240, 67, 67, 1583, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1252, 67, 97, 97, 97, 1635, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1800, 97, 45, 45, 45, 97, 97, 1793, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1743, 45, 45, 45, 1746, 45, 0, 97, 97, 97, 97, 97, 1851, 97, 45, 45, 45, 45, 1856, 45, 45, 45, 45, 1864, 45, 45, 67, 67, 1869, 67, 67, 67, 67, 1874, 67, 0, 97, 97, 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 211, 67, 67, 67, 67, 67, 67, 240, 67, 67, 67, 67, 67, 67, 67, 1444, 67, 67, 67, 67, 67, 67, 67, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 67, 67, 268, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 290, 97, 97, 97, 305, 97, 97, 319, 97, 97, 97, 330, 97, 97, 18, 640, 139621, 0, 641, 0, 0, 0, 0, 364, 0, 643, 367, 41606, 97, 97, 348, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 395, 45, 45, 45, 400, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 45, 972, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 745, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 1086, 25403, 1090, 66365, 1094, 0, 0, 97, 843, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 1121, 97, 97, 97, 97, 1126, 97, 97, 97, 97, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1400, 45, 67, 67, 67, 1011, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 1304, 0, 0, 0, 1190, 45, 45, 1193, 1194, 45, 45, 45, 45, 45, 1199, 45, 1201, 45, 45, 45, 45, 1911, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 67, 67, 45, 1205, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1217, 45, 45, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 1229, 45, 45, 45, 1388, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1574, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 1254, 67, 67, 67, 67, 67, 1259, 67, 1261, 67, 67, 67, 67, 1265, 67, 67, 67, 67, 67, 67, 1708, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 1289, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 1087, 25403, 1091, 66365, 1095, 0, 0, 97, 97, 97, 97, 1339, 97, 1341, 97, 97, 97, 97, 1345, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 573, 97, 97, 97, 97, 97, 97, 1717, 97, 0, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1329, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 97, 97, 97, 1365, 97, 97, 97, 97, 1369, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1399, 45, 45, 45, 1413, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1669, 45, 1422, 45, 45, 1425, 45, 45, 1428, 45, 1429, 67, 67, 67, 67, 67, 67, 67, 67, 1468, 67, 67, 67, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 539, 67, 67, 1475, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 97, 97, 1530, 97, 0, 45, 45, 1534, 45, 45, 45, 45, 45, 45, 45, 45, 1956, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 67, 67, 1601, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, 67, 67, 67, 1632, 97, 1634, 0, 97, 97, 97, 1640, 97, 97, 97, 1643, 97, 97, 1645, 97, 97, 97, 97, 97, 912, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1660, 1661, 45, 45, 45, 45, 1665, 1666, 45, 45, 45, 45, 45, 1670, 1692, 1693, 67, 67, 67, 67, 67, 1697, 67, 67, 67, 67, 67, 67, 67, 1702, 97, 97, 1714, 1715, 97, 97, 97, 97, 0, 1721, 1722, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, 97, 97, 1362, 1726, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 1734, 97, 97, 97, 97, 97, 848, 849, 97, 97, 97, 97, 856, 97, 97, 97, 97, 97, 354, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 45, 45, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1681, 45, 0, 1846, 97, 97, 97, 97, 97, 97, 45, 45, 1854, 45, 45, 45, 45, 1859, 67, 67, 67, 1879, 67, 67, 97, 97, 1884, 97, 97, 0, 0, 0, 97, 97, 97, 1105, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 1347, 97, 1892, 97, 0, 0, 0, 97, 97, 97, 1900, 97, 97, 45, 45, 45, 45, 45, 997, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1002, 45, 45, 1005, 1006, 45, 67, 67, 67, 67, 67, 1926, 67, 67, 1928, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1737, 97, 0, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1944, 97, 97, 1946, 45, 45, 45, 1544, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 190, 45, 45, 45, 152, 155, 45, 163, 45, 45, 177, 179, 182, 45, 45, 45, 193, 197, 45, 45, 45, 1672, 45, 45, 45, 45, 45, 1677, 45, 1679, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 67, 260, 264, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 295, 299, 302, 97, 310, 97, 97, 324, 326, 329, 97, 97, 97, 0, 97, 97, 1639, 0, 1641, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 97, 97, 97, 1523, 97, 97, 97, 97, 97, 97, 97, 97, 1719, 97, 97, 97, 97, 97, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 97, 97, 312, 97, 97, 97, 97, 97, 97, 97, 97, 1123, 97, 97, 97, 97, 97, 97, 97, 340, 344, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 373, 375, 419, 45, 45, 45, 45, 45, 45, 45, 45, 45, 428, 45, 45, 435, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1410, 45, 45, 45, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 67, 67, 67, 67, 1969, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 2064, 2065, 0, 2066, 45, 521, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 465, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1933, 0, 97, 97, 97, 602, 97, 97, 97, 97, 97, 97, 97, 97, 97, 611, 97, 97, 18, 640, 139621, 358, 641, 0, 0, 0, 0, 364, 0, 0, 367, 0, 618, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 97, 97, 881, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 569, 97, 97, 97, 97, 97, 369, 0, 45, 652, 45, 45, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1432, 67, 67, 67, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 67, 0, 1305, 0, 1311, 0, 1317, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 1724, 97, 97, 97, 777, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 535, 67, 67, 67, 67, 67, 67, 67, 814, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 837, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, 97, 97, 97, 97, 0, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1168, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 97, 97, 0, 1637, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1801, 45, 45, 97, 875, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1151, 1152, 97, 97, 97, 67, 67, 67, 1040, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 790, 67, 67, 67, 1180, 0, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 200, 45, 45, 67, 67, 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 806, 67, 67, 67, 0, 0, 0, 1481, 0, 1094, 0, 0, 97, 1483, 97, 97, 97, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 1633, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1381, 0, 0, 45, 45, 45, 45, 97, 97, 1727, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 636, 45, 45, 1760, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 67, 67, 1299, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1616, 97, 97, 1803, 45, 45, 45, 45, 1807, 45, 45, 45, 45, 45, 1813, 45, 45, 45, 67, 67, 1684, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 822, 67, 67, 37689, 544, 67, 67, 1818, 67, 67, 67, 67, 1822, 67, 67, 67, 67, 67, 1828, 67, 67, 67, 67, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2012, 2013, 45, 45, 67, 67, 67, 2018, 2019, 67, 67, 97, 67, 97, 97, 97, 1833, 97, 97, 0, 0, 97, 97, 1840, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 1733, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 1849, 97, 97, 97, 45, 45, 45, 45, 45, 1857, 45, 45, 45, 1910, 45, 1912, 45, 45, 1914, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 67, 1020, 67, 45, 1861, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1446, 67, 67, 67, 67, 67, 1876, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1890, 97, 97, 97, 97, 97, 1134, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 97, 97, 97, 580, 1935, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1906, 45, 67, 67, 67, 67, 2048, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 931, 45, 45, 45, 45, 45, 45, 1674, 45, 1676, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1871, 67, 67, 67, 67, 0, 97, 97, 45, 67, 0, 97, 2060, 2061, 0, 2063, 45, 67, 0, 97, 45, 45, 156, 45, 45, 45, 45, 45, 45, 45, 45, 45, 192, 45, 45, 45, 45, 1673, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 429, 45, 45, 45, 45, 67, 67, 67, 269, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 349, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 374, 45, 45, 67, 67, 213, 217, 67, 67, 67, 67, 67, 242, 67, 247, 67, 253, 45, 45, 698, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 399, 45, 45, 0, 0, 0, 0, 925, 41606, 0, 929, 0, 0, 45, 45, 45, 45, 45, 45, 1391, 45, 45, 1395, 45, 45, 45, 45, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 436, 45, 67, 67, 67, 67, 1041, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1776, 67, 67, 97, 97, 97, 1099, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 888, 97, 97, 97, 1131, 97, 97, 97, 97, 1135, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 97, 97, 883, 97, 97, 97, 97, 97, 97, 1310, 0, 0, 0, 1316, 0, 0, 0, 0, 1100, 0, 0, 0, 97, 97, 97, 97, 97, 1107, 97, 97, 97, 97, 97, 97, 97, 97, 1343, 97, 97, 97, 97, 97, 97, 1348, 0, 0, 1317, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 45, 1804, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1868, 67, 1870, 67, 67, 67, 67, 67, 1817, 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 823, 67, 37689, 544, 67, 97, 1832, 97, 97, 1834, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 1732, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1177, 0, 0, 925, 0, 0, 0, 0, 97, 97, 97, 97, 0, 0, 1941, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1991, 1992, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1998, 134, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 941, 45, 45, 944, 45, 45, 45, 45, 45, 45, 952, 45, 45, 207, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 67, 67, 67, 37689, 544, 369, 650, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1682, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 835, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1725, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 1036, 67, 67, 67, 265, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 296, 97, 97, 97, 97, 314, 97, 97, 97, 97, 332, 334, 97, 97, 97, 97, 97, 1146, 1147, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 97, 97, 345, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 372, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 45, 45, 404, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 45, 440, 45, 45, 45, 45, 45, 45, 45, 45, 451, 452, 45, 45, 45, 67, 1683, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 67, 67, 490, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1447, 67, 67, 1450, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 537, 538, 67, 67, 67, 67, 67, 506, 67, 67, 508, 67, 67, 511, 67, 67, 67, 67, 0, 1476, 0, 0, 0, 0, 0, 1478, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1484, 97, 97, 97, 97, 97, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1499, 97, 97, 97, 97, 97, 97, 97, 97, 97, 587, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 97, 97, 97, 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 634, 635, 97, 97, 97, 97, 97, 1160, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, 97, 97, 97, 97, 369, 0, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 1001, 45, 45, 45, 45, 45, 45, 45, 45, 715, 45, 45, 45, 720, 45, 45, 45, 45, 45, 45, 45, 45, 728, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 97, 97, 97, 97, 840, 97, 97, 97, 97, 97, 1174, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 97, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 680, 45, 968, 45, 970, 45, 973, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 962, 45, 45, 45, 45, 45, 979, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 688, 45, 45, 45, 45, 45, 45, 45, 1007, 1008, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 1038, 67, 67, 67, 67, 67, 67, 1044, 67, 1046, 67, 1049, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 808, 67, 67, 0, 0, 0, 1102, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1371, 97, 97, 97, 97, 97, 97, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 1138, 97, 1140, 97, 1143, 97, 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 45, 1191, 45, 45, 45, 45, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 991, 45, 67, 67, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1048, 67, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 97, 1386, 45, 1387, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 455, 45, 457, 45, 45, 1424, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1433, 67, 1434, 67, 67, 67, 67, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 1593, 67, 67, 45, 45, 1805, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1814, 45, 45, 1816, 67, 67, 67, 67, 1820, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1829, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 821, 67, 67, 67, 37689, 544, 67, 1831, 97, 97, 97, 97, 1835, 0, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 97, 97, 853, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1850, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 961, 45, 45, 45, 45, 965, 45, 967, 1907, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1920, 0, 1936, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 28672, 97, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2054, 97, 97, 291, 97, 97, 97, 97, 97, 97, 320, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 926, 1179, 0, 45, 377, 45, 45, 45, 381, 45, 45, 392, 45, 45, 396, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 45, 45, 45, 67, 67, 67, 67, 463, 67, 67, 67, 467, 67, 67, 478, 67, 67, 482, 67, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 1472, 67, 502, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1460, 67, 97, 97, 97, 97, 560, 97, 97, 97, 564, 97, 97, 575, 97, 97, 579, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 930, 97, 599, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 872, 97, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1758, 0, 362, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 934, 45, 45, 45, 164, 168, 174, 178, 45, 45, 45, 45, 45, 194, 45, 45, 45, 165, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 45, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1060, 67, 67, 67, 67, 67, 67, 1052, 1053, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1063, 97, 1157, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1167, 97, 97, 97, 97, 97, 1379, 97, 97, 97, 0, 0, 0, 45, 1383, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 1812, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1471, 67, 45, 1402, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 67, 1462, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 97, 1517, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 1636, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 1705, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1842, 0, 0, 1779, 97, 97, 97, 1782, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1789, 97, 97, 0, 0, 0, 97, 1847, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1675, 45, 45, 45, 45, 45, 45, 45, 45, 737, 738, 67, 740, 67, 741, 67, 743, 67, 67, 67, 67, 67, 67, 1968, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 45, 67, 0, 97, 45, 67, 2062, 97, 45, 67, 0, 97, 45, 67, 67, 97, 97, 2001, 97, 0, 0, 2004, 97, 97, 0, 97, 97, 97, 97, 1797, 97, 97, 97, 97, 97, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 292, 97, 97, 97, 97, 311, 315, 321, 325, 97, 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1330, 97, 97, 1333, 1334, 97, 341, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 363, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 416, 45, 376, 45, 45, 45, 45, 382, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 45, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 414, 45, 45, 45, 418, 67, 67, 67, 462, 67, 67, 67, 67, 468, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 1604, 67, 67, 67, 67, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 500, 67, 67, 67, 67, 67, 1067, 67, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 274, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 504, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 517, 519, 541, 67, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 554, 97, 97, 97, 559, 97, 97, 97, 97, 565, 97, 97, 97, 97, 97, 97, 97, 1718, 0, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 906, 97, 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 597, 97, 97, 97, 97, 97, 1520, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 1656, 45, 45, 45, 97, 97, 601, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 614, 616, 638, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 661, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1815, 45, 67, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 678, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 977, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 697, 67, 67, 748, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1274, 67, 67, 67, 67, 67, 67, 67, 67, 765, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 67, 780, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1777, 67, 97, 97, 97, 97, 97, 97, 846, 97, 97, 97, 97, 852, 97, 97, 97, 97, 97, 97, 97, 1742, 45, 45, 45, 45, 45, 45, 45, 1747, 97, 97, 97, 863, 97, 97, 97, 97, 867, 97, 97, 97, 97, 97, 97, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 1178, 925, 0, 1179, 0, 97, 97, 97, 878, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 954, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 963, 45, 45, 966, 45, 45, 157, 45, 45, 171, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 1022, 67, 67, 1026, 67, 67, 67, 1030, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 1605, 67, 67, 67, 1608, 67, 67, 67, 1039, 67, 67, 1042, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 67, 0, 1100, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 97, 97, 97, 97, 1116, 97, 97, 1120, 97, 97, 97, 1124, 97, 97, 97, 97, 97, 97, 562, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1133, 97, 97, 1136, 97, 97, 97, 97, 97, 97, 97, 97, 915, 917, 97, 97, 97, 97, 97, 0, 97, 1170, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 0, 0, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1993, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 1278, 67, 0, 0, 0, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1189, 1204, 45, 45, 45, 1207, 45, 45, 1209, 45, 1210, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, 45, 45, 45, 45, 45, 689, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 805, 67, 67, 67, 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1249, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1300, 0, 0, 0, 0, 0, 1267, 67, 67, 1269, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, 97, 1349, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 97, 0, 1980, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 677, 45, 45, 45, 45, 1401, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 953, 67, 1437, 67, 1440, 67, 67, 67, 67, 1445, 67, 67, 67, 1448, 67, 67, 67, 67, 67, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 67, 67, 67, 1473, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, 834, 97, 97, 97, 97, 1490, 97, 1493, 97, 97, 97, 97, 1498, 97, 97, 97, 1501, 97, 97, 97, 0, 97, 1638, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 916, 97, 97, 97, 97, 97, 97, 0, 1528, 97, 97, 97, 0, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1932, 0, 0, 1555, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1567, 45, 45, 158, 45, 45, 172, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 67, 212, 67, 67, 67, 67, 231, 235, 241, 245, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 472, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1651, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 45, 45, 67, 1704, 67, 1706, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1841, 97, 0, 1844, 97, 97, 97, 97, 1716, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1385, 1748, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1757, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 97, 97, 1780, 97, 97, 97, 0, 0, 1786, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1730, 0, 97, 97, 97, 97, 97, 1736, 97, 1738, 67, 97, 97, 97, 97, 97, 97, 0, 1838, 97, 97, 97, 97, 97, 0, 0, 97, 1729, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 1165, 97, 97, 97, 45, 1950, 45, 45, 45, 45, 45, 45, 45, 45, 1958, 67, 67, 67, 1962, 67, 67, 67, 67, 67, 1246, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 1710, 97, 97, 97, 1999, 67, 97, 97, 97, 97, 0, 2003, 97, 97, 97, 0, 97, 97, 2008, 2009, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 2052, 67, 2053, 0, 0, 0, 0, 925, 41606, 0, 0, 930, 0, 45, 45, 45, 45, 45, 45, 1392, 45, 1394, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1563, 1565, 45, 45, 45, 1568, 0, 97, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 28672, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 679, 45, 45, 67, 67, 266, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 346, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 362, 0, 364, 0, 367, 41098, 369, 140, 371, 45, 45, 45, 379, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 449, 45, 45, 45, 45, 45, 67, 67, 542, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 97, 0, 1794, 1795, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 97, 639, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 45, 731, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 251, 67, 67, 67, 67, 67, 798, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1073, 67, 67, 67, 860, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 873, 0, 0, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 921, 97, 0, 67, 67, 67, 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1250, 67, 67, 1253, 0, 0, 1312, 0, 0, 0, 1318, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 97, 1155, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1141, 97, 97, 67, 67, 1439, 67, 1441, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 67, 97, 97, 1492, 97, 1494, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 97, 67, 67, 67, 2037, 67, 97, 0, 0, 97, 97, 97, 2043, 97, 45, 45, 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 232, 67, 67, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1975, 0, 0, 97, 874, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1142, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 65, 86, 117, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 63, 84, 115, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 61, 82, 113, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 59, 80, 111, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 57, 78, 109, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 55, 76, 107, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 53, 74, 105, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 51, 72, 103, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 49, 70, 101, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 47, 68, 99, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 45, 67, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 213085, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 0, 0, 44, 0, 0, 32863, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 41, 41, 41, 0, 0, 1138688, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 89, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 127, 127, 127, 127, 102432, 67, 262, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 342, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 360, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 45, 45, 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1292, 67, 67, 1294, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1615, 97, 97, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 66, 87, 118, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 64, 85, 116, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 62, 83, 114, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 60, 81, 112, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 58, 79, 110, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 56, 77, 108, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 54, 75, 106, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 52, 73, 104, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 50, 71, 102, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 48, 69, 100, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 46, 67, 98, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 233472, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 69724, 53264, 18, 18, 49172, 0, 57366, 262144, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 45, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 28, 139621, 359, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 1389, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 45, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1449, 67, 67, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1154, 97, 0, 0, 0, 0, 925, 41606, 927, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, 67, 67, 67, 67, 45, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 951, 45, 45, 45, 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 45, 0, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1488, 67, 67, 267, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 347, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 361, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 734, 45, 45, 45, 67, 67, 67, 67, 67, 742, 67, 67, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1214, 45, 45, 1130, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1361, 97, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1552, 45, 45, 0, 0, 0, 0, 2220032, 0, 0, 1130496, 0, 0, 0, 0, 2170880, 2171020, 2170880, 2170880, 18, 0, 0, 131072, 0, 0, 0, 90112, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1485, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1390, 45, 1393, 45, 45, 45, 45, 1398, 45, 45, 45, 2170880, 2171167, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2576384, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 0, 0, 0, 0, 0, 0, 2183168, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2721252, 2744320, 2170880, 2170880, 2170880, 2834432, 2840040, 2170880, 2908160, 2170880, 2170880, 2936832, 2170880, 2170880, 2985984, 2170880, 2994176, 2170880, 2170880, 3014656, 2170880, 3059712, 3076096, 3088384, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 0, 2220032, 0, 0, 0, 1142784, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3215360, 2215936, 2215936, 2215936, 2215936, 2215936, 2437120, 2215936, 2215936, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 543, 0, 545, 0, 0, 2183168, 0, 0, 831, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 3031040, 2170880, 3055616, 2170880, 2170880, 2170880, 2170880, 3092480, 2170880, 2170880, 3125248, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 0, 0, 0, 0, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 0, 0, 0, 65820, 65820, 0, 287, 97, 97, 97, 97, 97, 1783, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1791, 0, 0, 546, 70179, 0, 0, 0, 0, 552, 0, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 97, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 0, 0, 147456, 0, 0, 0, 0, 925, 41606, 0, 928, 0, 0, 45, 45, 45, 45, 45, 45, 998, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1562, 45, 1564, 45, 45, 45, 45, 0, 2158592, 2158592, 0, 0, 0, 0, 2232320, 2232320, 2232320, 0, 2240512, 2240512, 2240512, 2240512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2416640], r.EXPECTED = [291, 300, 304, 341, 315, 309, 305, 295, 319, 323, 327, 329, 296, 333, 337, 339, 342, 346, 350, 294, 356, 360, 312, 367, 352, 371, 363, 375, 379, 383, 387, 391, 395, 726, 399, 405, 518, 684, 405, 405, 405, 405, 808, 405, 405, 405, 512, 405, 405, 405, 431, 405, 405, 406, 405, 405, 404, 405, 405, 405, 405, 405, 405, 405, 908, 631, 410, 415, 405, 414, 419, 608, 405, 429, 602, 405, 435, 443, 405, 441, 641, 478, 405, 447, 451, 450, 456, 643, 461, 460, 762, 679, 465, 469, 741, 473, 477, 482, 486, 492, 932, 931, 523, 498, 504, 720, 405, 510, 596, 405, 516, 941, 580, 522, 929, 527, 590, 589, 897, 939, 534, 538, 547, 551, 555, 559, 563, 567, 571, 969, 575, 708, 690, 689, 579, 584, 634, 405, 594, 731, 405, 600, 882, 405, 606, 895, 786, 452, 612, 405, 615, 620, 876, 624, 628, 638, 647, 651, 655, 659, 663, 667, 676, 683, 688, 695, 694, 791, 405, 699, 437, 405, 706, 714, 405, 712, 825, 870, 405, 718, 724, 769, 768, 823, 730, 735, 745, 751, 422, 755, 759, 425, 766, 902, 810, 587, 775, 888, 887, 405, 773, 992, 405, 779, 962, 405, 785, 781, 986, 790, 795, 797, 506, 500, 499, 801, 805, 814, 820, 829, 833, 837, 841, 845, 849, 853, 857, 861, 616, 865, 869, 868, 488, 405, 874, 816, 405, 880, 738, 405, 886, 892, 543, 405, 901, 906, 913, 912, 918, 494, 541, 922, 926, 936, 945, 949, 953, 957, 530, 966, 973, 960, 702, 701, 405, 979, 981, 405, 985, 747, 405, 990, 998, 914, 405, 996, 1004, 672, 975, 974, 1014, 1002, 1008, 670, 1012, 405, 405, 405, 405, 405, 401, 1018, 1022, 1026, 1106, 1071, 1111, 1111, 1111, 1082, 1145, 1030, 1101, 1034, 1038, 1106, 1106, 1106, 1106, 1046, 1206, 1052, 1106, 1072, 1111, 1111, 1042, 1134, 1065, 1111, 1112, 1056, 1160, 1207, 1062, 1204, 1208, 1069, 1106, 1106, 1106, 1076, 1111, 1207, 1161, 1122, 1205, 1064, 1094, 1106, 1106, 1107, 1111, 1111, 1111, 1078, 1086, 1207, 1092, 1098, 1046, 1058, 1106, 1106, 1110, 1111, 1111, 1116, 1120, 1161, 1126, 1202, 1104, 1106, 1145, 1146, 1129, 1138, 1088, 1151, 1048, 1157, 1153, 1132, 1141, 1165, 1107, 1111, 1172, 1179, 1109, 1183, 1175, 1143, 1147, 1187, 1108, 1191, 1195, 1144, 1199, 1168, 1212, 1216, 1220, 1224, 1228, 1232, 1236, 1557, 1247, 1241, 1241, 1038, 1434, 1241, 1241, 1241, 1241, 1254, 1275, 1617, 1241, 1280, 1287, 1241, 1241, 1241, 1287, 1241, 2114, 1291, 1241, 1243, 1241, 2049, 1824, 2094, 2095, 1520, 1309, 1241, 1241, 1302, 1241, 1321, 1311, 1241, 1241, 1313, 1778, 1325, 1336, 1241, 1241, 1325, 1330, 1353, 1241, 1241, 1695, 1354, 1241, 1241, 1241, 1294, 1686, 1331, 1241, 1696, 1368, 1241, 1338, 1370, 1241, 1392, 1399, 1364, 2017, 1406, 2016, 1405, 1716, 1406, 1407, 1422, 1417, 1421, 1241, 1241, 1241, 1349, 1426, 1241, 1774, 1756, 1241, 1773, 1241, 1241, 1345, 1964, 1812, 1432, 1241, 1241, 1345, 1993, 1459, 1241, 1241, 1241, 1395, 1848, 1767, 1465, 1241, 1241, 1394, 1847, 1242, 1477, 1241, 1241, 1428, 1241, 1445, 1492, 1241, 1241, 1438, 1241, 1499, 1241, 1241, 1241, 1455, 1241, 1818, 1448, 1241, 1250, 1241, 2026, 1623, 1449, 1241, 1612, 1616, 1241, 1614, 1241, 1257, 1241, 1241, 1985, 1292, 1586, 1512, 1241, 1517, 2050, 1526, 1674, 1519, 1524, 1647, 2051, 1532, 1537, 1551, 1544, 1550, 1555, 1561, 1571, 1578, 1584, 1590, 1591, 1653, 1595, 1602, 1606, 1610, 1634, 1628, 1640, 1633, 1645, 1241, 1241, 1241, 1469, 1241, 1970, 1651, 1241, 1270, 1241, 1241, 1819, 1449, 1241, 1293, 1664, 1241, 1241, 1481, 1485, 1574, 1672, 1241, 1241, 1513, 1317, 1487, 1684, 1241, 1241, 1533, 1299, 1694, 1241, 1241, 1295, 1241, 1241, 1241, 1546, 1700, 1241, 1241, 1707, 1241, 1713, 1241, 1849, 1715, 1241, 1720, 1241, 1276, 1267, 1241, 1241, 2107, 1657, 1864, 1241, 1881, 1241, 1326, 1292, 1241, 1685, 1358, 1724, 1338, 1241, 1363, 1362, 1342, 1340, 1361, 1339, 1833, 1372, 1360, 1833, 1833, 1342, 1343, 1835, 1341, 1731, 1738, 1344, 1241, 1745, 1241, 1379, 1241, 1241, 2092, 1241, 1388, 1761, 1754, 1241, 1386, 1241, 1400, 1760, 1241, 1241, 1241, 1598, 1734, 1241, 1241, 1241, 1635, 1645, 1241, 1780, 1766, 1241, 1241, 1332, 1771, 1241, 1241, 1629, 2079, 1241, 1242, 1784, 1241, 1241, 1680, 1639, 2063, 1790, 1241, 1241, 1741, 1241, 1241, 1800, 1241, 1241, 1762, 1473, 1241, 1806, 1241, 1241, 1786, 1240, 1709, 1241, 1241, 1241, 1668, 1811, 1241, 1940, 1241, 1401, 1974, 1241, 1408, 1413, 1382, 1241, 1816, 1241, 1241, 1802, 2086, 1811, 1241, 1817, 1945, 1823, 2095, 2095, 2047, 2094, 2046, 2080, 1241, 1409, 1312, 1376, 2096, 2048, 1241, 1241, 1807, 1241, 1241, 1241, 2035, 1241, 1241, 1828, 1241, 2057, 2061, 1241, 1241, 1843, 1241, 2059, 1241, 1241, 1241, 1690, 1847, 1241, 1241, 1241, 1703, 2102, 1848, 1241, 1241, 1853, 1292, 1848, 1241, 2016, 1857, 1241, 2002, 1868, 1241, 1436, 1241, 1241, 1271, 1305, 1241, 1874, 1241, 1241, 1884, 2037, 1892, 1241, 1890, 1241, 1461, 1241, 1241, 1795, 1241, 1241, 1891, 1241, 1878, 1241, 1888, 1241, 1888, 1905, 1896, 2087, 1912, 1903, 1241, 1911, 1906, 1916, 1905, 2027, 1863, 1925, 2088, 1859, 1861, 1922, 1927, 1931, 1935, 1494, 1241, 1241, 1918, 1907, 1939, 1917, 1944, 1949, 1241, 1241, 1451, 1955, 1241, 1241, 1241, 1796, 1727, 2061, 1241, 1241, 1899, 1241, 1660, 1968, 1241, 1241, 1951, 1678, 1978, 1241, 1241, 1241, 1839, 1241, 1241, 1984, 1982, 1241, 1488, 1241, 1241, 1624, 1450, 1989, 1241, 1241, 1241, 1870, 1995, 1292, 1241, 1241, 1958, 1261, 1241, 1996, 1241, 1241, 1241, 2039, 2008, 1241, 1241, 1750, 2e3, 1241, 1256, 2001, 1960, 1241, 1564, 1241, 1504, 1241, 1241, 1442, 1241, 1241, 1564, 1528, 1263, 1241, 1508, 1241, 1241, 1468, 1498, 2006, 1540, 2015, 1539, 2014, 1748, 2013, 1539, 1831, 2014, 2012, 1500, 1567, 2022, 2021, 1241, 1580, 1241, 1241, 2033, 2037, 1791, 2045, 2031, 1241, 1621, 1241, 1641, 2044, 1241, 1241, 1241, 2093, 1241, 1241, 2055, 1241, 1241, 2067, 1241, 1283, 1241, 1241, 1241, 2101, 2071, 1241, 1241, 1241, 2073, 1848, 2040, 1241, 1241, 1241, 2077, 1241, 1241, 2106, 1241, 1241, 2084, 1241, 2111, 1241, 1241, 1381, 1380, 1241, 1241, 1241, 2100, 1241, 2129, 2118, 2122, 2126, 2197, 2133, 3010, 2825, 2145, 2698, 2156, 2226, 2160, 2161, 2165, 2174, 2293, 2194, 2630, 2201, 2203, 2152, 3019, 2226, 2263, 2209, 2213, 2218, 2269, 2292, 2269, 2269, 2184, 2226, 2238, 2148, 2151, 3017, 2245, 2214, 2269, 2269, 2185, 2226, 2292, 2269, 2291, 2269, 2269, 2269, 2292, 2205, 3019, 2226, 2226, 2160, 2160, 2160, 2261, 2160, 2160, 2160, 2262, 2276, 2160, 2160, 2277, 2216, 2283, 2216, 2269, 2269, 2268, 2269, 2267, 2269, 2269, 2269, 2271, 2568, 2292, 2269, 2293, 2269, 2182, 2190, 2269, 2186, 2226, 2226, 2226, 2226, 2227, 2160, 2160, 2160, 2160, 2263, 2160, 2275, 2277, 2282, 2215, 2217, 2269, 2269, 2291, 2269, 2269, 2293, 2291, 2269, 2220, 2269, 2295, 2294, 2269, 2269, 2305, 2233, 2262, 2278, 2218, 2269, 2234, 2226, 2226, 2228, 2160, 2160, 2160, 2289, 2220, 2294, 2294, 2269, 2269, 2304, 2269, 2160, 2160, 2287, 2269, 2269, 2305, 2269, 2269, 2312, 2269, 2269, 2225, 2226, 2160, 2287, 2289, 2219, 2304, 2295, 2314, 2234, 2226, 2314, 2269, 2226, 2226, 2160, 2288, 2219, 2222, 2304, 2296, 2269, 2224, 2160, 2160, 2269, 2302, 2294, 2314, 2224, 2226, 2288, 2220, 2294, 2269, 2290, 2269, 2269, 2293, 2269, 2269, 2269, 2269, 2270, 2221, 2313, 2225, 2227, 2160, 2300, 2269, 2225, 2261, 2309, 2234, 2229, 2223, 2318, 2318, 2318, 2328, 2336, 2340, 2344, 2350, 2637, 2712, 2358, 2362, 2372, 2135, 2378, 2398, 2135, 2135, 2135, 2135, 2136, 2417, 2241, 2135, 2378, 2135, 2135, 2980, 2984, 2135, 3006, 2135, 2135, 2135, 2945, 2931, 2425, 2400, 2135, 2135, 2135, 2954, 2135, 2481, 2433, 2135, 2135, 2988, 2824, 2135, 2135, 2482, 2434, 2135, 2135, 2440, 2445, 2452, 2135, 2135, 2998, 3002, 2961, 2441, 2446, 2453, 2463, 2974, 2135, 2135, 2135, 2140, 2642, 2709, 2459, 2470, 2465, 2135, 2135, 3005, 2135, 2135, 2987, 2823, 2458, 2469, 2464, 2975, 2135, 2135, 2135, 2353, 2488, 2447, 2324, 2974, 2135, 2409, 2459, 2448, 2135, 2961, 2487, 2446, 2476, 2323, 2973, 2135, 2135, 2135, 2354, 2476, 2974, 2135, 2135, 2135, 2957, 2135, 2135, 2960, 2135, 2135, 2135, 2363, 2409, 2459, 2474, 2465, 2487, 2571, 2973, 2135, 2135, 2168, 2973, 2135, 2135, 2135, 2959, 2135, 2135, 2135, 2506, 2135, 2957, 2488, 2170, 2135, 2135, 2135, 2960, 2135, 2818, 2493, 2135, 2135, 3033, 2135, 2135, 2135, 2934, 2819, 2494, 2135, 2135, 2135, 2976, 2780, 2499, 2135, 2135, 2135, 3e3, 2968, 2135, 2935, 2135, 2135, 2135, 2364, 2507, 2135, 2135, 2934, 2135, 2135, 2780, 2492, 2507, 2135, 2135, 2506, 2780, 2135, 2135, 2782, 2780, 2135, 2782, 2135, 2783, 2374, 2514, 2135, 2135, 2135, 3007, 2530, 2974, 2135, 2135, 2135, 3008, 2135, 2135, 2134, 2135, 2526, 2531, 2975, 2135, 2135, 3042, 2581, 2575, 2956, 2135, 2135, 2135, 2394, 2135, 2508, 2535, 2840, 2844, 2495, 2135, 2135, 2136, 2684, 2537, 2842, 2846, 2135, 2136, 2561, 2581, 2551, 2536, 2841, 2845, 2975, 3043, 2582, 2843, 2555, 2135, 3040, 3044, 2538, 2844, 2975, 2135, 2135, 2253, 2644, 2672, 2542, 2554, 2135, 2135, 2346, 2873, 2551, 2555, 2135, 2135, 2135, 2381, 2559, 2565, 2538, 2553, 2135, 2560, 2914, 2576, 2590, 2135, 2135, 2135, 2408, 2136, 2596, 2624, 2135, 2135, 2135, 2409, 2135, 2618, 2597, 3008, 2135, 2135, 2380, 2956, 2601, 2135, 2135, 2135, 2410, 2620, 2624, 2135, 2136, 2383, 2135, 2135, 2783, 2623, 2135, 2135, 2393, 2888, 2136, 2621, 3008, 2135, 2618, 2618, 2622, 2135, 2135, 2405, 2414, 2619, 2384, 2624, 2135, 2136, 2950, 2135, 2138, 2135, 2139, 2135, 2604, 2623, 2135, 2140, 2878, 2665, 2957, 2622, 2135, 2135, 2428, 2762, 2606, 2612, 2135, 2135, 2501, 2586, 2604, 3038, 2135, 2604, 3036, 2387, 2958, 2386, 2135, 2141, 2135, 2421, 2387, 2385, 2135, 2385, 2384, 2384, 2135, 2386, 2628, 2384, 2135, 2135, 2501, 2596, 2591, 2135, 2135, 2135, 2400, 2135, 2634, 2135, 2135, 2559, 2580, 2575, 2648, 2135, 2135, 2135, 2429, 2649, 2135, 2135, 2135, 2435, 2654, 2658, 2135, 2135, 2135, 2436, 2649, 2178, 2659, 2135, 2135, 2595, 2601, 2669, 2677, 2135, 2135, 2616, 2957, 2879, 2665, 2691, 2135, 2363, 2367, 2900, 2878, 2664, 2690, 2975, 2877, 2643, 2670, 2974, 2671, 2975, 2135, 2135, 2619, 2608, 2669, 2673, 2135, 2135, 2653, 2177, 2672, 2135, 2135, 2135, 2486, 2168, 2251, 2255, 2695, 2974, 2709, 2135, 2135, 2135, 2487, 2169, 2399, 2716, 2975, 2135, 2363, 2770, 2776, 2640, 2717, 2135, 2135, 2729, 2135, 2135, 2641, 2718, 2135, 2135, 2135, 2505, 2135, 2640, 2257, 2974, 2135, 2727, 2975, 2135, 2365, 2332, 2895, 2957, 2135, 2959, 2135, 2365, 2749, 2754, 2959, 2958, 2958, 2135, 2380, 2793, 2799, 2135, 2735, 2738, 2135, 2381, 2135, 2135, 2940, 2974, 2135, 2744, 2135, 2135, 2739, 2519, 2976, 2745, 2135, 2135, 2135, 2509, 2755, 2135, 2135, 2135, 2510, 2772, 2778, 2135, 2135, 2740, 2520, 2135, 2771, 2777, 2135, 2135, 2759, 2750, 2792, 2798, 2135, 2135, 2781, 2392, 2779, 2135, 2135, 2135, 2521, 2135, 2679, 2248, 2135, 2135, 2681, 2480, 2135, 2135, 2786, 3e3, 2135, 2679, 2683, 2135, 2135, 2416, 2135, 2135, 2135, 2525, 2135, 2730, 2135, 2135, 2135, 2560, 2581, 2135, 2805, 2135, 2135, 2804, 2962, 2832, 2974, 2135, 2382, 2135, 2135, 2958, 2135, 2135, 2960, 2135, 2829, 2833, 2975, 2961, 2965, 2969, 2973, 2968, 2972, 2135, 2135, 2135, 2641, 2135, 2515, 2966, 2970, 2851, 2478, 2135, 2135, 2808, 2135, 2809, 2135, 2135, 2135, 2722, 2852, 2479, 2135, 2135, 2815, 2135, 2135, 2766, 2853, 2480, 2135, 2857, 2479, 2135, 2388, 2723, 2135, 2364, 2331, 2894, 2858, 2480, 2135, 2135, 2850, 2478, 2135, 2135, 2135, 2806, 2864, 2135, 2399, 2256, 2974, 2865, 2135, 2135, 2862, 2135, 2135, 2135, 2685, 2807, 2865, 2135, 2135, 2807, 2863, 2135, 2135, 2135, 2686, 2884, 2807, 2135, 2809, 2807, 2135, 2135, 2807, 2806, 2705, 2810, 2808, 2700, 2869, 2702, 2702, 2702, 2704, 2883, 2135, 2135, 2135, 2730, 2884, 2135, 2135, 2135, 2731, 2321, 2546, 2135, 2135, 2876, 2255, 2889, 2322, 2547, 2135, 2401, 2135, 2135, 2135, 2949, 2367, 2893, 2544, 2973, 2906, 2973, 2135, 2135, 2877, 2663, 2368, 2901, 2907, 2974, 2366, 2899, 2905, 2972, 2920, 2974, 2135, 2135, 2911, 2900, 2920, 2363, 2913, 2918, 2465, 2941, 2975, 2135, 2135, 2924, 2928, 2974, 2945, 2931, 2135, 2135, 2135, 2765, 2136, 2955, 2135, 2135, 2939, 2931, 2380, 2135, 2135, 2380, 2135, 2135, 2135, 2780, 2507, 2137, 2135, 2137, 2135, 2139, 2135, 2806, 2810, 2135, 2135, 2135, 2992, 2135, 2135, 2962, 2966, 2970, 2974, 2135, 2135, 2787, 3014, 2135, 2521, 2993, 2135, 2135, 2135, 2803, 2135, 2135, 2135, 2618, 2607, 2997, 3001, 2135, 2135, 2963, 2967, 2971, 2975, 2135, 2135, 2791, 2797, 2135, 3009, 2999, 3003, 2787, 3001, 2135, 2135, 2964, 2968, 2785, 2999, 3003, 2135, 2135, 2135, 2804, 2785, 2999, 3004, 2135, 2135, 2135, 2807, 2135, 2135, 3023, 2135, 2135, 2135, 2811, 2135, 2135, 3027, 2135, 2135, 2135, 2837, 2968, 3028, 2135, 2135, 2135, 2875, 2135, 2784, 3029, 2135, 2408, 2457, 2446, 0, 14, 0, -2120220672, 1610612736, -2074083328, -2002780160, -2111830528, 1073872896, 1342177280, 1075807216, 4096, 16384, 2048, 8192, 0, 8192, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, -2145386496, 8388608, 1073741824, 0, 2147483648, 2147483648, 2097152, 2097152, 2097152, 536870912, 0, 0, 134217728, 33554432, 1536, 268435456, 268435456, 268435456, 268435456, 128, 256, 32, 0, 65536, 131072, 524288, 16777216, 268435456, 2147483648, 1572864, 1835008, 640, 32768, 65536, 262144, 1048576, 2097152, 196608, 196800, 196608, 196608, 0, 131072, 131072, 131072, 196608, 196624, 196608, 196624, 196608, 196608, 128, 4096, 16384, 16384, 2048, 0, 4, 0, 0, 2147483648, 2097152, 0, 1024, 32, 32, 0, 65536, 1572864, 1048576, 32768, 32768, 32768, 32768, 196608, 196608, 196608, 64, 64, 196608, 196608, 131072, 131072, 131072, 131072, 268435456, 268435456, 64, 196736, 196608, 196608, 196608, 131072, 196608, 196608, 16384, 4, 4, 4, 2, 32, 32, 65536, 1048576, 12582912, 1073741824, 0, 0, 2, 8, 16, 96, 2048, 32768, 0, 0, 131072, 268435456, 268435456, 268435456, 256, 256, 196608, 196672, 196608, 196608, 196608, 196608, 4, 0, 256, 256, 256, 256, 32, 32, 32768, 32, 32, 32, 32, 32768, 268435456, 268435456, 268435456, 196608, 196608, 196608, 196624, 196608, 196608, 196608, 16, 16, 16, 268435456, 196608, 64, 64, 64, 196608, 196608, 196608, 196672, 268435456, 64, 64, 196608, 196608, 16, 196608, 196608, 196608, 268435456, 64, 196608, 131072, 262144, 4194304, 25165824, 33554432, 134217728, 268435456, 268435456, 196608, 262152, 8, 256, 512, 3072, 16384, 200, -1073741816, 8392713, 40, 8392718, 520, 807404072, 40, 520, 100663304, 0, 0, -540651761, -540651761, 257589048, 0, 262144, 0, 0, 3, 8, 256, 0, 4, 6, 4100, 8388612, 0, 0, 0, 3, 4, 8, 256, 512, 1024, 0, 2097152, 0, 0, -537854471, -537854471, 0, 100663296, 0, 0, 1, 2, 0, 0, 0, 16384, 0, 0, 0, 96, 14336, 0, 0, 0, 7, 8, 234881024, 0, 0, 0, 8, 0, 0, 0, 0, 262144, 0, 0, 16, 64, 384, 512, 0, 1, 1, 0, 12582912, 0, 0, 0, 0, 33554432, 67108864, -606084144, -606084144, -606084138, 0, 0, 28, 32, 768, 1966080, -608174080, 0, 0, 0, 14, 35056, 16, 64, 896, 24576, 98304, 98304, 131072, 262144, 524288, 1048576, 4194304, 25165824, 1048576, 62914560, 134217728, -805306368, 0, 384, 512, 16384, 65536, 131072, 262144, 29360128, 33554432, 134217728, 268435456, 1073741824, 2147483648, 262144, 524288, 1048576, 29360128, 33554432, 524288, 1048576, 16777216, 33554432, 134217728, 268435456, 1073741824, 0, 0, 0, 123856, 1966080, 0, 64, 384, 16384, 65536, 131072, 16384, 65536, 524288, 268435456, 2147483648, 0, 0, 524288, 2147483648, 0, 0, 1, 16, 0, 256, 524288, 0, 0, 0, 25, 96, 128, -537854471, 0, 0, 0, 32, 7404800, -545259520, 0, 0, 0, 60, 0, 249, 64768, 1048576, 6291456, 6291456, 25165824, 100663296, 402653184, 1073741824, 96, 128, 1280, 2048, 4096, 57344, 6291456, 57344, 6291456, 8388608, 16777216, 33554432, 201326592, 1342177280, 2147483648, 0, 57344, 6291456, 8388608, 100663296, 134217728, 2147483648, 0, 0, 0, 1, 8, 16, 64, 128, 64, 128, 256, 1024, 131072, 131072, 131072, 262144, 524288, 16777216, 57344, 6291456, 8388608, 67108864, 134217728, 64, 256, 1024, 2048, 4096, 57344, 64, 256, 0, 24576, 32768, 6291456, 67108864, 134217728, 0, 1, 64, 256, 24576, 32768, 4194304, 32768, 4194304, 67108864, 0, 0, 64, 256, 0, 0, 24576, 32768, 0, 16384, 4194304, 67108864, 64, 16384, 0, 0, 1, 64, 256, 16384, 4194304, 67108864, 0, 0, 0, 16384, 0, 16384, 16384, 0, -470447874, -470447874, -470447874, 0, 0, 128, 0, 0, 8, 96, 2048, 32768, 262144, 8388608, 35056, 1376256, -471859200, 0, 0, 14, 16, 224, 2048, 32768, 2097152, 4194304, 8388608, -486539264, 0, 96, 128, 2048, 32768, 262144, 2097152, 262144, 2097152, 8388608, 33554432, 536870912, 1073741824, 2147483648, 0, 1610612736, 2147483648, 0, 0, 1, 524288, 1048576, 12582912, 0, 0, 0, 151311, 264503296, 2097152, 8388608, 33554432, 1610612736, 2147483648, 262144, 8388608, 33554432, 536870912, 67108864, 4194304, 0, 4194304, 0, 4194304, 4194304, 0, 0, 524288, 8388608, 536870912, 1073741824, 2147483648, 1, 4097, 8388609, 96, 2048, 32768, 1073741824, 2147483648, 0, 96, 2048, 2147483648, 0, 0, 96, 2048, 0, 0, 1, 12582912, 0, 0, 0, 0, 1641895695, 1641895695, 0, 0, 0, 249, 7404800, 15, 87808, 1835008, 1639972864, 0, 768, 5120, 16384, 65536, 1835008, 1835008, 12582912, 16777216, 1610612736, 0, 3, 4, 8, 768, 4096, 65536, 0, 0, 256, 512, 786432, 8, 256, 512, 4096, 16384, 1835008, 16384, 1835008, 12582912, 1610612736, 0, 0, 0, 256, 0, 0, 0, 4, 8, 16, 32, 1, 2, 8, 256, 16384, 524288, 16384, 524288, 1048576, 12582912, 1610612736, 0, 0, 0, 8388608, 0, 0, 0, 524288, 4194304, 0, 0, 0, 8388608, -548662288, -548662288, -548662288, 0, 0, 256, 16384, 65536, 520093696, -1073741824, 0, 0, 0, 16777216, 0, 16, 32, 960, 4096, 4980736, 520093696, 1073741824, 0, 32, 896, 4096, 57344, 1048576, 6291456, 8388608, 16777216, 100663296, 134217728, 268435456, 2147483648, 0, 512, 786432, 4194304, 33554432, 134217728, 268435456, 0, 786432, 4194304, 134217728, 268435456, 0, 524288, 4194304, 268435456, 0, 0, 0, 0, 0, 4194304, 4194304, -540651761, 0, 0, 0, 2, 4, 8, 16, 96, 128, 264503296, -805306368, 0, 0, 0, 8, 256, 512, 19456, 131072, 3072, 16384, 131072, 262144, 8388608, 16777216, 512, 1024, 2048, 16384, 131072, 262144, 131072, 262144, 8388608, 33554432, 201326592, 268435456, 0, 3, 4, 256, 1024, 2048, 57344, 16384, 131072, 8388608, 33554432, 134217728, 268435456, 0, 3, 256, 1024, 16384, 131072, 33554432, 134217728, 1073741824, 2147483648, 0, 0, 256, 524288, 2147483648, 0, 3, 256, 33554432, 134217728, 1073741824, 0, 1, 2, 33554432, 1, 2, 134217728, 1073741824, 0, 1, 2, 134217728, 0, 0, 0, 64, 0, 0, 0, 16, 32, 896, 4096, 786432, 4194304, 16777216, 33554432, 201326592, 268435456, 1073741824, 2147483648, 0, 0, 0, 15, 0, 4980736, 4980736, 4980736, 70460, 70460, 3478332, 0, 0, 1008, 4984832, 520093696, 60, 4864, 65536, 0, 0, 0, 12, 16, 32, 256, 512, 4096, 65536, 0, 0, 0, 67108864, 0, 0, 0, 12, 0, 256, 512, 65536, 0, 0, 1024, 512, 131072, 131072, 4, 16, 32, 65536, 0, 4, 16, 32, 0, 0, 0, 4, 16, 0, 0, 16384, 67108864, 0, 0, 1, 24, 96, 128, 256, 1024], r.TOKEN = ["(0)", "JSONChar", "JSONCharRef", "JSONPredefinedCharRef", "ModuleDecl", "Annotation", "OptionDecl", "Operator", "Variable", "Tag", "EndTag", "PragmaContents", "DirCommentContents", "DirPIContents", "CDataSectionContents", "AttrTest", "Wildcard", "EQName", "IntegerLiteral", "DecimalLiteral", "DoubleLiteral", "PredefinedEntityRef", "'\"\"'", "EscapeApos", "AposChar", "ElementContentChar", "QuotAttrContentChar", "AposAttrContentChar", "NCName", "QName", "S", "CharRef", "CommentContents", "DocTag", "DocCommentContents", "EOF", "'!'", "'\"'", "'#'", "'#)'", "'$$'", "''''", "'('", "'(#'", "'(:'", "'(:~'", "')'", "'*'", "'*'", "','", "'-->'", "'.'", "'/'", "'/>'", "':'", "':)'", "';'", "'<!--'", "'<![CDATA['", "'<?'", "'='", "'>'", "'?'", "'?>'", "'NaN'", "'['", "']'", "']]>'", "'after'", "'all'", "'allowing'", "'ancestor'", "'ancestor-or-self'", "'and'", "'any'", "'append'", "'array'", "'as'", "'ascending'", "'at'", "'attribute'", "'base-uri'", "'before'", "'boundary-space'", "'break'", "'by'", "'case'", "'cast'", "'castable'", "'catch'", "'check'", "'child'", "'collation'", "'collection'", "'comment'", "'constraint'", "'construction'", "'contains'", "'content'", "'context'", "'continue'", "'copy'", "'copy-namespaces'", "'count'", "'decimal-format'", "'decimal-separator'", "'declare'", "'default'", "'delete'", "'descendant'", "'descendant-or-self'", "'descending'", "'diacritics'", "'different'", "'digit'", "'distance'", "'div'", "'document'", "'document-node'", "'element'", "'else'", "'empty'", "'empty-sequence'", "'encoding'", "'end'", "'entire'", "'eq'", "'every'", "'exactly'", "'except'", "'exit'", "'external'", "'first'", "'following'", "'following-sibling'", "'for'", "'foreach'", "'foreign'", "'from'", "'ft-option'", "'ftand'", "'ftnot'", "'ftor'", "'function'", "'ge'", "'greatest'", "'group'", "'grouping-separator'", "'gt'", "'idiv'", "'if'", "'import'", "'in'", "'index'", "'infinity'", "'inherit'", "'insensitive'", "'insert'", "'instance'", "'integrity'", "'intersect'", "'into'", "'is'", "'item'", "'json'", "'json-item'", "'key'", "'language'", "'last'", "'lax'", "'le'", "'least'", "'let'", "'levels'", "'loop'", "'lowercase'", "'lt'", "'minus-sign'", "'mod'", "'modify'", "'module'", "'most'", "'namespace'", "'namespace-node'", "'ne'", "'next'", "'no'", "'no-inherit'", "'no-preserve'", "'node'", "'nodes'", "'not'", "'object'", "'occurs'", "'of'", "'on'", "'only'", "'option'", "'or'", "'order'", "'ordered'", "'ordering'", "'paragraph'", "'paragraphs'", "'parent'", "'pattern-separator'", "'per-mille'", "'percent'", "'phrase'", "'position'", "'preceding'", "'preceding-sibling'", "'preserve'", "'previous'", "'processing-instruction'", "'relationship'", "'rename'", "'replace'", "'return'", "'returning'", "'revalidation'", "'same'", "'satisfies'", "'schema'", "'schema-attribute'", "'schema-element'", "'score'", "'self'", "'sensitive'", "'sentence'", "'sentences'", "'skip'", "'sliding'", "'some'", "'stable'", "'start'", "'stemming'", "'stop'", "'strict'", "'strip'", "'structured-item'", "'switch'", "'text'", "'then'", "'thesaurus'", "'times'", "'to'", "'treat'", "'try'", "'tumbling'", "'type'", "'typeswitch'", "'union'", "'unique'", "'unordered'", "'updating'", "'uppercase'", "'using'", "'validate'", "'value'", "'variable'", "'version'", "'weight'", "'when'", "'where'", "'while'", "'wildcards'", "'window'", "'with'", "'without'", "'word'", "'words'", "'xquery'", "'zero-digit'", "'{'", "'{{'", "'|'", "'}'", "'}}'"];
    }, {}],
    "/node_modules/xqlint/lib/lexers/jsoniq_lexer.js": [function (e, t, n) {
      "use strict";

      var r = e("./JSONiqTokenizer").JSONiqTokenizer,
          i = e("./lexer").Lexer,
          s = "NaN|after|allowing|ancestor|ancestor-or-self|and|append|array|as|ascending|at|attribute|base-uri|before|boundary-space|break|by|case|cast|castable|catch|child|collation|comment|constraint|construction|contains|context|continue|copy|copy-namespaces|count|decimal-format|decimal-separator|declare|default|delete|descendant|descendant-or-self|descending|digit|div|document|document-node|element|else|empty|empty-sequence|encoding|end|eq|every|except|exit|external|false|first|following|following-sibling|for|from|ft-option|function|ge|greatest|group|grouping-separator|gt|idiv|if|import|in|index|infinity|insert|instance|integrity|intersect|into|is|item|json|json-item|jsoniq|last|lax|le|least|let|loop|lt|minus-sign|mod|modify|module|namespace|namespace-node|ne|next|node|nodes|not|null|object|of|only|option|or|order|ordered|ordering|paragraphs|parent|pattern-separator|per-mille|percent|preceding|preceding-sibling|previous|processing-instruction|rename|replace|return|returning|revalidation|satisfies|schema|schema-attribute|schema-element|score|select|self|sentences|sliding|some|stable|start|strict|switch|text|then|times|to|treat|true|try|tumbling|type|typeswitch|union|unordered|updating|validate|value|variable|version|when|where|while|window|with|words|xquery|zero-digit".split("|"),
          o = s.map(function (e) {
        return {
          name: "'" + e + "'",
          token: "keyword"
        };
      }),
          u = s.map(function (e) {
        return {
          name: "'" + e + "'",
          token: "text",
          next: function next(e) {
            e.pop();
          }
        };
      }),
          a = "constant.language",
          f = "constant",
          l = "comment",
          c = "xml-pe",
          h = "constant.buildin",
          p = function p(e) {
        return "'" + e + "'";
      },
          d = {
        start: [{
          name: p("(#"),
          token: h,
          next: function next(e) {
            e.push("Pragma");
          }
        }, {
          name: p("(:"),
          token: "comment",
          next: function next(e) {
            e.push("Comment");
          }
        }, {
          name: p("(:~"),
          token: "comment.doc",
          next: function next(e) {
            e.push("CommentDoc");
          }
        }, {
          name: p("<!--"),
          token: l,
          next: function next(e) {
            e.push("XMLComment");
          }
        }, {
          name: p("<?"),
          token: c,
          next: function next(e) {
            e.push("PI");
          }
        }, {
          name: p("''"),
          token: "string",
          next: function next(e) {
            e.push("AposString");
          }
        }, {
          name: p('"'),
          token: "string",
          next: function next(e) {
            e.push("QuotString");
          }
        }, {
          name: "Annotation",
          token: "support.function"
        }, {
          name: "ModuleDecl",
          token: "keyword",
          next: function next(e) {
            e.push("Prefix");
          }
        }, {
          name: "OptionDecl",
          token: "keyword",
          next: function next(e) {
            e.push("_EQName");
          }
        }, {
          name: "AttrTest",
          token: "support.type"
        }, {
          name: "Variable",
          token: "variable"
        }, {
          name: p("<![CDATA["),
          token: a,
          next: function next(e) {
            e.push("CData");
          }
        }, {
          name: "IntegerLiteral",
          token: f
        }, {
          name: "DecimalLiteral",
          token: f
        }, {
          name: "DoubleLiteral",
          token: f
        }, {
          name: "Operator",
          token: "keyword.operator"
        }, {
          name: "EQName",
          token: function token(e) {
            return s.indexOf(e) !== -1 ? "keyword" : "support.function";
          }
        }, {
          name: p("("),
          token: "lparen"
        }, {
          name: p(")"),
          token: "rparen"
        }, {
          name: "Tag",
          token: "meta.tag",
          next: function next(e) {
            e.push("StartTag");
          }
        }, {
          name: p("}"),
          token: "text",
          next: function next(e) {
            e.length > 1 && e.pop();
          }
        }, {
          name: p("{"),
          token: "text",
          next: function next(e) {
            e.push("start");
          }
        }].concat(o),
        _EQName: [{
          name: "EQName",
          token: "text",
          next: function next(e) {
            e.pop();
          }
        }].concat(u),
        Prefix: [{
          name: "NCName",
          token: "text",
          next: function next(e) {
            e.pop();
          }
        }].concat(u),
        StartTag: [{
          name: p(">"),
          token: "meta.tag",
          next: function next(e) {
            e.push("TagContent");
          }
        }, {
          name: "QName",
          token: "entity.other.attribute-name"
        }, {
          name: p("="),
          token: "text"
        }, {
          name: p("''"),
          token: "string",
          next: function next(e) {
            e.push("AposAttr");
          }
        }, {
          name: p('"'),
          token: "string",
          next: function next(e) {
            e.push("QuotAttr");
          }
        }, {
          name: p("/>"),
          token: "meta.tag.r",
          next: function next(e) {
            e.pop();
          }
        }],
        TagContent: [{
          name: "ElementContentChar",
          token: "text"
        }, {
          name: p("<![CDATA["),
          token: a,
          next: function next(e) {
            e.push("CData");
          }
        }, {
          name: p("<!--"),
          token: l,
          next: function next(e) {
            e.push("XMLComment");
          }
        }, {
          name: "Tag",
          token: "meta.tag",
          next: function next(e) {
            e.push("StartTag");
          }
        }, {
          name: "PredefinedEntityRef",
          token: "constant.language.escape"
        }, {
          name: "CharRef",
          token: "constant.language.escape"
        }, {
          name: p("{{"),
          token: "text"
        }, {
          name: p("}}"),
          token: "text"
        }, {
          name: p("{"),
          token: "text",
          next: function next(e) {
            e.push("start");
          }
        }, {
          name: "EndTag",
          token: "meta.tag",
          next: function next(e) {
            e.pop(), e.pop();
          }
        }],
        AposAttr: [{
          name: p("''"),
          token: "string",
          next: function next(e) {
            e.pop();
          }
        }, {
          name: "EscapeApos",
          token: "constant.language.escape"
        }, {
          name: "AposAttrContentChar",
          token: "string"
        }, {
          name: "PredefinedEntityRef",
          token: "constant.language.escape"
        }, {
          name: "CharRef",
          token: "constant.language.escape"
        }, {
          name: p("{{"),
          token: "string"
        }, {
          name: p("}}"),
          token: "string"
        }, {
          name: p("{"),
          token: "text",
          next: function next(e) {
            e.push("start");
          }
        }],
        QuotAttr: [{
          name: p('"'),
          token: "string",
          next: function next(e) {
            e.pop();
          }
        }, {
          name: "EscapeQuot",
          token: "constant.language.escape"
        }, {
          name: "QuotAttrContentChar",
          token: "string"
        }, {
          name: "PredefinedEntityRef",
          token: "constant.language.escape"
        }, {
          name: "CharRef",
          token: "constant.language.escape"
        }, {
          name: p("{{"),
          token: "string"
        }, {
          name: p("}}"),
          token: "string"
        }, {
          name: p("{"),
          token: "text",
          next: function next(e) {
            e.push("start");
          }
        }],
        Pragma: [{
          name: "PragmaContents",
          token: h
        }, {
          name: p("#"),
          token: h
        }, {
          name: p("#)"),
          token: h,
          next: function next(e) {
            e.pop();
          }
        }],
        Comment: [{
          name: "CommentContents",
          token: "comment"
        }, {
          name: p("(:"),
          token: "comment",
          next: function next(e) {
            e.push("Comment");
          }
        }, {
          name: p(":)"),
          token: "comment",
          next: function next(e) {
            e.pop();
          }
        }],
        CommentDoc: [{
          name: "DocCommentContents",
          token: "comment.doc"
        }, {
          name: "DocTag",
          token: "comment.doc.tag"
        }, {
          name: p("(:"),
          token: "comment.doc",
          next: function next(e) {
            e.push("CommentDoc");
          }
        }, {
          name: p(":)"),
          token: "comment.doc",
          next: function next(e) {
            e.pop();
          }
        }],
        XMLComment: [{
          name: "DirCommentContents",
          token: l
        }, {
          name: p("-->"),
          token: l,
          next: function next(e) {
            e.pop();
          }
        }],
        CData: [{
          name: "CDataSectionContents",
          token: a
        }, {
          name: p("]]>"),
          token: a,
          next: function next(e) {
            e.pop();
          }
        }],
        PI: [{
          name: "DirPIContents",
          token: c
        }, {
          name: p("?"),
          token: c
        }, {
          name: p("?>"),
          token: c,
          next: function next(e) {
            e.pop();
          }
        }],
        AposString: [{
          name: p("''"),
          token: "string",
          next: function next(e) {
            e.pop();
          }
        }, {
          name: "PredefinedEntityRef",
          token: "constant.language.escape"
        }, {
          name: "CharRef",
          token: "constant.language.escape"
        }, {
          name: "EscapeApos",
          token: "constant.language.escape"
        }, {
          name: "AposChar",
          token: "string"
        }],
        QuotString: [{
          name: p('"'),
          token: "string",
          next: function next(e) {
            e.pop();
          }
        }, {
          name: "JSONPredefinedCharRef",
          token: "constant.language.escape"
        }, {
          name: "JSONCharRef",
          token: "constant.language.escape"
        }, {
          name: "JSONChar",
          token: "string"
        }]
      };

      n.JSONiqLexer = function () {
        return new i(r, d);
      };
    }, {
      "./JSONiqTokenizer": "/node_modules/xqlint/lib/lexers/JSONiqTokenizer.js",
      "./lexer": "/node_modules/xqlint/lib/lexers/lexer.js"
    }],
    "/node_modules/xqlint/lib/lexers/lexer.js": [function (e, t, n) {
      "use strict";

      var r = function r(e) {
        var t = e;
        this.tokens = [], this.reset = function () {
          t = t, this.tokens = [];
        }, this.startNonterminal = function () {}, this.endNonterminal = function () {}, this.terminal = function (e, n, r) {
          this.tokens.push({
            name: e,
            value: t.substring(n, r)
          });
        }, this.whitespace = function (e, n) {
          this.tokens.push({
            name: "WS",
            value: t.substring(e, n)
          });
        };
      };

      n.Lexer = function (e, t) {
        this.tokens = [], this.getLineTokens = function (n, i) {
          i = i === "start" || !i ? '["start"]' : i;
          var s = JSON.parse(i),
              o = new r(n),
              u = new e(n, o),
              a = [];

          for (;;) {
            var f = s[s.length - 1];

            try {
              o.tokens = [], u["parse_" + f]();
              var l = null;
              o.tokens.length > 1 && o.tokens[0].name === "WS" && (a.push({
                type: "text",
                value: o.tokens[0].value
              }), o.tokens.splice(0, 1));
              var c = o.tokens[0],
                  h = t[f];

              for (var p = 0; p < h.length; p++) {
                var d = t[f][p];

                if (typeof d.name == "function" && d.name(c) || d.name === c.name) {
                  l = d;
                  break;
                }
              }

              if (c.name === "EOF") break;
              if (c.value === "") throw "Encountered empty string lexical rule.";
              a.push({
                type: l === null ? "text" : typeof l.token == "function" ? l.token(c.value) : l.token,
                value: c.value
              }), l && l.next && l.next(s);
            } catch (v) {
              if (v instanceof u.ParseException) {
                var m = 0;

                for (var g = 0; g < a.length; g++) {
                  m += a[g].value.length;
                }

                return a.push({
                  type: "text",
                  value: n.substring(m)
                }), {
                  tokens: a,
                  state: JSON.stringify(["start"])
                };
              }

              throw v;
            }
          }

          return {
            tokens: a,
            state: JSON.stringify(s)
          };
        };
      };
    }, {}]
  }, {}, ["/node_modules/xqlint/lib/lexers/jsoniq_lexer.js"]);
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/behaviour/xquery", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/mode/behaviour/xml", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function a(e, t) {
    var n = !0,
        r = e.type.split("."),
        i = t.split(".");
    return i.forEach(function (e) {
      if (r.indexOf(e) == -1) return n = !1, !1;
    }), n;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../behaviour/xml").XmlBehaviour,
      u = e("../../token_iterator").TokenIterator,
      f = function f() {
    this.inherit(s, ["braces", "parens", "string_dquotes"]), this.inherit(o), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var s = n.getCursorPosition(),
            o = new u(r, s.row, s.column),
            f = o.getCurrentToken(),
            l = !1,
            e = JSON.parse(e).pop();
        if (f && f.value === ">" || e !== "StartTag") return;

        if (!f || !a(f, "meta.tag") && (!a(f, "text") || !f.value.match("/"))) {
          do {
            f = o.stepBackward();
          } while (f && (a(f, "string") || a(f, "keyword.operator") || a(f, "entity.attribute-name") || a(f, "text")));
        } else l = !0;

        var c = o.stepBackward();
        if (!f || !a(f, "meta.tag") || c !== null && c.value.match("/")) return;
        var h = f.value.substring(1);
        if (l) var h = h.substring(0, s.column - f.start);
        return {
          text: "></" + h + ">",
          selection: [1, 1]
        };
      }
    });
  };

  r.inherits(f, i), t.XQueryBehaviour = f;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/jsoniq", ["require", "exports", "module", "ace/worker/worker_client", "ace/lib/oop", "ace/mode/text", "ace/mode/text_highlight_rules", "ace/mode/xquery/jsoniq_lexer", "ace/range", "ace/mode/behaviour/xquery", "ace/mode/folding/cstyle", "ace/anchor"], function (e, t, n) {
  "use strict";

  var r = e("../worker/worker_client").WorkerClient,
      i = e("../lib/oop"),
      s = e("./text").Mode,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = e("./xquery/jsoniq_lexer").JSONiqLexer,
      a = e("../range").Range,
      f = e("./behaviour/xquery").XQueryBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = e("../anchor").Anchor,
      h = function h() {
    this.$tokenizer = new u(), this.$behaviour = new f(), this.foldingRules = new l(), this.$highlightRules = new o();
  };

  i.inherits(h, s), function () {
    this.completer = {
      getCompletions: function getCompletions(e, t, n, r, i) {
        if (!t.$worker) return i();
        t.$worker.emit("complete", {
          data: {
            pos: n,
            prefix: r
          }
        }), t.$worker.on("complete", function (e) {
          i(null, e.data);
        });
      }
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = t.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/);
      return i && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return /^\s+$/.test(t) ? /^\s*[\}\)]/.test(n) : !1;
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n),
          i = r.match(/^(\s*[\}\)])/);
      if (!i) return 0;
      var s = i[1].length,
          o = t.findMatchingBracket({
        row: n,
        column: s
      });
      if (!o || o.row == n) return 0;
      var u = this.$getIndent(t.getLine(o.row));
      t.replace(new a(n, 0, n, s - 1), u);
    }, this.toggleCommentLines = function (e, t, n, r) {
      var i,
          s,
          o = !0,
          u = /^\s*\(:(.*):\)/;

      for (i = n; i <= r; i++) {
        if (!u.test(t.getLine(i))) {
          o = !1;
          break;
        }
      }

      var f = new a(0, 0, 0, 0);

      for (i = n; i <= r; i++) {
        s = t.getLine(i), f.start.row = i, f.end.row = i, f.end.column = s.length, t.replace(f, o ? s.match(u)[1] : "(:" + s + ":)");
      }
    }, this.createWorker = function (e) {
      var t = new r(["ace"], "ace/mode/xquery_worker", "XQueryWorker"),
          n = this;
      return t.attachToDocument(e.getDocument()), t.on("ok", function (t) {
        e.clearAnnotations();
      }), t.on("markers", function (t) {
        e.clearAnnotations(), n.addMarkers(t.data, e);
      }), t;
    }, this.removeMarkers = function (e) {
      var t = e.getMarkers(!1);

      for (var n in t) {
        t[n].clazz.indexOf("language_highlight_") === 0 && e.removeMarker(n);
      }

      for (var r = 0; r < e.markerAnchors.length; r++) {
        e.markerAnchors[r].detach();
      }

      e.markerAnchors = [];
    }, this.addMarkers = function (e, t) {
      var n = this;
      t.markerAnchors || (t.markerAnchors = []), this.removeMarkers(t), t.languageAnnos = [], e.forEach(function (e) {
        function u(i) {
          r && t.removeMarker(r), o.row = n.row;

          if (e.pos.sc !== undefined && e.pos.ec !== undefined) {
            var s = new a(e.pos.sl, e.pos.sc, e.pos.el, e.pos.ec);
            r = t.addMarker(s, "language_highlight_" + (e.type ? e.type : "default"));
          }

          i && t.setAnnotations(t.languageAnnos);
        }

        var n = new c(t.getDocument(), e.pos.sl, e.pos.sc || 0);
        t.markerAnchors.push(n);
        var r,
            i = e.pos.ec - e.pos.sc,
            s = e.pos.el - e.pos.sl,
            o = {
          guttertext: e.message,
          type: e.level || "warning",
          text: e.message
        };
        u(), n.on("change", function () {
          u(!0);
        }), e.message && t.languageAnnos.push(o);
      }), t.setAnnotations(t.languageAnnos);
    }, this.$id = "ace/mode/jsoniq", this.snippetFileId = "ace/snippets/jsoniq";
  }.call(h.prototype), t.Mode = h;
});

(function () {
  ace.require(["ace/mode/jsoniq"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-jsp.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-jsp.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/java_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|var",
        t = "null|Infinity|NaN|undefined",
        n = "AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",
        r = this.createKeywordMapper({
      "variable.language": "this",
      keyword: e,
      "constant.language": t,
      "support.function": n
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/
      }, {
        token: "constant.numeric",
        regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        regex: "(open(?:\\s+))?module(?=\\s*\\w)",
        token: "keyword",
        next: [{
          regex: "{",
          token: "paren.lparen",
          next: [{
            regex: "}",
            token: "paren.rparen",
            next: "start"
          }, {
            regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",
            token: "keyword"
          }]
        }, {
          token: "text",
          regex: "\\s+"
        }, {
          token: "identifier",
          regex: "\\w+"
        }, {
          token: "punctuation.operator",
          regex: "."
        }, {
          token: "text",
          regex: "\\s+"
        }, {
          regex: "",
          next: "start"
        }]
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(o, s), t.JavaHighlightRules = o;
}), ace.define("ace/mode/jsp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules", "ace/mode/java_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      s = e("./java_highlight_rules").JavaHighlightRules,
      o = function o() {
    i.call(this);
    var e = "request|response|out|session|application|config|pageContext|page|Exception",
        t = "page|include|taglib",
        n = [{
      token: "comment",
      regex: "<%--",
      push: "jsp-dcomment"
    }, {
      token: "meta.tag",
      regex: "<%@?|<%=?|<%!?|<jsp:[^>]+>",
      push: "jsp-start"
    }],
        r = [{
      token: "meta.tag",
      regex: "%>|<\\/jsp:[^>]+>",
      next: "pop"
    }, {
      token: "variable.language",
      regex: e
    }, {
      token: "keyword",
      regex: t
    }];

    for (var o in this.$rules) {
      this.$rules[o].unshift.apply(this.$rules[o], n);
    }

    this.embedRules(s, "jsp-", r, ["start"]), this.addRules({
      "jsp-dcomment": [{
        token: "comment",
        regex: ".*?--%>",
        next: "pop"
      }]
    }), this.normalizeRules();
  };

  r.inherits(o, i), t.JspHighlightRules = o;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/jsp", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/jsp_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./jsp_highlight_rules").JspHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(f, i), function () {
    this.$id = "ace/mode/jsp", this.snippetFileId = "ace/snippets/jsp";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/jsp"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-jssm.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-jssm.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/jssm_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "punctuation.definition.comment.mn",
        regex: /\/\*/,
        push: [{
          token: "punctuation.definition.comment.mn",
          regex: /\*\//,
          next: "pop"
        }, {
          defaultToken: "comment.block.jssm"
        }],
        comment: "block comment"
      }, {
        token: "comment.line.jssm",
        regex: /\/\//,
        push: [{
          token: "comment.line.jssm",
          regex: /$/,
          next: "pop"
        }, {
          defaultToken: "comment.line.jssm"
        }],
        comment: "block comment"
      }, {
        token: "entity.name.function",
        regex: /\${/,
        push: [{
          token: "entity.name.function",
          regex: /}/,
          next: "pop"
        }, {
          defaultToken: "keyword.other"
        }],
        comment: "js outcalls"
      }, {
        token: "constant.numeric",
        regex: /[0-9]*\.[0-9]*\.[0-9]*/,
        comment: "semver"
      }, {
        token: "constant.language.jssmLanguage",
        regex: /graph_layout\s*:/,
        comment: "jssm language tokens"
      }, {
        token: "constant.language.jssmLanguage",
        regex: /machine_name\s*:/,
        comment: "jssm language tokens"
      }, {
        token: "constant.language.jssmLanguage",
        regex: /machine_version\s*:/,
        comment: "jssm language tokens"
      }, {
        token: "constant.language.jssmLanguage",
        regex: /jssm_version\s*:/,
        comment: "jssm language tokens"
      }, {
        token: "keyword.control.transition.jssmArrow.legal_legal",
        regex: /<->/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.legal_none",
        regex: /<-/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.none_legal",
        regex: /->/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.main_main",
        regex: /<=>/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.none_main",
        regex: /=>/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.main_none",
        regex: /<=/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.forced_forced",
        regex: /<~>/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.none_forced",
        regex: /~>/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.forced_none",
        regex: /<~/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.legal_main",
        regex: /<-=>/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.main_legal",
        regex: /<=->/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.legal_forced",
        regex: /<-~>/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.forced_legal",
        regex: /<~->/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.main_forced",
        regex: /<=~>/,
        comment: "transitions"
      }, {
        token: "keyword.control.transition.jssmArrow.forced_main",
        regex: /<~=>/,
        comment: "transitions"
      }, {
        token: "constant.numeric.jssmProbability",
        regex: /[0-9]+%/,
        comment: "edge probability annotation"
      }, {
        token: "constant.character.jssmAction",
        regex: /\'[^']*\'/,
        comment: "action annotation"
      }, {
        token: "entity.name.tag.jssmLabel.doublequoted",
        regex: /\"[^"]*\"/,
        comment: "jssm label annotation"
      }, {
        token: "entity.name.tag.jssmLabel.atom",
        regex: /[a-zA-Z0-9_.+&()#@!?,]/,
        comment: "jssm label annotation"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["jssm", "jssm_state"],
    name: "JSSM",
    scopeName: "source.jssm"
  }, r.inherits(s, i), t.JSSMHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/jssm", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/jssm_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./jssm_highlight_rules").JSSMHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/jssm";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/jssm"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-jsx.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-jsx.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/jsx_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = function u() {
    var e = i.arrayToMap("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|if|throw|delete|in|try|class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|number|int|string|boolean|variant|log|assert".split("|")),
        t = i.arrayToMap("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined".split("|")),
        n = i.arrayToMap("debugger|with|const|export|let|private|public|yield|protected|extern|native|as|operator|__fake__|__readonly__".split("|")),
        r = "[a-zA-Z_][a-zA-Z0-9_]*\\b";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, s.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: ["storage.type", "text", "entity.name.function"],
        regex: "(function)(\\s+)(" + r + ")"
      }, {
        token: function token(r) {
          return r == "this" ? "variable.language" : r == "function" ? "storage.type" : e.hasOwnProperty(r) || n.hasOwnProperty(r) ? "keyword" : t.hasOwnProperty(r) ? "constant.language" : /^_?[A-Z][a-zA-Z0-9_]*$/.test(r) ? "language.support.class" : "identifier";
        },
        regex: r
      }, {
        token: "keyword.operator",
        regex: "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({<]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}>]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.embedRules(s, "doc-", [s.getEndRule("start")]);
  };

  r.inherits(u, o), t.JsxHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/jsx", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/jsx_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a();
  }

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./jsx_highlight_rules").JsxHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode;
  r.inherits(f, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[]\s*$/);
        o && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/jsx";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/jsx"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-julia.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-julia.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/julia_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        include: "#function_decl"
      }, {
        include: "#function_call"
      }, {
        include: "#type_decl"
      }, {
        include: "#keyword"
      }, {
        include: "#operator"
      }, {
        include: "#number"
      }, {
        include: "#string"
      }, {
        include: "#comment"
      }],
      "#bracket": [{
        token: "keyword.bracket.julia",
        regex: "\\(|\\)|\\[|\\]|\\{|\\}|,"
      }],
      "#comment": [{
        token: ["punctuation.definition.comment.julia", "comment.line.number-sign.julia"],
        regex: "(#)(?!\\{)(.*$)"
      }],
      "#function_call": [{
        token: ["support.function.julia", "text"],
        regex: "([a-zA-Z0-9_]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*\\()"
      }],
      "#function_decl": [{
        token: ["keyword.other.julia", "meta.function.julia", "entity.name.function.julia", "meta.function.julia", "text"],
        regex: "(function|macro)(\\s*)([a-zA-Z0-9_\\{]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*)([(\\\\{])"
      }],
      "#keyword": [{
        token: "keyword.other.julia",
        regex: "\\b(?:function|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\b"
      }, {
        token: "keyword.control.julia",
        regex: "\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\b"
      }, {
        token: "storage.modifier.variable.julia",
        regex: "\\b(?:global|local|const|export|import|importall|using)\\b"
      }, {
        token: "variable.macro.julia",
        regex: "@[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"
      }],
      "#number": [{
        token: "constant.numeric.julia",
        regex: "\\b0(?:x|X)[0-9a-fA-F]*|(?:\\b[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]*)?(?:im)?|\\bInf(?:32)?\\b|\\bNaN(?:32)?\\b|\\btrue\\b|\\bfalse\\b"
      }],
      "#operator": [{
        token: "keyword.operator.update.julia",
        regex: "=|:=|\\+=|-=|\\*=|/=|//=|\\.//=|\\.\\*=|\\\\=|\\.\\\\=|^=|\\.^=|%=|\\|=|&=|\\$=|<<=|>>="
      }, {
        token: "keyword.operator.ternary.julia",
        regex: "\\?|:"
      }, {
        token: "keyword.operator.boolean.julia",
        regex: "\\|\\||&&|!"
      }, {
        token: "keyword.operator.arrow.julia",
        regex: "->|<-|-->"
      }, {
        token: "keyword.operator.relation.julia",
        regex: ">|<|>=|<=|==|!=|\\.>|\\.<|\\.>=|\\.>=|\\.==|\\.!=|\\.=|\\.!|<:|:>"
      }, {
        token: "keyword.operator.range.julia",
        regex: ":"
      }, {
        token: "keyword.operator.shift.julia",
        regex: "<<|>>"
      }, {
        token: "keyword.operator.bitwise.julia",
        regex: "\\||\\&|~"
      }, {
        token: "keyword.operator.arithmetic.julia",
        regex: "\\+|-|\\*|\\.\\*|/|\\./|//|\\.//|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^"
      }, {
        token: "keyword.operator.isa.julia",
        regex: "::"
      }, {
        token: "keyword.operator.dots.julia",
        regex: "\\.(?=[a-zA-Z])|\\.\\.+"
      }, {
        token: "keyword.operator.interpolation.julia",
        regex: "\\$#?(?=.)"
      }, {
        token: ["variable", "keyword.operator.transposed-variable.julia"],
        regex: "([\\w\\xff-\\u218e\\u2455-\\uffff]+)((?:'|\\.')*\\.?')"
      }, {
        token: "text",
        regex: "\\[|\\("
      }, {
        token: ["text", "keyword.operator.transposed-matrix.julia"],
        regex: "([\\]\\)])((?:'|\\.')*\\.?')"
      }],
      "#string": [{
        token: "punctuation.definition.string.begin.julia",
        regex: "'",
        push: [{
          token: "punctuation.definition.string.end.julia",
          regex: "'",
          next: "pop"
        }, {
          include: "#string_escaped_char"
        }, {
          defaultToken: "string.quoted.single.julia"
        }]
      }, {
        token: "punctuation.definition.string.begin.julia",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.julia",
          regex: '"',
          next: "pop"
        }, {
          include: "#string_escaped_char"
        }, {
          defaultToken: "string.quoted.double.julia"
        }]
      }, {
        token: "punctuation.definition.string.begin.julia",
        regex: "\\b[\\w\\xff-\\u218e\\u2455-\\uffff]+\"",
        push: [{
          token: "punctuation.definition.string.end.julia",
          regex: "\"[\\w\\xff-\\u218e\\u2455-\\uffff]*",
          next: "pop"
        }, {
          include: "#string_custom_escaped_char"
        }, {
          defaultToken: "string.quoted.custom-double.julia"
        }]
      }, {
        token: "punctuation.definition.string.begin.julia",
        regex: "`",
        push: [{
          token: "punctuation.definition.string.end.julia",
          regex: "`",
          next: "pop"
        }, {
          include: "#string_escaped_char"
        }, {
          defaultToken: "string.quoted.backtick.julia"
        }]
      }],
      "#string_custom_escaped_char": [{
        token: "constant.character.escape.julia",
        regex: '\\\\"'
      }],
      "#string_escaped_char": [{
        token: "constant.character.escape.julia",
        regex: "\\\\(?:\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)"
      }],
      "#type_decl": [{
        token: ["keyword.control.type.julia", "meta.type.julia", "entity.name.type.julia", "entity.other.inherited-class.julia", "punctuation.separator.inheritance.julia", "entity.other.inherited-class.julia"],
        regex: "(type|immutable)(\\s+)([a-zA-Z0-9_]+)(?:(\\s*)(<:)(\\s*[.a-zA-Z0-9_:]+))?"
      }, {
        token: ["other.typed-variable.julia", "support.type.julia"],
        regex: "([a-zA-Z0-9_]+)(::[a-zA-Z0-9_{}]+)"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["jl"],
    firstLineMatch: "^#!.*\\bjulia\\s*$",
    foldingStartMarker: "^\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|let)\\b(?!.*\\bend\\b).*$",
    foldingStopMarker: "^\\s*(?:end)\\b.*$",
    name: "Julia",
    scopeName: "source.julia"
  }, r.inherits(s, i), t.JuliaHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/julia", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/julia_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./julia_highlight_rules").JuliaHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.blockComment = "", this.$id = "ace/mode/julia";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/julia"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-kotlin.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-kotlin.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/kotlin_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        include: "#comments"
      }, {
        token: ["text", "keyword.other.kotlin", "text", "entity.name.package.kotlin", "text"],
        regex: /^(\s*)(package)\b(?:(\s*)([^ ;$]+)(\s*))?/
      }, {
        include: "#imports"
      }, {
        include: "#statements"
      }],
      "#classes": [{
        token: "text",
        regex: /(?=\s*(?:companion|class|object|interface))/,
        push: [{
          token: "text",
          regex: /}|(?=$)/,
          next: "pop"
        }, {
          token: ["keyword.other.kotlin", "text"],
          regex: /\b((?:companion\s*)?)(class|object|interface)\b/,
          push: [{
            token: "text",
            regex: /(?=<|{|\(|:)/,
            next: "pop"
          }, {
            token: "keyword.other.kotlin",
            regex: /\bobject\b/
          }, {
            token: "entity.name.type.class.kotlin",
            regex: /\w+/
          }]
        }, {
          token: "text",
          regex: /</,
          push: [{
            token: "text",
            regex: />/,
            next: "pop"
          }, {
            include: "#generics"
          }]
        }, {
          token: "text",
          regex: /\(/,
          push: [{
            token: "text",
            regex: /\)/,
            next: "pop"
          }, {
            include: "#parameters"
          }]
        }, {
          token: "keyword.operator.declaration.kotlin",
          regex: /:/,
          push: [{
            token: "text",
            regex: /(?={|$)/,
            next: "pop"
          }, {
            token: "entity.other.inherited-class.kotlin",
            regex: /\w+/
          }, {
            token: "text",
            regex: /\(/,
            push: [{
              token: "text",
              regex: /\)/,
              next: "pop"
            }, {
              include: "#expressions"
            }]
          }]
        }, {
          token: "text",
          regex: /\{/,
          push: [{
            token: "text",
            regex: /\}/,
            next: "pop"
          }, {
            include: "#statements"
          }]
        }]
      }],
      "#comments": [{
        token: "punctuation.definition.comment.kotlin",
        regex: /\/\*/,
        push: [{
          token: "punctuation.definition.comment.kotlin",
          regex: /\*\//,
          next: "pop"
        }, {
          defaultToken: "comment.block.kotlin"
        }]
      }, {
        token: ["text", "punctuation.definition.comment.kotlin", "comment.line.double-slash.kotlin"],
        regex: /(\s*)(\/\/)(.*$)/
      }],
      "#constants": [{
        token: "constant.language.kotlin",
        regex: /\b(?:true|false|null|this|super)\b/
      }, {
        token: "constant.numeric.kotlin",
        regex: /\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\b/
      }, {
        token: "constant.other.kotlin",
        regex: /\b[A-Z][A-Z0-9_]+\b/
      }],
      "#expressions": [{
        token: "text",
        regex: /\(/,
        push: [{
          token: "text",
          regex: /\)/,
          next: "pop"
        }, {
          include: "#expressions"
        }]
      }, {
        include: "#types"
      }, {
        include: "#strings"
      }, {
        include: "#constants"
      }, {
        include: "#comments"
      }, {
        include: "#keywords"
      }],
      "#functions": [{
        token: "text",
        regex: /(?=\s*fun)/,
        push: [{
          token: "text",
          regex: /}|(?=$)/,
          next: "pop"
        }, {
          token: "keyword.other.kotlin",
          regex: /\bfun\b/,
          push: [{
            token: "text",
            regex: /(?=\()/,
            next: "pop"
          }, {
            token: "text",
            regex: /</,
            push: [{
              token: "text",
              regex: />/,
              next: "pop"
            }, {
              include: "#generics"
            }]
          }, {
            token: ["text", "entity.name.function.kotlin"],
            regex: /((?:[\.<\?>\w]+\.)?)(\w+)/
          }]
        }, {
          token: "text",
          regex: /\(/,
          push: [{
            token: "text",
            regex: /\)/,
            next: "pop"
          }, {
            include: "#parameters"
          }]
        }, {
          token: "keyword.operator.declaration.kotlin",
          regex: /:/,
          push: [{
            token: "text",
            regex: /(?={|=|$)/,
            next: "pop"
          }, {
            include: "#types"
          }]
        }, {
          token: "text",
          regex: /\{/,
          push: [{
            token: "text",
            regex: /(?=\})/,
            next: "pop"
          }, {
            include: "#statements"
          }]
        }, {
          token: "keyword.operator.assignment.kotlin",
          regex: /=/,
          push: [{
            token: "text",
            regex: /(?=$)/,
            next: "pop"
          }, {
            include: "#expressions"
          }]
        }]
      }],
      "#generics": [{
        token: "keyword.operator.declaration.kotlin",
        regex: /:/,
        push: [{
          token: "text",
          regex: /(?=,|>)/,
          next: "pop"
        }, {
          include: "#types"
        }]
      }, {
        include: "#keywords"
      }, {
        token: "storage.type.generic.kotlin",
        regex: /\w+/
      }],
      "#getters-and-setters": [{
        token: ["entity.name.function.kotlin", "text"],
        regex: /\b(get)\b(\s*\(\s*\))/,
        push: [{
          token: "text",
          regex: /\}|(?=\bset\b)|$/,
          next: "pop"
        }, {
          token: "keyword.operator.assignment.kotlin",
          regex: /=/,
          push: [{
            token: "text",
            regex: /(?=$|\bset\b)/,
            next: "pop"
          }, {
            include: "#expressions"
          }]
        }, {
          token: "text",
          regex: /\{/,
          push: [{
            token: "text",
            regex: /\}/,
            next: "pop"
          }, {
            include: "#expressions"
          }]
        }]
      }, {
        token: ["entity.name.function.kotlin", "text"],
        regex: /\b(set)\b(\s*)(?=\()/,
        push: [{
          token: "text",
          regex: /\}|(?=\bget\b)|$/,
          next: "pop"
        }, {
          token: "text",
          regex: /\(/,
          push: [{
            token: "text",
            regex: /\)/,
            next: "pop"
          }, {
            include: "#parameters"
          }]
        }, {
          token: "keyword.operator.assignment.kotlin",
          regex: /=/,
          push: [{
            token: "text",
            regex: /(?=$|\bset\b)/,
            next: "pop"
          }, {
            include: "#expressions"
          }]
        }, {
          token: "text",
          regex: /\{/,
          push: [{
            token: "text",
            regex: /\}/,
            next: "pop"
          }, {
            include: "#expressions"
          }]
        }]
      }],
      "#imports": [{
        token: ["text", "keyword.other.kotlin", "text", "keyword.other.kotlin"],
        regex: /^(\s*)(import)(\s+[^ $]+\s+)((?:as)?)/
      }],
      "#keywords": [{
        token: "storage.modifier.kotlin",
        regex: /\b(?:var|val|public|private|protected|abstract|final|enum|open|attribute|annotation|override|inline|var|val|vararg|lazy|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof)\b/
      }, {
        token: "keyword.control.catch-exception.kotlin",
        regex: /\b(?:try|catch|finally|throw)\b/
      }, {
        token: "keyword.control.kotlin",
        regex: /\b(?:if|else|while|for|do|return|when|where|break|continue)\b/
      }, {
        token: "keyword.operator.kotlin",
        regex: /\b(?:in|is|as|assert)\b/
      }, {
        token: "keyword.operator.comparison.kotlin",
        regex: /==|!=|===|!==|<=|>=|<|>/
      }, {
        token: "keyword.operator.assignment.kotlin",
        regex: /=/
      }, {
        token: "keyword.operator.declaration.kotlin",
        regex: /:/
      }, {
        token: "keyword.operator.dot.kotlin",
        regex: /\./
      }, {
        token: "keyword.operator.increment-decrement.kotlin",
        regex: /\-\-|\+\+/
      }, {
        token: "keyword.operator.arithmetic.kotlin",
        regex: /\-|\+|\*|\/|%/
      }, {
        token: "keyword.operator.arithmetic.assign.kotlin",
        regex: /\+=|\-=|\*=|\/=/
      }, {
        token: "keyword.operator.logical.kotlin",
        regex: /!|&&|\|\|/
      }, {
        token: "keyword.operator.range.kotlin",
        regex: /\.\./
      }, {
        token: "punctuation.terminator.kotlin",
        regex: /;/
      }],
      "#namespaces": [{
        token: "keyword.other.kotlin",
        regex: /\bnamespace\b/
      }, {
        token: "text",
        regex: /\{/,
        push: [{
          token: "text",
          regex: /\}/,
          next: "pop"
        }, {
          include: "#statements"
        }]
      }],
      "#parameters": [{
        token: "keyword.operator.declaration.kotlin",
        regex: /:/,
        push: [{
          token: "text",
          regex: /(?=,|\)|=)/,
          next: "pop"
        }, {
          include: "#types"
        }]
      }, {
        token: "keyword.operator.declaration.kotlin",
        regex: /=/,
        push: [{
          token: "text",
          regex: /(?=,|\))/,
          next: "pop"
        }, {
          include: "#expressions"
        }]
      }, {
        include: "#keywords"
      }, {
        token: "variable.parameter.function.kotlin",
        regex: /\w+/
      }],
      "#statements": [{
        include: "#namespaces"
      }, {
        include: "#typedefs"
      }, {
        include: "#classes"
      }, {
        include: "#functions"
      }, {
        include: "#variables"
      }, {
        include: "#getters-and-setters"
      }, {
        include: "#expressions"
      }],
      "#strings": [{
        token: "punctuation.definition.string.begin.kotlin",
        regex: /"""/,
        push: [{
          token: "punctuation.definition.string.end.kotlin",
          regex: /"""/,
          next: "pop"
        }, {
          token: "variable.parameter.template.kotlin",
          regex: /\$\w+|\$\{[^\}]+\}/
        }, {
          token: "constant.character.escape.kotlin",
          regex: /\\./
        }, {
          defaultToken: "string.quoted.third.kotlin"
        }]
      }, {
        token: "punctuation.definition.string.begin.kotlin",
        regex: /"/,
        push: [{
          token: "punctuation.definition.string.end.kotlin",
          regex: /"/,
          next: "pop"
        }, {
          token: "variable.parameter.template.kotlin",
          regex: /\$\w+|\$\{[^\}]+\}/
        }, {
          token: "constant.character.escape.kotlin",
          regex: /\\./
        }, {
          defaultToken: "string.quoted.double.kotlin"
        }]
      }, {
        token: "punctuation.definition.string.begin.kotlin",
        regex: /'/,
        push: [{
          token: "punctuation.definition.string.end.kotlin",
          regex: /'/,
          next: "pop"
        }, {
          token: "constant.character.escape.kotlin",
          regex: /\\./
        }, {
          defaultToken: "string.quoted.single.kotlin"
        }]
      }, {
        token: "punctuation.definition.string.begin.kotlin",
        regex: /`/,
        push: [{
          token: "punctuation.definition.string.end.kotlin",
          regex: /`/,
          next: "pop"
        }, {
          defaultToken: "string.quoted.single.kotlin"
        }]
      }],
      "#typedefs": [{
        token: "text",
        regex: /(?=\s*type)/,
        push: [{
          token: "text",
          regex: /(?=$)/,
          next: "pop"
        }, {
          token: "keyword.other.kotlin",
          regex: /\btype\b/
        }, {
          token: "text",
          regex: /</,
          push: [{
            token: "text",
            regex: />/,
            next: "pop"
          }, {
            include: "#generics"
          }]
        }, {
          include: "#expressions"
        }]
      }],
      "#types": [{
        token: "storage.type.buildin.kotlin",
        regex: /\b(?:Any|Unit|String|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\b/
      }, {
        token: "storage.type.buildin.array.kotlin",
        regex: /\b(?:IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\b/
      }, {
        token: ["storage.type.buildin.collection.kotlin", "text"],
        regex: /\b(Array|List|Map)(<\b)/,
        push: [{
          token: "text",
          regex: />/,
          next: "pop"
        }, {
          include: "#types"
        }, {
          include: "#keywords"
        }]
      }, {
        token: "text",
        regex: /\w+</,
        push: [{
          token: "text",
          regex: />/,
          next: "pop"
        }, {
          include: "#types"
        }, {
          include: "#keywords"
        }]
      }, {
        token: ["keyword.operator.tuple.kotlin", "text"],
        regex: /(#)(\()/,
        push: [{
          token: "text",
          regex: /\)/,
          next: "pop"
        }, {
          include: "#expressions"
        }]
      }, {
        token: "text",
        regex: /\{/,
        push: [{
          token: "text",
          regex: /\}/,
          next: "pop"
        }, {
          include: "#statements"
        }]
      }, {
        token: "text",
        regex: /\(/,
        push: [{
          token: "text",
          regex: /\)/,
          next: "pop"
        }, {
          include: "#types"
        }]
      }, {
        token: "keyword.operator.declaration.kotlin",
        regex: /->/
      }],
      "#variables": [{
        token: "text",
        regex: /(?=\s*(?:var|val))/,
        push: [{
          token: "text",
          regex: /(?=:|=|$)/,
          next: "pop"
        }, {
          token: "keyword.other.kotlin",
          regex: /\b(?:var|val)\b/,
          push: [{
            token: "text",
            regex: /(?=:|=|$)/,
            next: "pop"
          }, {
            token: "text",
            regex: /</,
            push: [{
              token: "text",
              regex: />/,
              next: "pop"
            }, {
              include: "#generics"
            }]
          }, {
            token: ["text", "entity.name.variable.kotlin"],
            regex: /((?:[\.<\?>\w]+\.)?)(\w+)/
          }]
        }, {
          token: "keyword.operator.declaration.kotlin",
          regex: /:/,
          push: [{
            token: "text",
            regex: /(?==|$)/,
            next: "pop"
          }, {
            include: "#types"
          }, {
            include: "#getters-and-setters"
          }]
        }, {
          token: "keyword.operator.assignment.kotlin",
          regex: /=/,
          push: [{
            token: "text",
            regex: /(?=$)/,
            next: "pop"
          }, {
            include: "#expressions"
          }, {
            include: "#getters-and-setters"
          }]
        }]
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["kt", "kts"],
    name: "Kotlin",
    scopeName: "source.Kotlin"
  }, r.inherits(s, i), t.KotlinHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/kotlin", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/kotlin_highlight_rules", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./kotlin_highlight_rules").KotlinHighlightRules,
      o = e("./behaviour/cstyle").CstyleBehaviour,
      u = e("./folding/cstyle").FoldMode,
      a = function a() {
    this.HighlightRules = s, this.foldingRules = new u(), this.$behaviour = new o();
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/kotlin";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/kotlin"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-latex.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-latex.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/latex_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment",
        regex: "%.*$"
      }, {
        token: ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"],
        regex: "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})"
      }, {
        token: ["keyword", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?"
      }, {
        token: ["storage.type", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\begin)({)(verbatim)(})",
        next: "verbatim"
      }, {
        token: ["storage.type", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\begin)({)(lstlisting)(})",
        next: "lstlisting"
      }, {
        token: ["storage.type", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\(?:begin|end))({)([\\w*]*)(})"
      }, {
        token: "storage.type",
        regex: /\\verb\b\*?/,
        next: [{
          token: ["keyword.operator", "string", "keyword.operator"],
          regex: "(.)(.*?)(\\1|$)|",
          next: "start"
        }]
      }, {
        token: "storage.type",
        regex: "\\\\[a-zA-Z]+"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "constant.character.escape",
        regex: "\\\\[^a-zA-Z]?"
      }, {
        token: "string",
        regex: "\\${1,2}",
        next: "equation"
      }],
      equation: [{
        token: "comment",
        regex: "%.*$"
      }, {
        token: "string",
        regex: "\\${1,2}",
        next: "start"
      }, {
        token: "constant.character.escape",
        regex: "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"
      }, {
        token: "error",
        regex: "^\\s*$",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      verbatim: [{
        token: ["storage.type", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\end)({)(verbatim)(})",
        next: "start"
      }, {
        defaultToken: "text"
      }],
      lstlisting: [{
        token: ["storage.type", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\end)({)(lstlisting)(})",
        next: "start"
      }, {
        defaultToken: "text"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.LatexHighlightRules = s;
}), ace.define("ace/mode/folding/latex", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = e("../../token_iterator").TokenIterator,
      u = {
    "\\subparagraph": 1,
    "\\paragraph": 2,
    "\\subsubsubsection": 3,
    "\\subsubsection": 4,
    "\\subsection": 5,
    "\\section": 6,
    "\\chapter": 7,
    "\\part": 8,
    "\\begin": 9,
    "\\end": 10
  },
      a = t.FoldMode = function () {};

  r.inherits(a, i), function () {
    this.foldingStartMarker = /^\s*\\(begin)|\s*\\(part|chapter|(?:sub)*(?:section|paragraph))\b|{\s*$/, this.foldingStopMarker = /^\s*\\(end)\b|^\s*}/, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.doc.getLine(n),
          i = this.foldingStartMarker.exec(r);
      if (i) return i[1] ? this.latexBlock(e, n, i[0].length - 1) : i[2] ? this.latexSection(e, n, i[0].length - 1) : this.openingBracketBlock(e, "{", n, i.index);
      var i = this.foldingStopMarker.exec(r);
      if (i) return i[1] ? this.latexBlock(e, n, i[0].length - 1) : this.closingBracketBlock(e, "}", n, i.index + i[0].length);
    }, this.latexBlock = function (e, t, n, r) {
      var i = {
        "\\begin": 1,
        "\\end": -1
      },
          u = new o(e, t, n),
          a = u.getCurrentToken();
      if (!a || a.type != "storage.type" && a.type != "constant.character.escape") return;

      var f = a.value,
          l = i[f],
          c = function c() {
        var e = u.stepForward(),
            t = e.type == "lparen" ? u.stepForward().value : "";
        return l === -1 && (u.stepBackward(), t && u.stepBackward()), t;
      },
          h = [c()],
          p = l === -1 ? u.getCurrentTokenColumn() : e.getLine(t).length,
          d = t;

      u.step = l === -1 ? u.stepBackward : u.stepForward;

      while (a = u.step()) {
        if (!a || a.type != "storage.type" && a.type != "constant.character.escape") continue;
        var v = i[a.value];
        if (!v) continue;
        var m = c();
        if (v === l) h.unshift(m);else if (h.shift() !== m || !h.length) break;
      }

      if (h.length) return;
      l == 1 && (u.stepBackward(), u.stepBackward());
      if (r) return u.getCurrentTokenRange();
      var t = u.getCurrentTokenRow();
      return l === -1 ? new s(t, e.getLine(t).length, d, p) : new s(d, p, t, u.getCurrentTokenColumn());
    }, this.latexSection = function (e, t, n) {
      var r = new o(e, t, n),
          i = r.getCurrentToken();
      if (!i || i.type != "storage.type") return;
      var a = u[i.value] || 0,
          f = 0,
          l = t;

      while (i = r.stepForward()) {
        if (i.type !== "storage.type") continue;
        var c = u[i.value] || 0;

        if (c >= 9) {
          f || (l = r.getCurrentTokenRow() - 1), f += c == 9 ? 1 : -1;
          if (f < 0) break;
        } else if (c >= a) break;
      }

      f || (l = r.getCurrentTokenRow() - 1);

      while (l > t && !/\S/.test(e.getLine(l))) {
        l--;
      }

      return new s(t, e.getLine(t).length, l, e.getLine(l).length);
    };
  }.call(a.prototype);
}), ace.define("ace/mode/latex", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/latex_highlight_rules", "ace/mode/behaviour/cstyle", "ace/mode/folding/latex"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./latex_highlight_rules").LatexHighlightRules,
      o = e("./behaviour/cstyle").CstyleBehaviour,
      u = e("./folding/latex").FoldMode,
      a = function a() {
    this.HighlightRules = s, this.foldingRules = new u(), this.$behaviour = new o({
      braces: !0
    });
  };

  r.inherits(a, i), function () {
    this.type = "text", this.lineCommentStart = "%", this.$id = "ace/mode/latex", this.getMatching = function (e, t, n) {
      t == undefined && (t = e.selection.lead), _typeof(t) == "object" && (n = t.column, t = t.row);
      var r = e.getTokenAt(t, n);
      if (!r) return;
      if (r.value == "\\begin" || r.value == "\\end") return this.foldingRules.latexBlock(e, t, n, !0);
    };
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/latex"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-less.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-less.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/less_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/css_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = e("./css_highlight_rules"),
      o = function o() {
    var e = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|or|and|when|not",
        t = e.split("|"),
        n = s.supportType.split("|"),
        r = this.createKeywordMapper({
      "support.constant": s.supportConstant,
      keyword: e,
      "support.constant.color": s.supportConstantColor,
      "support.constant.fonts": s.supportConstantFonts
    }, "identifier", !0),
        i = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + i + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: "constant.numeric",
        regex: i
      }, {
        token: ["support.function", "paren.lparen", "string", "paren.rparen"],
        regex: "(url)(\\()(.*)(\\))"
      }, {
        token: ["support.function", "paren.lparen"],
        regex: "(:extend|[a-z0-9_\\-]+)(\\()"
      }, {
        token: function token(e) {
          return t.indexOf(e.toLowerCase()) > -1 ? "keyword" : "variable";
        },
        regex: "[@\\$][a-z0-9_\\-@\\$]*\\b"
      }, {
        token: "variable",
        regex: "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"
      }, {
        token: function token(e, t) {
          return n.indexOf(e.toLowerCase()) > -1 ? ["support.type.property", "text"] : ["support.type.unknownProperty", "text"];
        },
        regex: "([a-z0-9-_]+)(\\s*:)"
      }, {
        token: "keyword",
        regex: "&"
      }, {
        token: r,
        regex: "\\-?[@a-z_][@a-z0-9_\\-]*"
      }, {
        token: "variable.language",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: ":[a-z_][a-z0-9-_]*"
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        token: "keyword.operator",
        regex: "<|>|<=|>=|=|!=|-|%|\\+|\\*"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        caseInsensitive: !0
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.normalizeRules();
  };

  r.inherits(o, i), t.LessHighlightRules = o;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/less", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/less_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/css", "ace/mode/css_completions", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./less_highlight_rules").LessHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/css").CssBehaviour,
      a = e("./css_completions").CssCompletions,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.$completer = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions("ruleset", t, n, r);
    }, this.$id = "ace/mode/less";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/less"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-liquid.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-liquid.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/behaviour/liquid", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/xml", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function a(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./xml").XmlBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = e("../../lib/lang"),
      f = function f() {
    s.call(this), this.add("autoBraceTagClosing", "insertion", function (e, t, n, r, i) {
      if (i == "}") {
        var s = n.getSelectionRange().start,
            u = new o(r, s.row, s.column),
            f = u.getCurrentToken() || u.stepBackward();
        if (!f || !(f.value.trim() === "%" || a(f, "tag-name") || a(f, "tag-whitespace") || a(f, "attribute-name") || a(f, "attribute-equals") || a(f, "attribute-value"))) return;
        if (a(f, "reference.attribute-value")) return;

        if (a(f, "attribute-value")) {
          var l = u.getCurrentTokenColumn() + f.value.length;
          if (s.column < l) return;

          if (s.column == l) {
            var c = u.stepForward();
            if (c && a(c, "attribute-value")) return;
            u.stepBackward();
          }
        }

        if (/{%\s*%/.test(r.getLine(s.row))) return;
        if (/^\s*}/.test(r.getLine(s.row).slice(s.column))) return;

        while (!f.type != "keyword.block") {
          f = u.stepBackward();

          if (f.value == "{%") {
            for (;;) {
              f = u.stepForward();
              if (f.type === "keyword.block") break;

              if (f.value.trim() == "%") {
                f = null;
                break;
              }
            }

            break;
          }
        }

        if (!f) return;
        var h = u.getCurrentTokenRow(),
            p = u.getCurrentTokenColumn();
        if (a(u.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == s.row && (d = d.substring(0, s.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "}{% end" + d + " %}",
          selection: [1, 1]
        };
      }
    });
  };

  r.inherits(f, i), t.LiquidBehaviour = f;
}), ace.define("ace/mode/liquid_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = e("./html_highlight_rules").HtmlHighlightRules,
      o = function o() {
    s.call(this);
    var e = "date|capitalize|downcase|upcase|first|last|join|sort|map|size|escape|escape_once|strip_html|strip_newlines|newline_to_br|replace|replace_first|truncate|truncatewords|prepend|append|minus|plus|times|divided_by|split",
        t = "capture|endcapture|case|endcase|when|comment|endcomment|cycle|for|endfor|in|reversed|if|endif|else|elsif|include|endinclude|unless|endunless|style|text|image|widget|plugin|marker|endmarker|tablerow|endtablerow",
        n = "for|if|case|capture|unless|tablerow|marker|comment",
        r = "forloop|tablerowloop",
        i = "assign",
        o = this.createKeywordMapper({
      "variable.language": r,
      keyword: t,
      "keyword.block": n,
      "support.function": e,
      "keyword.definition": i
    }, "identifier");

    for (var u in this.$rules) {
      this.$rules[u].unshift({
        token: "variable",
        regex: "{%",
        push: "liquid-start"
      }, {
        token: "variable",
        regex: "{{",
        push: "liquid-start"
      });
    }

    this.addRules({
      "liquid-start": [{
        token: "variable",
        regex: "}}",
        next: "pop"
      }, {
        token: "variable",
        regex: "%}",
        next: "pop"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: o,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "/|\\*|\\-|\\+|=|!=|\\?\\:"
      }, {
        token: "paren.lparen",
        regex: /[\[\({]/
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "text",
        regex: "\\s+"
      }]
    }), this.normalizeRules();
  };

  r.inherits(o, i), t.LiquidHighlightRules = o;
}), ace.define("ace/mode/liquid", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/html", "ace/mode/html_completions", "ace/mode/behaviour/liquid", "ace/mode/liquid_highlight_rules", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./html").Mode,
      o = e("./html_completions").HtmlCompletions,
      u = e("./behaviour/liquid").LiquidBehaviour,
      a = e("./liquid_highlight_rules").LiquidHighlightRules,
      f = e("./matching_brace_outdent").MatchingBraceOutdent,
      l = function l() {
    this.HighlightRules = a, this.$outdent = new f(), this.$behaviour = new u(), this.$completer = new o();
  };

  r.inherits(l, i), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = new s().voidElements, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[]\s*$/);
        u && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/liquid", this.snippetFileId = "ace/snippets/liquid";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/liquid"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-lisp.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-lisp.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/lisp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "case|do|let|loop|if|else|when",
        t = "eq|neq|and|or",
        n = "null|nil",
        r = "cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn",
        i = this.createKeywordMapper({
      "keyword.control": e,
      "keyword.operator": t,
      "constant.language": n,
      "support.function": r
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: ";.*$"
      }, {
        token: ["storage.type.function-type.lisp", "text", "entity.name.function.lisp"],
        regex: "(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"
      }, {
        token: ["punctuation.definition.constant.character.lisp", "constant.character.lisp"],
        regex: "(#)((?:\\w|[\\\\+-=<>'\"&#])+)"
      }, {
        token: ["punctuation.definition.variable.lisp", "variable.other.global.lisp", "punctuation.definition.variable.lisp"],
        regex: "(\\*)(\\S*)(\\*)"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: i,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }],
      qqstring: [{
        token: "constant.character.escape.lisp",
        regex: "\\\\."
      }, {
        token: "string",
        regex: '[^"\\\\]+'
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }]
    };
  };

  r.inherits(s, i), t.LispHighlightRules = s;
}), ace.define("ace/mode/lisp", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/lisp_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./lisp_highlight_rules").LispHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = ";", this.$id = "ace/mode/lisp";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/lisp"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-livescript.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-livescript.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/livescript", ["require", "exports", "module", "ace/tokenizer", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/text"], function (e, t, n) {
  function u(e, t) {
    function n() {}

    return n.prototype = (e.superclass = t).prototype, (e.prototype = new n()).constructor = e, typeof t.extended == "function" && t.extended(e), e;
  }

  function a(e, t) {
    var n = {}.hasOwnProperty;

    for (var r in t) {
      n.call(t, r) && (e[r] = t[r]);
    }

    return e;
  }

  var r, i, s, o;
  r = "(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*", t.Mode = i = function (t) {
    function o() {
      var t;
      this.$tokenizer = new (e("../tokenizer").Tokenizer)(o.Rules);
      if (t = e("../mode/matching_brace_outdent")) this.$outdent = new t.MatchingBraceOutdent();
      this.$id = "ace/mode/livescript", this.$behaviour = new (e("./behaviour/cstyle").CstyleBehaviour)();
    }

    var n,
        i = u((a(o, t).displayName = "LiveScriptMode", o), t).prototype,
        s = o;
    return n = RegExp("(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*" + r + ")?))\\s*$"), i.getNextLineIndent = function (e, t, r) {
      var i, s;
      return i = this.$getIndent(t), s = this.$tokenizer.getLineTokens(t, e).tokens, (!s.length || s[s.length - 1].type !== "comment") && e === "start" && n.test(t) && (i += r), i;
    }, i.lineCommentStart = "#", i.blockComment = {
      start: "###",
      end: "###"
    }, i.checkOutdent = function (e, t, n) {
      var r;
      return (r = this.$outdent) != null ? r.checkOutdent(t, n) : void 8;
    }, i.autoOutdent = function (e, t, n) {
      var r;
      return (r = this.$outdent) != null ? r.autoOutdent(t, n) : void 8;
    }, o;
  }(e("../mode/text").Mode), s = "(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))", o = {
    defaultToken: "string"
  }, i.Rules = {
    start: [{
      token: "keyword",
      regex: "(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)" + s
    }, {
      token: "constant.language",
      regex: "(?:true|false|yes|no|on|off|null|void|undefined)" + s
    }, {
      token: "invalid.illegal",
      regex: "(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)" + s
    }, {
      token: "language.support.class",
      regex: "(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)" + s
    }, {
      token: "language.support.function",
      regex: "(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)" + s
    }, {
      token: "variable.language",
      regex: "(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)" + s
    }, {
      token: "identifier",
      regex: r + "\\s*:(?![:=])"
    }, {
      token: "variable",
      regex: r
    }, {
      token: "keyword.operator",
      regex: "(?:\\.{3}|\\s+\\?)"
    }, {
      token: "keyword.variable",
      regex: "(?:@+|::|\\.\\.)",
      next: "key"
    }, {
      token: "keyword.operator",
      regex: "\\.\\s*",
      next: "key"
    }, {
      token: "string",
      regex: "\\\\\\S[^\\s,;)}\\]]*"
    }, {
      token: "string.doc",
      regex: "'''",
      next: "qdoc"
    }, {
      token: "string.doc",
      regex: '"""',
      next: "qqdoc"
    }, {
      token: "string",
      regex: "'",
      next: "qstring"
    }, {
      token: "string",
      regex: '"',
      next: "qqstring"
    }, {
      token: "string",
      regex: "`",
      next: "js"
    }, {
      token: "string",
      regex: "<\\[",
      next: "words"
    }, {
      token: "string.regex",
      regex: "//",
      next: "heregex"
    }, {
      token: "comment.doc",
      regex: "/\\*",
      next: "comment"
    }, {
      token: "comment",
      regex: "#.*"
    }, {
      token: "string.regex",
      regex: "\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}",
      next: "key"
    }, {
      token: "constant.numeric",
      regex: "(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)"
    }, {
      token: "lparen",
      regex: "[({[]"
    }, {
      token: "rparen",
      regex: "[)}\\]]",
      next: "key"
    }, {
      token: "keyword.operator",
      regex: "[\\^!|&%+\\-]+"
    }, {
      token: "text",
      regex: "\\s+"
    }],
    heregex: [{
      token: "string.regex",
      regex: ".*?//[gimy$?]{0,4}",
      next: "start"
    }, {
      token: "string.regex",
      regex: "\\s*#{"
    }, {
      token: "comment.regex",
      regex: "\\s+(?:#.*)?"
    }, {
      defaultToken: "string.regex"
    }],
    key: [{
      token: "keyword.operator",
      regex: "[.?@!]+"
    }, {
      token: "identifier",
      regex: r,
      next: "start"
    }, {
      token: "text",
      regex: "",
      next: "start"
    }],
    comment: [{
      token: "comment.doc",
      regex: ".*?\\*/",
      next: "start"
    }, {
      defaultToken: "comment.doc"
    }],
    qdoc: [{
      token: "string",
      regex: ".*?'''",
      next: "key"
    }, o],
    qqdoc: [{
      token: "string",
      regex: '.*?"""',
      next: "key"
    }, o],
    qstring: [{
      token: "string",
      regex: "[^\\\\']*(?:\\\\.[^\\\\']*)*'",
      next: "key"
    }, o],
    qqstring: [{
      token: "string",
      regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',
      next: "key"
    }, o],
    js: [{
      token: "string",
      regex: "[^\\\\`]*(?:\\\\.[^\\\\`]*)*`",
      next: "key"
    }, o],
    words: [{
      token: "string",
      regex: ".*?\\]>",
      next: "key"
    }, o]
  };
});

(function () {
  ace.require(["ace/mode/livescript"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-logiql.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-logiql.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/logiql_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.block",
        regex: "/\\*",
        push: [{
          token: "comment.block",
          regex: "\\*/",
          next: "pop"
        }, {
          defaultToken: "comment.block"
        }]
      }, {
        token: "comment.single",
        regex: "//.*"
      }, {
        token: "constant.numeric",
        regex: "\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?[fd]?"
      }, {
        token: "string",
        regex: '"',
        push: [{
          token: "string",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "constant.language",
        regex: "\\b(true|false)\\b"
      }, {
        token: "entity.name.type.logicblox",
        regex: "`[a-zA-Z_:]+(\\d|\\a)*\\b"
      }, {
        token: "keyword.start",
        regex: "->",
        comment: "Constraint"
      }, {
        token: "keyword.start",
        regex: "-->",
        comment: "Level 1 Constraint"
      }, {
        token: "keyword.start",
        regex: "<-",
        comment: "Rule"
      }, {
        token: "keyword.start",
        regex: "<--",
        comment: "Level 1 Rule"
      }, {
        token: "keyword.end",
        regex: "\\.",
        comment: "Terminator"
      }, {
        token: "keyword.other",
        regex: "!",
        comment: "Negation"
      }, {
        token: "keyword.other",
        regex: ",",
        comment: "Conjunction"
      }, {
        token: "keyword.other",
        regex: ";",
        comment: "Disjunction"
      }, {
        token: "keyword.operator",
        regex: "<=|>=|!=|<|>",
        comment: "Equality"
      }, {
        token: "keyword.other",
        regex: "@",
        comment: "Equality"
      }, {
        token: "keyword.operator",
        regex: "\\+|-|\\*|/",
        comment: "Arithmetic operations"
      }, {
        token: "keyword",
        regex: "::",
        comment: "Colon colon"
      }, {
        token: "support.function",
        regex: "\\b(agg\\s*<<)",
        push: [{
          include: "$self"
        }, {
          token: "support.function",
          regex: ">>",
          next: "pop"
        }]
      }, {
        token: "storage.modifier",
        regex: "\\b(lang:[\\w:]*)"
      }, {
        token: ["storage.type", "text"],
        regex: "(export|sealed|clauses|block|alias|alias_all)(\\s*\\()(?=`)"
      }, {
        token: "entity.name",
        regex: "[a-zA-Z_][a-zA-Z_0-9:]*(@prev|@init|@final)?(?=(\\(|\\[))"
      }, {
        token: "variable.parameter",
        regex: "([a-zA-Z][a-zA-Z_0-9]*|_)\\s*(?=(,|\\.|<-|->|\\)|\\]|=))"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.LogiQLHighlightRules = s;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/logiql", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/logiql_highlight_rules", "ace/mode/folding/coffee", "ace/token_iterator", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./logiql_highlight_rules").LogiQLHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = e("../token_iterator").TokenIterator,
      a = e("../range").Range,
      f = e("./behaviour/cstyle").CstyleBehaviour,
      l = e("./matching_brace_outdent").MatchingBraceOutdent,
      c = function c() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$outdent = new l(), this.$behaviour = new f();
  };

  r.inherits(c, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (/comment|string/.test(o)) return r;
      if (s.length && s[s.length - 1].type == "comment.single") return r;
      var u = t.match();
      return /(-->|<--|<-|->|{)\s*$/.test(t) && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n) ? !0 : n !== "\n" && n !== "\r\n" ? !1 : /^\s+/.test(t) ? !0 : !1;
    }, this.autoOutdent = function (e, t, n) {
      if (this.$outdent.autoOutdent(t, n)) return;
      var r = t.getLine(n),
          i = r.match(/^\s+/),
          s = r.lastIndexOf(".") + 1;
      if (!i || !n || !s) return 0;
      var o = t.getLine(n + 1),
          u = this.getMatching(t, {
        row: n,
        column: s
      });
      if (!u || u.start.row == n) return 0;
      s = i[0].length;
      var f = this.$getIndent(t.getLine(u.start.row));
      t.replace(new a(n + 1, 0, n + 1, s), f);
    }, this.getMatching = function (e, t, n) {
      t == undefined && (t = e.selection.lead), _typeof(t) == "object" && (n = t.column, t = t.row);
      var r = e.getTokenAt(t, n),
          i = "keyword.start",
          s = "keyword.end",
          o;
      if (!r) return;

      if (r.type == i) {
        var f = new u(e, t, n);
        f.step = f.stepForward;
      } else {
        if (r.type != s) return;
        var f = new u(e, t, n);
        f.step = f.stepBackward;
      }

      while (o = f.step()) {
        if (o.type == i || o.type == s) break;
      }

      if (!o || o.type == r.type) return;
      var l = f.getCurrentTokenColumn(),
          t = f.getCurrentTokenRow();
      return new a(t, l, t, l + o.value.length);
    }, this.$id = "ace/mode/logiql";
  }.call(c.prototype), t.Mode = c;
});

(function () {
  ace.require(["ace/mode/logiql"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-logtalk.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-logtalk.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/logtalk_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "punctuation.definition.comment.logtalk",
        regex: "/\\*",
        push: [{
          token: "punctuation.definition.comment.logtalk",
          regex: "\\*/",
          next: "pop"
        }, {
          defaultToken: "comment.block.logtalk"
        }]
      }, {
        todo: "fix grouping",
        token: ["comment.line.percentage.logtalk", "punctuation.definition.comment.logtalk"],
        regex: "%.*$\\n?"
      }, {
        todo: "fix grouping",
        token: ["storage.type.opening.logtalk", "punctuation.definition.storage.type.logtalk"],
        regex: ":-\\s(?:object|protocol|category|module)(?=[(])"
      }, {
        todo: "fix grouping",
        token: ["storage.type.closing.logtalk", "punctuation.definition.storage.type.logtalk"],
        regex: ":-\\send_(?:object|protocol|category)(?=[.])"
      }, {
        caseInsensitive: !1,
        token: "storage.type.relations.logtalk",
        regex: "\\b(?:complements|extends|i(?:nstantiates|mp(?:orts|lements))|specializes)(?=[(])"
      }, {
        caseInsensitive: !1,
        todo: "fix grouping",
        token: ["storage.modifier.others.logtalk", "punctuation.definition.storage.modifier.logtalk"],
        regex: ":-\\s(?:e(?:lse|ndif)|built_in|dynamic|synchronized|threaded)(?=[.])"
      }, {
        caseInsensitive: !1,
        todo: "fix grouping",
        token: ["storage.modifier.others.logtalk", "punctuation.definition.storage.modifier.logtalk"],
        regex: ":-\\s(?:c(?:alls|oinductive)|e(?:lif|n(?:coding|sure_loaded)|xport)|i(?:f|n(?:clude|itialization|fo))|reexport|set_(?:logtalk|prolog)_flag|uses)(?=[(])"
      }, {
        caseInsensitive: !1,
        todo: "fix grouping",
        token: ["storage.modifier.others.logtalk", "punctuation.definition.storage.modifier.logtalk"],
        regex: ":-\\s(?:alias|info|d(?:ynamic|iscontiguous)|m(?:eta_(?:non_terminal|predicate)|ode|ultifile)|p(?:ublic|r(?:otected|ivate))|op|use(?:s|_module)|synchronized)(?=[(])"
      }, {
        token: "keyword.operator.message-sending.logtalk",
        regex: "(:|::|\\^\\^)"
      }, {
        token: "keyword.operator.external-call.logtalk",
        regex: "([{}])"
      }, {
        token: "keyword.operator.mode.logtalk",
        regex: "(\\?|@)"
      }, {
        token: "keyword.operator.comparison.term.logtalk",
        regex: "(@=<|@<|@>|@>=|==|\\\\==)"
      }, {
        token: "keyword.operator.comparison.arithmetic.logtalk",
        regex: "(=<|<|>|>=|=:=|=\\\\=)"
      }, {
        token: "keyword.operator.bitwise.logtalk",
        regex: "(<<|>>|/\\\\|\\\\/|\\\\)"
      }, {
        token: "keyword.operator.evaluable.logtalk",
        regex: "\\b(?:e|pi|div|mod|rem)\\b(?![-!(^~])"
      }, {
        token: "keyword.operator.evaluable.logtalk",
        regex: "(\\*\\*|\\+|-|\\*|/|//)"
      }, {
        token: "keyword.operator.misc.logtalk",
        regex: "(:-|!|\\\\+|,|;|-->|->|=|\\=|\\.|=\\.\\.|\\^|\\bas\\b|\\bis\\b)"
      }, {
        caseInsensitive: !1,
        token: "support.function.evaluable.logtalk",
        regex: "\\b(a(bs|cos|sin|tan|tan2)|c(eiling|os)|div|exp|flo(at(_(integer|fractional)_part)?|or)|log|m(ax|in|od)|r(em|ound)|s(i(n|gn)|qrt)|t(an|runcate)|xor)(?=[(])"
      }, {
        token: "support.function.control.logtalk",
        regex: "\\b(?:true|fa(?:il|lse)|repeat|(?:instantiation|system)_error)\\b(?![-!(^~])"
      }, {
        token: "support.function.control.logtalk",
        regex: "\\b((?:type|domain|existence|permission|representation|evaluation|resource|syntax)_error)(?=[(])"
      }, {
        token: "support.function.control.logtalk",
        regex: "\\b(?:ca(?:ll|tch)|ignore|throw|once)(?=[(])"
      }, {
        token: "support.function.chars-and-bytes-io.logtalk",
        regex: "\\b(?:(?:get|p(?:eek|ut))_(c(?:har|ode)|byte)|nl)(?=[(])"
      }, {
        token: "support.function.chars-and-bytes-io.logtalk",
        regex: "\\bnl\\b"
      }, {
        token: "support.function.atom-term-processing.logtalk",
        regex: "\\b(?:atom_(?:length|c(?:hars|o(?:ncat|des)))|sub_atom|char_code|number_c(?:har|ode)s)(?=[(])"
      }, {
        caseInsensitive: !1,
        token: "support.function.term-testing.logtalk",
        regex: "\\b(?:var|atom(ic)?|integer|float|c(?:allable|ompound)|n(?:onvar|umber)|ground|acyclic_term)(?=[(])"
      }, {
        token: "support.function.term-comparison.logtalk",
        regex: "\\b(compare)(?=[(])"
      }, {
        token: "support.function.term-io.logtalk",
        regex: "\\b(?:read(_term)?|write(?:q|_(?:canonical|term))?|(current_)?(?:char_conversion|op))(?=[(])"
      }, {
        caseInsensitive: !1,
        token: "support.function.term-creation-and-decomposition.logtalk",
        regex: "\\b(arg|copy_term|functor|numbervars|term_variables)(?=[(])"
      }, {
        caseInsensitive: !1,
        token: "support.function.term-unification.logtalk",
        regex: "\\b(subsumes_term|unify_with_occurs_check)(?=[(])"
      }, {
        caseInsensitive: !1,
        token: "support.function.stream-selection-and-control.logtalk",
        regex: "\\b(?:(?:se|curren)t_(?:in|out)put|open|close|flush_output|stream_property|at_end_of_stream|set_stream_position)(?=[(])"
      }, {
        token: "support.function.stream-selection-and-control.logtalk",
        regex: "\\b(?:flush_output|at_end_of_stream)\\b"
      }, {
        token: "support.function.prolog-flags.logtalk",
        regex: "\\b((?:se|curren)t_prolog_flag)(?=[(])"
      }, {
        token: "support.function.compiling-and-loading.logtalk",
        regex: "\\b(logtalk_(?:compile|l(?:ibrary_path|oad|oad_context)|make(_target_action)?))(?=[(])"
      }, {
        token: "support.function.compiling-and-loading.logtalk",
        regex: "\\b(logtalk_make)\\b"
      }, {
        caseInsensitive: !1,
        token: "support.function.event-handling.logtalk",
        regex: "\\b(?:(?:abolish|define)_events|current_event)(?=[(])"
      }, {
        token: "support.function.implementation-defined-hooks.logtalk",
        regex: "\\b(?:(?:create|current|set)_logtalk_flag|halt)(?=[(])"
      }, {
        token: "support.function.implementation-defined-hooks.logtalk",
        regex: "\\b(halt)\\b"
      }, {
        token: "support.function.sorting.logtalk",
        regex: "\\b((key)?(sort))(?=[(])"
      }, {
        caseInsensitive: !1,
        token: "support.function.entity-creation-and-abolishing.logtalk",
        regex: "\\b((c(?:reate|urrent)|abolish)_(?:object|protocol|category))(?=[(])"
      }, {
        caseInsensitive: !1,
        token: "support.function.reflection.logtalk",
        regex: "\\b((object|protocol|category)_property|co(mplements_object|nforms_to_protocol)|extends_(object|protocol|category)|imp(orts_category|lements_protocol)|(instantiat|specializ)es_class)(?=[(])"
      }, {
        token: "support.function.logtalk",
        regex: "\\b((?:for|retract)all)(?=[(])"
      }, {
        caseInsensitive: !1,
        token: "support.function.execution-context.logtalk",
        regex: "\\b(?:context|parameter|se(?:lf|nder)|this)(?=[(])"
      }, {
        token: "support.function.database.logtalk",
        regex: "\\b(?:a(?:bolish|ssert(?:a|z))|clause|retract(all)?)(?=[(])"
      }, {
        token: "support.function.all-solutions.logtalk",
        regex: "\\b((?:bag|set)of|f(?:ind|or)all)(?=[(])"
      }, {
        caseInsensitive: !1,
        token: "support.function.multi-threading.logtalk",
        regex: "\\b(threaded(_(call|once|ignore|exit|peek|wait|notify))?)(?=[(])"
      }, {
        caseInsensitive: !1,
        token: "support.function.engines.logtalk",
        regex: "\\b(threaded_engine(_(create|destroy|self|next(?:_reified)?|yield|post|fetch))?)(?=[(])"
      }, {
        caseInsensitive: !1,
        token: "support.function.reflection.logtalk",
        regex: "\\b(?:current_predicate|predicate_property)(?=[(])"
      }, {
        token: "support.function.event-handler.logtalk",
        regex: "\\b(?:before|after)(?=[(])"
      }, {
        token: "support.function.message-forwarding-handler.logtalk",
        regex: "\\b(forward)(?=[(])"
      }, {
        token: "support.function.grammar-rule.logtalk",
        regex: "\\b(?:expand_(?:goal|term)|(?:goal|term)_expansion|phrase)(?=[(])"
      }, {
        token: "punctuation.definition.string.begin.logtalk",
        regex: "'",
        push: [{
          token: "constant.character.escape.logtalk",
          regex: "\\\\([\\\\abfnrtv\"']|(x[a-fA-F0-9]+|[0-7]+)\\\\)"
        }, {
          token: "punctuation.definition.string.end.logtalk",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.quoted.single.logtalk"
        }]
      }, {
        token: "punctuation.definition.string.begin.logtalk",
        regex: '"',
        push: [{
          token: "constant.character.escape.logtalk",
          regex: "\\\\."
        }, {
          token: "punctuation.definition.string.end.logtalk",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.quoted.double.logtalk"
        }]
      }, {
        token: "constant.numeric.logtalk",
        regex: "\\b(0b[0-1]+|0o[0-7]+|0x[0-9a-fA-F]+)\\b"
      }, {
        token: "constant.numeric.logtalk",
        regex: "\\b(0'\\\\.|0'.|0''|0'\")"
      }, {
        token: "constant.numeric.logtalk",
        regex: "\\b(\\d+\\.?\\d*((e|E)(\\+|-)?\\d+)?)\\b"
      }, {
        token: "variable.other.logtalk",
        regex: "\\b([A-Z_][A-Za-z0-9_]*)\\b"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.LogtalkHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/logtalk", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/tokenizer", "ace/mode/logtalk_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("../tokenizer").Tokenizer,
      o = e("./logtalk_highlight_rules").LogtalkHighlightRules,
      u = e("./folding/cstyle").FoldMode,
      a = function a() {
    this.HighlightRules = o, this.foldingRules = new u(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = "%", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/logtalk";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/logtalk"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-lsl.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-lsl.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/lsl_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function s() {
    var e = this.createKeywordMapper({
      "constant.language.float.lsl": "DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI",
      "constant.language.integer.lsl": "ACTIVE|AGENT|AGENT_ALWAYS_RUN|AGENT_ATTACHMENTS|AGENT_AUTOPILOT|AGENT_AWAY|AGENT_BUSY|AGENT_BY_LEGACY_NAME|AGENT_BY_USERNAME|AGENT_CROUCHING|AGENT_FLYING|AGENT_IN_AIR|AGENT_LIST_PARCEL|AGENT_LIST_PARCEL_OWNER|AGENT_LIST_REGION|AGENT_MOUSELOOK|AGENT_ON_OBJECT|AGENT_SCRIPTED|AGENT_SITTING|AGENT_TYPING|AGENT_WALKING|ALL_SIDES|ANIM_ON|ATTACH_AVATAR_CENTER|ATTACH_BACK|ATTACH_BELLY|ATTACH_CHEST|ATTACH_CHIN|ATTACH_HEAD|ATTACH_HUD_BOTTOM|ATTACH_HUD_BOTTOM_LEFT|ATTACH_HUD_BOTTOM_RIGHT|ATTACH_HUD_CENTER_1|ATTACH_HUD_CENTER_2|ATTACH_HUD_TOP_CENTER|ATTACH_HUD_TOP_LEFT|ATTACH_HUD_TOP_RIGHT|ATTACH_LEAR|ATTACH_LEFT_PEC|ATTACH_LEYE|ATTACH_LFOOT|ATTACH_LHAND|ATTACH_LHIP|ATTACH_LLARM|ATTACH_LLLEG|ATTACH_LSHOULDER|ATTACH_LUARM|ATTACH_LULEG|ATTACH_MOUTH|ATTACH_NECK|ATTACH_NOSE|ATTACH_PELVIS|ATTACH_REAR|ATTACH_REYE|ATTACH_RFOOT|ATTACH_RHAND|ATTACH_RHIP|ATTACH_RIGHT_PEC|ATTACH_RLARM|ATTACH_RLLEG|ATTACH_RSHOULDER|ATTACH_RUARM|ATTACH_RULEG|AVOID_CHARACTERS|AVOID_DYNAMIC_OBSTACLES|AVOID_NONE|CAMERA_ACTIVE|CAMERA_BEHINDNESS_ANGLE|CAMERA_BEHINDNESS_LAG|CAMERA_DISTANCE|CAMERA_FOCUS|CAMERA_FOCUS_LAG|CAMERA_FOCUS_LOCKED|CAMERA_FOCUS_OFFSET|CAMERA_FOCUS_THRESHOLD|CAMERA_PITCH|CAMERA_POSITION|CAMERA_POSITION_LAG|CAMERA_POSITION_LOCKED|CAMERA_POSITION_THRESHOLD|CHANGED_ALLOWED_DROP|CHANGED_COLOR|CHANGED_INVENTORY|CHANGED_LINK|CHANGED_MEDIA|CHANGED_OWNER|CHANGED_REGION|CHANGED_REGION_START|CHANGED_SCALE|CHANGED_SHAPE|CHANGED_TELEPORT|CHANGED_TEXTURE|CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES|CHARACTER_AVOIDANCE_MODE|CHARACTER_CMD_JUMP|CHARACTER_CMD_SMOOTH_STOP|CHARACTER_CMD_STOP|CHARACTER_DESIRED_SPEED|CHARACTER_DESIRED_TURN_SPEED|CHARACTER_LENGTH|CHARACTER_MAX_ACCEL|CHARACTER_MAX_DECEL|CHARACTER_MAX_SPEED|CHARACTER_MAX_TURN_RADIUS|CHARACTER_ORIENTATION|CHARACTER_RADIUS|CHARACTER_STAY_WITHIN_PARCEL|CHARACTER_TYPE|CHARACTER_TYPE_A|CHARACTER_TYPE_B|CHARACTER_TYPE_C|CHARACTER_TYPE_D|CHARACTER_TYPE_NONE|CLICK_ACTION_BUY|CLICK_ACTION_NONE|CLICK_ACTION_OPEN|CLICK_ACTION_OPEN_MEDIA|CLICK_ACTION_PAY|CLICK_ACTION_PLAY|CLICK_ACTION_SIT|CLICK_ACTION_TOUCH|CONTENT_TYPE_ATOM|CONTENT_TYPE_FORM|CONTENT_TYPE_HTML|CONTENT_TYPE_JSON|CONTENT_TYPE_LLSD|CONTENT_TYPE_RSS|CONTENT_TYPE_TEXT|CONTENT_TYPE_XHTML|CONTENT_TYPE_XML|CONTROL_BACK|CONTROL_DOWN|CONTROL_FWD|CONTROL_LBUTTON|CONTROL_LEFT|CONTROL_ML_LBUTTON|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|DATA_BORN|DATA_NAME|DATA_ONLINE|DATA_PAYINFO|DATA_SIM_POS|DATA_SIM_RATING|DATA_SIM_STATUS|DEBUG_CHANNEL|DENSITY|ERR_GENERIC|ERR_MALFORMED_PARAMS|ERR_PARCEL_PERMISSIONS|ERR_RUNTIME_PERMISSIONS|ERR_THROTTLED|ESTATE_ACCESS_ALLOWED_AGENT_ADD|ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|ESTATE_ACCESS_ALLOWED_GROUP_ADD|ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|ESTATE_ACCESS_BANNED_AGENT_ADD|ESTATE_ACCESS_BANNED_AGENT_REMOVE|FALSE|FORCE_DIRECT_PATH|FRICTION|GCNP_RADIUS|GCNP_STATIC|GRAVITY_MULTIPLIER|HORIZONTAL|HTTP_BODY_MAXLENGTH|HTTP_BODY_TRUNCATED|HTTP_CUSTOM_HEADER|HTTP_METHOD|HTTP_MIMETYPE|HTTP_PRAGMA_NO_CACHE|HTTP_VERBOSE_THROTTLE|HTTP_VERIFY_CERT|INVENTORY_ALL|INVENTORY_ANIMATION|INVENTORY_BODYPART|INVENTORY_CLOTHING|INVENTORY_GESTURE|INVENTORY_LANDMARK|INVENTORY_NONE|INVENTORY_NOTECARD|INVENTORY_OBJECT|INVENTORY_SCRIPT|INVENTORY_SOUND|INVENTORY_TEXTURE|JSON_APPEND|KFM_CMD_PAUSE|KFM_CMD_PLAY|KFM_CMD_SET_MODE|KFM_CMD_STOP|KFM_COMMAND|KFM_DATA|KFM_FORWARD|KFM_LOOP|KFM_MODE|KFM_PING_PONG|KFM_REVERSE|KFM_ROTATION|KFM_TRANSLATION|LAND_LEVEL|LAND_LOWER|LAND_NOISE|LAND_RAISE|LAND_REVERT|LAND_SMOOTH|LINK_ALL_CHILDREN|LINK_ALL_OTHERS|LINK_ROOT|LINK_SET|LINK_THIS|LIST_STAT_GEOMETRIC_MEAN|LIST_STAT_MAX|LIST_STAT_MEAN|LIST_STAT_MEDIAN|LIST_STAT_MIN|LIST_STAT_NUM_COUNT|LIST_STAT_RANGE|LIST_STAT_STD_DEV|LIST_STAT_SUM|LIST_STAT_SUM_SQUARES|LOOP|MASK_BASE|MASK_EVERYONE|MASK_GROUP|MASK_NEXT|MASK_OWNER|OBJECT_ATTACHED_POINT|OBJECT_BODY_SHAPE_TYPE|OBJECT_CHARACTER_TIME|OBJECT_CLICK_ACTION|OBJECT_CREATOR|OBJECT_DESC|OBJECT_GROUP|OBJECT_HOVER_HEIGHT|OBJECT_LAST_OWNER_ID|OBJECT_NAME|OBJECT_OWNER|OBJECT_PATHFINDING_TYPE|OBJECT_PHANTOM|OBJECT_PHYSICS|OBJECT_PHYSICS_COST|OBJECT_POS|OBJECT_PRIM_EQUIVALENCE|OBJECT_RENDER_WEIGHT|OBJECT_RETURN_PARCEL|OBJECT_RETURN_PARCEL_OWNER|OBJECT_RETURN_REGION|OBJECT_ROOT|OBJECT_ROT|OBJECT_RUNNING_SCRIPT_COUNT|OBJECT_SCRIPT_MEMORY|OBJECT_SCRIPT_TIME|OBJECT_SERVER_COST|OBJECT_STREAMING_COST|OBJECT_TEMP_ON_REZ|OBJECT_TOTAL_SCRIPT_COUNT|OBJECT_UNKNOWN_DETAIL|OBJECT_VELOCITY|OPT_AVATAR|OPT_CHARACTER|OPT_EXCLUSION_VOLUME|OPT_LEGACY_LINKSET|OPT_MATERIAL_VOLUME|OPT_OTHER|OPT_STATIC_OBSTACLE|OPT_WALKABLE|PARCEL_COUNT_GROUP|PARCEL_COUNT_OTHER|PARCEL_COUNT_OWNER|PARCEL_COUNT_SELECTED|PARCEL_COUNT_TEMP|PARCEL_COUNT_TOTAL|PARCEL_DETAILS_AREA|PARCEL_DETAILS_DESC|PARCEL_DETAILS_GROUP|PARCEL_DETAILS_ID|PARCEL_DETAILS_NAME|PARCEL_DETAILS_OWNER|PARCEL_DETAILS_SEE_AVATARS|PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS|PARCEL_FLAG_ALLOW_CREATE_OBJECTS|PARCEL_FLAG_ALLOW_DAMAGE|PARCEL_FLAG_ALLOW_FLY|PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_GROUP_SCRIPTS|PARCEL_FLAG_ALLOW_LANDMARK|PARCEL_FLAG_ALLOW_SCRIPTS|PARCEL_FLAG_ALLOW_TERRAFORM|PARCEL_FLAG_LOCAL_SOUND_ONLY|PARCEL_FLAG_RESTRICT_PUSHOBJECT|PARCEL_FLAG_USE_ACCESS_GROUP|PARCEL_FLAG_USE_ACCESS_LIST|PARCEL_FLAG_USE_BAN_LIST|PARCEL_FLAG_USE_LAND_PASS_LIST|PARCEL_MEDIA_COMMAND_AGENT|PARCEL_MEDIA_COMMAND_AUTO_ALIGN|PARCEL_MEDIA_COMMAND_DESC|PARCEL_MEDIA_COMMAND_LOOP|PARCEL_MEDIA_COMMAND_LOOP_SET|PARCEL_MEDIA_COMMAND_PAUSE|PARCEL_MEDIA_COMMAND_PLAY|PARCEL_MEDIA_COMMAND_SIZE|PARCEL_MEDIA_COMMAND_STOP|PARCEL_MEDIA_COMMAND_TEXTURE|PARCEL_MEDIA_COMMAND_TIME|PARCEL_MEDIA_COMMAND_TYPE|PARCEL_MEDIA_COMMAND_UNLOAD|PARCEL_MEDIA_COMMAND_URL|PASS_ALWAYS|PASS_IF_NOT_HANDLED|PASS_NEVER|PASSIVE|PATROL_PAUSE_AT_WAYPOINTS|PAYMENT_INFO_ON_FILE|PAYMENT_INFO_USED|PAY_DEFAULT|PAY_HIDE|PERMISSION_ATTACH|PERMISSION_CHANGE_LINKS|PERMISSION_CONTROL_CAMERA|PERMISSION_DEBIT|PERMISSION_OVERRIDE_ANIMATIONS|PERMISSION_RETURN_OBJECTS|PERMISSION_SILENT_ESTATE_MANAGEMENT|PERMISSION_TAKE_CONTROLS|PERMISSION_TELEPORT|PERMISSION_TRACK_CAMERA|PERMISSION_TRIGGER_ANIMATION|PERM_ALL|PERM_COPY|PERM_MODIFY|PERM_MOVE|PERM_TRANSFER|PING_PONG|PRIM_ALPHA_MODE|PRIM_ALPHA_MODE_BLEND|PRIM_ALPHA_MODE_EMISSIVE|PRIM_ALPHA_MODE_MASK|PRIM_ALPHA_MODE_NONE|PRIM_BUMP_BARK|PRIM_BUMP_BLOBS|PRIM_BUMP_BRICKS|PRIM_BUMP_BRIGHT|PRIM_BUMP_CHECKER|PRIM_BUMP_CONCRETE|PRIM_BUMP_DARK|PRIM_BUMP_DISKS|PRIM_BUMP_GRAVEL|PRIM_BUMP_LARGETILE|PRIM_BUMP_NONE|PRIM_BUMP_SHINY|PRIM_BUMP_SIDING|PRIM_BUMP_STONE|PRIM_BUMP_STUCCO|PRIM_BUMP_SUCTION|PRIM_BUMP_TILE|PRIM_BUMP_WEAVE|PRIM_BUMP_WOOD|PRIM_COLOR|PRIM_DESC|PRIM_FLEXIBLE|PRIM_FULLBRIGHT|PRIM_GLOW|PRIM_HOLE_CIRCLE|PRIM_HOLE_DEFAULT|PRIM_HOLE_SQUARE|PRIM_HOLE_TRIANGLE|PRIM_LINK_TARGET|PRIM_MATERIAL|PRIM_MATERIAL_FLESH|PRIM_MATERIAL_GLASS|PRIM_MATERIAL_METAL|PRIM_MATERIAL_PLASTIC|PRIM_MATERIAL_RUBBER|PRIM_MATERIAL_STONE|PRIM_MATERIAL_WOOD|PRIM_MEDIA_ALT_IMAGE_ENABLE|PRIM_MEDIA_AUTO_LOOP|PRIM_MEDIA_AUTO_PLAY|PRIM_MEDIA_AUTO_SCALE|PRIM_MEDIA_AUTO_ZOOM|PRIM_MEDIA_CONTROLS|PRIM_MEDIA_CONTROLS_MINI|PRIM_MEDIA_CONTROLS_STANDARD|PRIM_MEDIA_CURRENT_URL|PRIM_MEDIA_FIRST_CLICK_INTERACT|PRIM_MEDIA_HEIGHT_PIXELS|PRIM_MEDIA_HOME_URL|PRIM_MEDIA_MAX_HEIGHT_PIXELS|PRIM_MEDIA_MAX_URL_LENGTH|PRIM_MEDIA_MAX_WHITELIST_COUNT|PRIM_MEDIA_MAX_WHITELIST_SIZE|PRIM_MEDIA_MAX_WIDTH_PIXELS|PRIM_MEDIA_PARAM_MAX|PRIM_MEDIA_PERMS_CONTROL|PRIM_MEDIA_PERMS_INTERACT|PRIM_MEDIA_PERM_ANYONE|PRIM_MEDIA_PERM_GROUP|PRIM_MEDIA_PERM_NONE|PRIM_MEDIA_PERM_OWNER|PRIM_MEDIA_WHITELIST|PRIM_MEDIA_WHITELIST_ENABLE|PRIM_MEDIA_WIDTH_PIXELS|PRIM_NAME|PRIM_NORMAL|PRIM_OMEGA|PRIM_PHANTOM|PRIM_PHYSICS|PRIM_PHYSICS_SHAPE_CONVEX|PRIM_PHYSICS_SHAPE_NONE|PRIM_PHYSICS_SHAPE_PRIM|PRIM_PHYSICS_SHAPE_TYPE|PRIM_POINT_LIGHT|PRIM_POSITION|PRIM_POS_LOCAL|PRIM_ROTATION|PRIM_ROT_LOCAL|PRIM_SCULPT_FLAG_INVERT|PRIM_SCULPT_FLAG_MIRROR|PRIM_SCULPT_TYPE_CYLINDER|PRIM_SCULPT_TYPE_MASK|PRIM_SCULPT_TYPE_PLANE|PRIM_SCULPT_TYPE_SPHERE|PRIM_SCULPT_TYPE_TORUS|PRIM_SHINY_HIGH|PRIM_SHINY_LOW|PRIM_SHINY_MEDIUM|PRIM_SHINY_NONE|PRIM_SIZE|PRIM_SLICE|PRIM_SPECULAR|PRIM_TEMP_ON_REZ|PRIM_TEXGEN|PRIM_TEXGEN_DEFAULT|PRIM_TEXGEN_PLANAR|PRIM_TEXT|PRIM_TEXTURE|PRIM_TYPE|PRIM_TYPE_BOX|PRIM_TYPE_CYLINDER|PRIM_TYPE_PRISM|PRIM_TYPE_RING|PRIM_TYPE_SCULPT|PRIM_TYPE_SPHERE|PRIM_TYPE_TORUS|PRIM_TYPE_TUBE|PROFILE_NONE|PROFILE_SCRIPT_MEMORY|PSYS_PART_BF_DEST_COLOR|PSYS_PART_BF_ONE|PSYS_PART_BF_ONE_MINUS_DEST_COLOR|PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA|PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR|PSYS_PART_BF_SOURCE_ALPHA|PSYS_PART_BF_SOURCE_COLOR|PSYS_PART_BF_ZERO|PSYS_PART_BLEND_FUNC_DEST|PSYS_PART_BLEND_FUNC_SOURCE|PSYS_PART_BOUNCE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_END_ALPHA|PSYS_PART_END_COLOR|PSYS_PART_END_GLOW|PSYS_PART_END_SCALE|PSYS_PART_FLAGS|PSYS_PART_FOLLOW_SRC_MASK|PSYS_PART_FOLLOW_VELOCITY_MASK|PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_MAX_AGE|PSYS_PART_RIBBON_MASK|PSYS_PART_START_ALPHA|PSYS_PART_START_COLOR|PSYS_PART_START_GLOW|PSYS_PART_START_SCALE|PSYS_PART_TARGET_LINEAR_MASK|PSYS_PART_TARGET_POS_MASK|PSYS_PART_WIND_MASK|PSYS_SRC_ACCEL|PSYS_SRC_ANGLE_BEGIN|PSYS_SRC_ANGLE_END|PSYS_SRC_BURST_PART_COUNT|PSYS_SRC_BURST_RADIUS|PSYS_SRC_BURST_RATE|PSYS_SRC_BURST_SPEED_MAX|PSYS_SRC_BURST_SPEED_MIN|PSYS_SRC_MAX_AGE|PSYS_SRC_OMEGA|PSYS_SRC_PATTERN|PSYS_SRC_PATTERN_ANGLE|PSYS_SRC_PATTERN_ANGLE_CONE|PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY|PSYS_SRC_PATTERN_DROP|PSYS_SRC_PATTERN_EXPLODE|PSYS_SRC_TARGET_KEY|PSYS_SRC_TEXTURE|PUBLIC_CHANNEL|PURSUIT_FUZZ_FACTOR|PURSUIT_GOAL_TOLERANCE|PURSUIT_INTERCEPT|PURSUIT_OFFSET|PU_EVADE_HIDDEN|PU_EVADE_SPOTTED|PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED|PU_FAILURE_INVALID_GOAL|PU_FAILURE_INVALID_START|PU_FAILURE_NO_NAVMESH|PU_FAILURE_NO_VALID_DESTINATION|PU_FAILURE_OTHER|PU_FAILURE_PARCEL_UNREACHABLE|PU_FAILURE_TARGET_GONE|PU_FAILURE_UNREACHABLE|PU_GOAL_REACHED|PU_SLOWDOWN_DISTANCE_REACHED|RCERR_CAST_TIME_EXCEEDED|RCERR_SIM_PERF_LOW|RCERR_UNKNOWN|RC_DATA_FLAGS|RC_DETECT_PHANTOM|RC_GET_LINK_NUM|RC_GET_NORMAL|RC_GET_ROOT_KEY|RC_MAX_HITS|RC_REJECT_AGENTS|RC_REJECT_LAND|RC_REJECT_NONPHYSICAL|RC_REJECT_PHYSICAL|RC_REJECT_TYPES|REGION_FLAG_ALLOW_DAMAGE|REGION_FLAG_ALLOW_DIRECT_TELEPORT|REGION_FLAG_BLOCK_FLY|REGION_FLAG_BLOCK_TERRAFORM|REGION_FLAG_DISABLE_COLLISIONS|REGION_FLAG_DISABLE_PHYSICS|REGION_FLAG_FIXED_SUN|REGION_FLAG_RESTRICT_PUSHOBJECT|REGION_FLAG_SANDBOX|REMOTE_DATA_CHANNEL|REMOTE_DATA_REPLY|REMOTE_DATA_REQUEST|REQUIRE_LINE_OF_SIGHT|RESTITUTION|REVERSE|ROTATE|SCALE|SCRIPTED|SIM_STAT_PCT_CHARS_STEPPED|SMOOTH|STATUS_BLOCK_GRAB|STATUS_BLOCK_GRAB_OBJECT|STATUS_BOUNDS_ERROR|STATUS_CAST_SHADOWS|STATUS_DIE_AT_EDGE|STATUS_INTERNAL_ERROR|STATUS_MALFORMED_PARAMS|STATUS_NOT_FOUND|STATUS_NOT_SUPPORTED|STATUS_OK|STATUS_PHANTOM|STATUS_PHYSICS|STATUS_RETURN_AT_EDGE|STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z|STATUS_SANDBOX|STATUS_TYPE_MISMATCH|STATUS_WHITELIST_FAILED|STRING_TRIM|STRING_TRIM_HEAD|STRING_TRIM_TAIL|TOUCH_INVALID_FACE|TRAVERSAL_TYPE|TRAVERSAL_TYPE_FAST|TRAVERSAL_TYPE_NONE|TRAVERSAL_TYPE_SLOW|TRUE|TYPE_FLOAT|TYPE_INTEGER|TYPE_INVALID|TYPE_KEY|TYPE_ROTATION|TYPE_STRING|TYPE_VECTOR|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE|VEHICLE_ANGULAR_FRICTION_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DIRECTION|VEHICLE_ANGULAR_MOTOR_TIMESCALE|VEHICLE_BANKING_EFFICIENCY|VEHICLE_BANKING_MIX|VEHICLE_BANKING_TIMESCALE|VEHICLE_BUOYANCY|VEHICLE_FLAG_CAMERA_DECOUPLED|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT|VEHICLE_FLAG_HOVER_TERRAIN_ONLY|VEHICLE_FLAG_HOVER_UP_ONLY|VEHICLE_FLAG_HOVER_WATER_ONLY|VEHICLE_FLAG_LIMIT_MOTOR_UP|VEHICLE_FLAG_LIMIT_ROLL_ONLY|VEHICLE_FLAG_MOUSELOOK_BANK|VEHICLE_FLAG_MOUSELOOK_STEER|VEHICLE_FLAG_NO_DEFLECTION_UP|VEHICLE_HOVER_EFFICIENCY|VEHICLE_HOVER_HEIGHT|VEHICLE_HOVER_TIMESCALE|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY|VEHICLE_LINEAR_DEFLECTION_TIMESCALE|VEHICLE_LINEAR_FRICTION_TIMESCALE|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE|VEHICLE_LINEAR_MOTOR_DIRECTION|VEHICLE_LINEAR_MOTOR_OFFSET|VEHICLE_LINEAR_MOTOR_TIMESCALE|VEHICLE_REFERENCE_FRAME|VEHICLE_TYPE_AIRPLANE|VEHICLE_TYPE_BALLOON|VEHICLE_TYPE_BOAT|VEHICLE_TYPE_CAR|VEHICLE_TYPE_NONE|VEHICLE_TYPE_SLED|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE|VERTICAL|WANDER_PAUSE_AT_WAYPOINTS|XP_ERROR_EXPERIENCES_DISABLED|XP_ERROR_EXPERIENCE_DISABLED|XP_ERROR_EXPERIENCE_SUSPENDED|XP_ERROR_INVALID_EXPERIENCE|XP_ERROR_INVALID_PARAMETERS|XP_ERROR_KEY_NOT_FOUND|XP_ERROR_MATURITY_EXCEEDED|XP_ERROR_NONE|XP_ERROR_NOT_FOUND|XP_ERROR_NOT_PERMITTED|XP_ERROR_NO_EXPERIENCE|XP_ERROR_QUOTA_EXCEEDED|XP_ERROR_RETRY_UPDATE|XP_ERROR_STORAGE_EXCEPTION|XP_ERROR_STORE_DISABLED|XP_ERROR_THROTTLED|XP_ERROR_UNKNOWN_ERROR",
      "constant.language.integer.boolean.lsl": "FALSE|TRUE",
      "constant.language.quaternion.lsl": "ZERO_ROTATION",
      "constant.language.string.lsl": "EOF|JSON_ARRAY|JSON_DELETE|JSON_FALSE|JSON_INVALID|JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED",
      "constant.language.vector.lsl": "TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR",
      "invalid.broken.lsl": "LAND_LARGE_BRUSH|LAND_MEDIUM_BRUSH|LAND_SMALL_BRUSH",
      "invalid.deprecated.lsl": "ATTACH_LPEC|ATTACH_RPEC|DATA_RATING|OBJECT_ATTACHMENT_GEOMETRY_BYTES|OBJECT_ATTACHMENT_SURFACE_AREA|PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_TYPE_LEGACY|PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llClearExperiencePermissions|llCloud|llGetExperienceList|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|llRemoteDataSetRegion|llSound|llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect",
      "invalid.illegal.lsl": "event",
      "invalid.unimplemented.lsl": "CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|PERMISSION_CHANGE_JOINTS|PERMISSION_CHANGE_PERMISSIONS|PERMISSION_EXPERIENCE|PERMISSION_RELEASE_OWNERSHIP|PERMISSION_REMAP_CONTROLS|PRIM_PHYSICS_MATERIAL|PSYS_SRC_OBJ_REL_MASK|llCollisionSprite|llPointAt|llRefreshPrimURL|llReleaseCamera|llRemoteLoadScript|llSetPrimURL|llStopPointAt|llTakeCamera",
      "reserved.godmode.lsl": "llGodLikeRezObject|llSetInventoryPermMask|llSetObjectPermMask",
      "reserved.log.lsl": "print",
      "keyword.control.lsl": "do|else|for|if|jump|return|while",
      "storage.type.lsl": "float|integer|key|list|quaternion|rotation|string|vector",
      "support.function.lsl": "llAbs|llAcos|llAddToLandBanList|llAddToLandPassList|llAdjustSoundVolume|llAgentInExperience|llAllowInventoryDrop|llAngleBetween|llApplyImpulse|llApplyRotationalImpulse|llAsin|llAtan2|llAttachToAvatar|llAttachToAvatarTemp|llAvatarOnLinkSitTarget|llAvatarOnSitTarget|llAxes2Rot|llAxisAngle2Rot|llBase64ToInteger|llBase64ToString|llBreakAllLinks|llBreakLink|llCSV2List|llCastRay|llCeil|llClearCameraParams|llClearLinkMedia|llClearPrimMedia|llCloseRemoteDataChannel|llCollisionFilter|llCollisionSound|llCos|llCreateCharacter|llCreateKeyValue|llCreateLink|llDataSizeKeyValue|llDeleteCharacter|llDeleteKeyValue|llDeleteSubList|llDeleteSubString|llDetachFromAvatar|llDetectedGrab|llDetectedGroup|llDetectedKey|llDetectedLinkNumber|llDetectedName|llDetectedOwner|llDetectedPos|llDetectedRot|llDetectedTouchBinormal|llDetectedTouchFace|llDetectedTouchNormal|llDetectedTouchPos|llDetectedTouchST|llDetectedTouchUV|llDetectedType|llDetectedVel|llDialog|llDie|llDumpList2String|llEdgeOfWorld|llEjectFromLand|llEmail|llEscapeURL|llEuler2Rot|llEvade|llExecCharacterCmd|llFabs|llFleeFrom|llFloor|llForceMouselook|llFrand|llGenerateKey|llGetAccel|llGetAgentInfo|llGetAgentLanguage|llGetAgentList|llGetAgentSize|llGetAlpha|llGetAndResetTime|llGetAnimation|llGetAnimationList|llGetAnimationOverride|llGetAttached|llGetAttachedList|llGetBoundingBox|llGetCameraPos|llGetCameraRot|llGetCenterOfMass|llGetClosestNavPoint|llGetColor|llGetCreator|llGetDate|llGetDisplayName|llGetEnergy|llGetEnv|llGetExperienceDetails|llGetExperienceErrorMessage|llGetForce|llGetFreeMemory|llGetFreeURLs|llGetGMTclock|llGetGeometricCenter|llGetHTTPHeader|llGetInventoryCreator|llGetInventoryKey|llGetInventoryName|llGetInventoryNumber|llGetInventoryPermMask|llGetInventoryType|llGetKey|llGetLandOwnerAt|llGetLinkKey|llGetLinkMedia|llGetLinkName|llGetLinkNumber|llGetLinkNumberOfSides|llGetLinkPrimitiveParams|llGetListEntryType|llGetListLength|llGetLocalPos|llGetLocalRot|llGetMass|llGetMassMKS|llGetMaxScaleFactor|llGetMemoryLimit|llGetMinScaleFactor|llGetNextEmail|llGetNotecardLine|llGetNumberOfNotecardLines|llGetNumberOfPrims|llGetNumberOfSides|llGetObjectDesc|llGetObjectDetails|llGetObjectMass|llGetObjectName|llGetObjectPermMask|llGetObjectPrimCount|llGetOmega|llGetOwner|llGetOwnerKey|llGetParcelDetails|llGetParcelFlags|llGetParcelMaxPrims|llGetParcelMusicURL|llGetParcelPrimCount|llGetParcelPrimOwners|llGetPermissions|llGetPermissionsKey|llGetPhysicsMaterial|llGetPos|llGetPrimMediaParams|llGetPrimitiveParams|llGetRegionAgentCount|llGetRegionCorner|llGetRegionFPS|llGetRegionFlags|llGetRegionName|llGetRegionTimeDilation|llGetRootPosition|llGetRootRotation|llGetRot|llGetSPMaxMemory|llGetScale|llGetScriptName|llGetScriptState|llGetSimStats|llGetSimulatorHostname|llGetStartParameter|llGetStaticPath|llGetStatus|llGetSubString|llGetSunDirection|llGetTexture|llGetTextureOffset|llGetTextureRot|llGetTextureScale|llGetTime|llGetTimeOfDay|llGetTimestamp|llGetTorque|llGetUnixTime|llGetUsedMemory|llGetUsername|llGetVel|llGetWallclock|llGiveInventory|llGiveInventoryList|llGiveMoney|llGround|llGroundContour|llGroundNormal|llGroundRepel|llGroundSlope|llHTTPRequest|llHTTPResponse|llInsertString|llInstantMessage|llIntegerToBase64|llJson2List|llJsonGetValue|llJsonSetValue|llJsonValueType|llKey2Name|llKeyCountKeyValue|llKeysKeyValue|llLinkParticleSystem|llLinkSitTarget|llList2CSV|llList2Float|llList2Integer|llList2Json|llList2Key|llList2List|llList2ListStrided|llList2Rot|llList2String|llList2Vector|llListFindList|llListInsertList|llListRandomize|llListReplaceList|llListSort|llListStatistics|llListen|llListenControl|llListenRemove|llLoadURL|llLog|llLog10|llLookAt|llLoopSound|llLoopSoundMaster|llLoopSoundSlave|llMD5String|llManageEstateAccess|llMapDestination|llMessageLinked|llMinEventDelay|llModPow|llModifyLand|llMoveToTarget|llNavigateTo|llOffsetTexture|llOpenRemoteDataChannel|llOverMyLand|llOwnerSay|llParcelMediaCommandList|llParcelMediaQuery|llParseString2List|llParseStringKeepNulls|llParticleSystem|llPassCollisions|llPassTouches|llPatrolPoints|llPlaySound|llPlaySoundSlave|llPow|llPreloadSound|llPursue|llPushObject|llReadKeyValue|llRegionSay|llRegionSayTo|llReleaseControls|llReleaseURL|llRemoteDataReply|llRemoteLoadScriptPin|llRemoveFromLandBanList|llRemoveFromLandPassList|llRemoveInventory|llRemoveVehicleFlags|llRequestAgentData|llRequestDisplayName|llRequestExperiencePermissions|llRequestInventoryData|llRequestPermissions|llRequestSecureURL|llRequestSimulatorData|llRequestURL|llRequestUsername|llResetAnimationOverride|llResetLandBanList|llResetLandPassList|llResetOtherScript|llResetScript|llResetTime|llReturnObjectsByID|llReturnObjectsByOwner|llRezAtRoot|llRezObject|llRot2Angle|llRot2Axis|llRot2Euler|llRot2Fwd|llRot2Left|llRot2Up|llRotBetween|llRotLookAt|llRotTarget|llRotTargetRemove|llRotateTexture|llRound|llSHA1String|llSameGroup|llSay|llScaleByFactor|llScaleTexture|llScriptDanger|llScriptProfiler|llSendRemoteData|llSensor|llSensorRemove|llSensorRepeat|llSetAlpha|llSetAngularVelocity|llSetAnimationOverride|llSetBuoyancy|llSetCameraAtOffset|llSetCameraEyeOffset|llSetCameraParams|llSetClickAction|llSetColor|llSetContentType|llSetDamage|llSetForce|llSetForceAndTorque|llSetHoverHeight|llSetKeyframedMotion|llSetLinkAlpha|llSetLinkCamera|llSetLinkColor|llSetLinkMedia|llSetLinkPrimitiveParams|llSetLinkPrimitiveParamsFast|llSetLinkTexture|llSetLinkTextureAnim|llSetLocalRot|llSetMemoryLimit|llSetObjectDesc|llSetObjectName|llSetParcelMusicURL|llSetPayPrice|llSetPhysicsMaterial|llSetPos|llSetPrimMediaParams|llSetPrimitiveParams|llSetRegionPos|llSetRemoteScriptAccessPin|llSetRot|llSetScale|llSetScriptState|llSetSitText|llSetSoundQueueing|llSetSoundRadius|llSetStatus|llSetText|llSetTexture|llSetTextureAnim|llSetTimerEvent|llSetTorque|llSetTouchText|llSetVehicleFlags|llSetVehicleFloatParam|llSetVehicleRotationParam|llSetVehicleType|llSetVehicleVectorParam|llSetVelocity|llShout|llSin|llSitTarget|llSleep|llSqrt|llStartAnimation|llStopAnimation|llStopHover|llStopLookAt|llStopMoveToTarget|llStopSound|llStringLength|llStringToBase64|llStringTrim|llSubStringIndex|llTakeControls|llTan|llTarget|llTargetOmega|llTargetRemove|llTeleportAgent|llTeleportAgentGlobalCoords|llTeleportAgentHome|llTextBox|llToLower|llToUpper|llTransferLindenDollars|llTriggerSound|llTriggerSoundLimited|llUnSit|llUnescapeURL|llUpdateCharacter|llUpdateKeyValue|llVecDist|llVecMag|llVecNorm|llVolumeDetect|llWanderWithin|llWater|llWhisper|llWind|llXorBase64",
      "support.function.event.lsl": "at_rot_target|at_target|attach|changed|collision|collision_end|collision_start|control|dataserver|email|experience_permissions|experience_permissions_denied|http_request|http_response|land_collision|land_collision_end|land_collision_start|link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result"
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment.line.double-slash.lsl",
        regex: "\\/\\/.*$"
      }, {
        token: "comment.block.begin.lsl",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string.quoted.double.lsl",
        start: '"',
        end: '"',
        next: [{
          token: "constant.character.escape.lsl",
          regex: /\\[tn"\\]/
        }]
      }, {
        token: "constant.numeric.lsl",
        regex: "(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b"
      }, {
        token: "entity.name.state.lsl",
        regex: "\\b((state)\\s+[A-Za-z_]\\w*|default)\\b"
      }, {
        token: e,
        regex: "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"
      }, {
        token: "support.function.user-defined.lsl",
        regex: /\b([a-zA-Z_]\w*)(?=\(.*?\))/
      }, {
        token: "keyword.operator.lsl",
        regex: "\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?"
      }, {
        token: "invalid.illegal.keyword.operator.lsl",
        regex: ":=?"
      }, {
        token: "punctuation.operator.lsl",
        regex: "\\,|\\;"
      }, {
        token: "paren.lparen.lsl",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen.lsl",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text.lsl",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment.block.end.lsl",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment.block.lsl"
      }]
    }, this.normalizeRules();
  }

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules;
  r.inherits(s, i), t.LSLHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/lsl", ["require", "exports", "module", "ace/mode/lsl_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/text", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle", "ace/lib/oop"], function (e, t, n) {
  "use strict";

  var r = e("./lsl_highlight_rules").LSLHighlightRules,
      i = e("./matching_brace_outdent").MatchingBraceOutdent,
      s = e("../range").Range,
      o = e("./text").Mode,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = e("../lib/oop"),
      l = function l() {
    this.HighlightRules = r, this.$outdent = new i(), this.$behaviour = new u(), this.foldingRules = new a();
  };

  f.inherits(l, o), function () {
    this.lineCommentStart = ["//"], this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type === "comment.block.lsl") return r;

      if (e === "start") {
        var u = t.match(/^.*[\{\(\[]\s*$/);
        u && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/lsl", this.snippetFileId = "ace/snippets/lsl";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/lsl"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-lua.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-lua.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/lua_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",
        t = "true|false|nil|_G|_VERSION",
        n = "string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",
        r = "string|package|os|io|math|debug|table|coroutine",
        i = "setn|foreach|foreachi|gcinfo|log10|maxn",
        s = this.createKeywordMapper({
      keyword: e,
      "support.function": n,
      "keyword.deprecated": i,
      "constant.library": r,
      "constant.language": t,
      "variable.language": "self"
    }, "identifier"),
        o = "(?:(?:[1-9]\\d*)|(?:0))",
        u = "(?:0[xX][\\dA-Fa-f]+)",
        a = "(?:" + o + "|" + u + ")",
        f = "(?:\\.\\d+)",
        l = "(?:\\d+)",
        c = "(?:(?:" + l + "?" + f + ")|(?:" + l + "\\.))",
        h = "(?:" + c + ")";
    this.$rules = {
      start: [{
        stateName: "bracketedComment",
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.length - 2, t), "comment";
        },
        regex: /\-\-\[=*\[/,
        next: [{
          onMatch: function onMatch(e, t, n) {
            return e.length == n[1] ? (n.shift(), n.shift(), this.next = n.shift()) : this.next = "", "comment";
          },
          regex: /\]=*\]/,
          next: "start"
        }, {
          defaultToken: "comment"
        }]
      }, {
        token: "comment",
        regex: "\\-\\-.*$"
      }, {
        stateName: "bracketedString",
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.length, t), "string.start";
        },
        regex: /\[=*\[/,
        next: [{
          onMatch: function onMatch(e, t, n) {
            return e.length == n[1] ? (n.shift(), n.shift(), this.next = n.shift()) : this.next = "", "string.end";
          },
          regex: /\]=*\]/,
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: '"(?:[^\\\\]|\\\\.)*?"'
      }, {
        token: "string",
        regex: "'(?:[^\\\\]|\\\\.)*?'"
      }, {
        token: "constant.numeric",
        regex: h
      }, {
        token: "constant.numeric",
        regex: a + "\\b"
      }, {
        token: s,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text",
        regex: "\\s+|\\w+"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.LuaHighlightRules = s;
}), ace.define("ace/mode/folding/lua", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = e("../../token_iterator").TokenIterator,
      u = t.FoldMode = function () {};

  r.inherits(u, i), function () {
    this.foldingStartMarker = /\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/, this.foldingStopMarker = /\bend\b|^\s*}|\]=*\]/, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = this.foldingStartMarker.test(r),
          s = this.foldingStopMarker.test(r);

      if (i && !s) {
        var o = r.match(this.foldingStartMarker);
        if (o[1] == "then" && /\belseif\b/.test(r)) return;

        if (o[1]) {
          if (e.getTokenAt(n, o.index + 1).type === "keyword") return "start";
        } else {
          if (!o[2]) return "start";
          var u = e.bgTokenizer.getState(n) || "";
          if (u[0] == "bracketedComment" || u[0] == "bracketedString") return "start";
        }
      }

      if (t != "markbeginend" || !s || i && s) return "";
      var o = r.match(this.foldingStopMarker);

      if (o[0] === "end") {
        if (e.getTokenAt(n, o.index + 1).type === "keyword") return "end";
      } else {
        if (o[0][0] !== "]") return "end";
        var u = e.bgTokenizer.getState(n - 1) || "";
        if (u[0] == "bracketedComment" || u[0] == "bracketedString") return "end";
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.doc.getLine(n),
          i = this.foldingStartMarker.exec(r);
      if (i) return i[1] ? this.luaBlock(e, n, i.index + 1) : i[2] ? e.getCommentFoldRange(n, i.index + 1) : this.openingBracketBlock(e, "{", n, i.index);
      var i = this.foldingStopMarker.exec(r);
      if (i) return i[0] === "end" && e.getTokenAt(n, i.index + 1).type === "keyword" ? this.luaBlock(e, n, i.index + 1) : i[0][0] === "]" ? e.getCommentFoldRange(n, i.index + 1) : this.closingBracketBlock(e, "}", n, i.index + i[0].length);
    }, this.luaBlock = function (e, t, n, r) {
      var i = new o(e, t, n),
          u = {
        "function": 1,
        "do": 1,
        then: 1,
        elseif: -1,
        end: -1,
        repeat: 1,
        until: -1
      },
          a = i.getCurrentToken();
      if (!a || a.type != "keyword") return;
      var f = a.value,
          l = [f],
          c = u[f];
      if (!c) return;
      var h = c === -1 ? i.getCurrentTokenColumn() : e.getLine(t).length,
          p = t;
      i.step = c === -1 ? i.stepBackward : i.stepForward;

      while (a = i.step()) {
        if (a.type !== "keyword") continue;
        var d = c * u[a.value];
        if (d > 0) l.unshift(a.value);else if (d <= 0) {
          l.shift();
          if (!l.length && a.value != "elseif") break;
          d === 0 && l.unshift(a.value);
        }
      }

      if (!a) return null;
      if (r) return i.getCurrentTokenRange();
      var t = i.getCurrentTokenRow();
      return c === -1 ? new s(t, e.getLine(t).length, p, h) : new s(p, h, t, i.getCurrentTokenColumn());
    };
  }.call(u.prototype);
}), ace.define("ace/mode/lua", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/lua_highlight_rules", "ace/mode/folding/lua", "ace/range", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./lua_highlight_rules").LuaHighlightRules,
      o = e("./folding/lua").FoldMode,
      u = e("../range").Range,
      a = e("../worker/worker_client").WorkerClient,
      f = function f() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(f, i), function () {
    function n(t) {
      var n = 0;

      for (var r = 0; r < t.length; r++) {
        var i = t[r];
        i.type == "keyword" ? i.value in e && (n += e[i.value]) : i.type == "paren.lparen" ? n += i.value.length : i.type == "paren.rparen" && (n -= i.value.length);
      }

      return n < 0 ? -1 : n > 0 ? 1 : 0;
    }

    this.lineCommentStart = "--", this.blockComment = {
      start: "--[",
      end: "]--"
    };
    var e = {
      "function": 1,
      then: 1,
      "do": 1,
      "else": 1,
      elseif: 1,
      repeat: 1,
      end: -1,
      until: -1
    },
        t = ["else", "elseif", "end", "until"];
    this.getNextLineIndent = function (e, t, r) {
      var i = this.$getIndent(t),
          s = 0,
          o = this.getTokenizer().getLineTokens(t, e),
          u = o.tokens;
      return e == "start" && (s = n(u)), s > 0 ? i + r : s < 0 && i.substr(i.length - r.length) == r && !this.checkOutdent(e, t, "\n") ? i.substr(0, i.length - r.length) : i;
    }, this.checkOutdent = function (e, n, r) {
      if (r != "\n" && r != "\r" && r != "\r\n") return !1;
      if (n.match(/^\s*[\)\}\]]$/)) return !0;
      var i = this.getTokenizer().getLineTokens(n.trim(), e).tokens;
      return !i || !i.length ? !1 : i[0].type == "keyword" && t.indexOf(i[0].value) != -1;
    }, this.getMatching = function (t, n, r) {
      if (n == undefined) {
        var i = t.selection.lead;
        r = i.column, n = i.row;
      }

      var s = t.getTokenAt(n, r);
      if (s && s.value in e) return this.foldingRules.luaBlock(t, n, r, !0);
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n),
          i = r.match(/^\s*/)[0].length;
      if (!i || !n) return;
      var s = this.getMatching(t, n, i + 1);
      if (!s || s.start.row == n) return;
      var o = this.$getIndent(t.getLine(s.start.row));
      o.length != i && (t.replace(new u(n, 0, n, i), o), t.outdentRows(new u(n + 1, 0, n + 1, 0)));
    }, this.createWorker = function (e) {
      var t = new a(["ace"], "ace/mode/lua_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/lua", this.snippetFileId = "ace/snippets/lua";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/lua"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-luapage.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-luapage.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/lua_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",
        t = "true|false|nil|_G|_VERSION",
        n = "string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",
        r = "string|package|os|io|math|debug|table|coroutine",
        i = "setn|foreach|foreachi|gcinfo|log10|maxn",
        s = this.createKeywordMapper({
      keyword: e,
      "support.function": n,
      "keyword.deprecated": i,
      "constant.library": r,
      "constant.language": t,
      "variable.language": "self"
    }, "identifier"),
        o = "(?:(?:[1-9]\\d*)|(?:0))",
        u = "(?:0[xX][\\dA-Fa-f]+)",
        a = "(?:" + o + "|" + u + ")",
        f = "(?:\\.\\d+)",
        l = "(?:\\d+)",
        c = "(?:(?:" + l + "?" + f + ")|(?:" + l + "\\.))",
        h = "(?:" + c + ")";
    this.$rules = {
      start: [{
        stateName: "bracketedComment",
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.length - 2, t), "comment";
        },
        regex: /\-\-\[=*\[/,
        next: [{
          onMatch: function onMatch(e, t, n) {
            return e.length == n[1] ? (n.shift(), n.shift(), this.next = n.shift()) : this.next = "", "comment";
          },
          regex: /\]=*\]/,
          next: "start"
        }, {
          defaultToken: "comment"
        }]
      }, {
        token: "comment",
        regex: "\\-\\-.*$"
      }, {
        stateName: "bracketedString",
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.length, t), "string.start";
        },
        regex: /\[=*\[/,
        next: [{
          onMatch: function onMatch(e, t, n) {
            return e.length == n[1] ? (n.shift(), n.shift(), this.next = n.shift()) : this.next = "", "string.end";
          },
          regex: /\]=*\]/,
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: '"(?:[^\\\\]|\\\\.)*?"'
      }, {
        token: "string",
        regex: "'(?:[^\\\\]|\\\\.)*?'"
      }, {
        token: "constant.numeric",
        regex: h
      }, {
        token: "constant.numeric",
        regex: a + "\\b"
      }, {
        token: s,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text",
        regex: "\\s+|\\w+"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.LuaHighlightRules = s;
}), ace.define("ace/mode/folding/lua", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = e("../../token_iterator").TokenIterator,
      u = t.FoldMode = function () {};

  r.inherits(u, i), function () {
    this.foldingStartMarker = /\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/, this.foldingStopMarker = /\bend\b|^\s*}|\]=*\]/, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = this.foldingStartMarker.test(r),
          s = this.foldingStopMarker.test(r);

      if (i && !s) {
        var o = r.match(this.foldingStartMarker);
        if (o[1] == "then" && /\belseif\b/.test(r)) return;

        if (o[1]) {
          if (e.getTokenAt(n, o.index + 1).type === "keyword") return "start";
        } else {
          if (!o[2]) return "start";
          var u = e.bgTokenizer.getState(n) || "";
          if (u[0] == "bracketedComment" || u[0] == "bracketedString") return "start";
        }
      }

      if (t != "markbeginend" || !s || i && s) return "";
      var o = r.match(this.foldingStopMarker);

      if (o[0] === "end") {
        if (e.getTokenAt(n, o.index + 1).type === "keyword") return "end";
      } else {
        if (o[0][0] !== "]") return "end";
        var u = e.bgTokenizer.getState(n - 1) || "";
        if (u[0] == "bracketedComment" || u[0] == "bracketedString") return "end";
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.doc.getLine(n),
          i = this.foldingStartMarker.exec(r);
      if (i) return i[1] ? this.luaBlock(e, n, i.index + 1) : i[2] ? e.getCommentFoldRange(n, i.index + 1) : this.openingBracketBlock(e, "{", n, i.index);
      var i = this.foldingStopMarker.exec(r);
      if (i) return i[0] === "end" && e.getTokenAt(n, i.index + 1).type === "keyword" ? this.luaBlock(e, n, i.index + 1) : i[0][0] === "]" ? e.getCommentFoldRange(n, i.index + 1) : this.closingBracketBlock(e, "}", n, i.index + i[0].length);
    }, this.luaBlock = function (e, t, n, r) {
      var i = new o(e, t, n),
          u = {
        "function": 1,
        "do": 1,
        then: 1,
        elseif: -1,
        end: -1,
        repeat: 1,
        until: -1
      },
          a = i.getCurrentToken();
      if (!a || a.type != "keyword") return;
      var f = a.value,
          l = [f],
          c = u[f];
      if (!c) return;
      var h = c === -1 ? i.getCurrentTokenColumn() : e.getLine(t).length,
          p = t;
      i.step = c === -1 ? i.stepBackward : i.stepForward;

      while (a = i.step()) {
        if (a.type !== "keyword") continue;
        var d = c * u[a.value];
        if (d > 0) l.unshift(a.value);else if (d <= 0) {
          l.shift();
          if (!l.length && a.value != "elseif") break;
          d === 0 && l.unshift(a.value);
        }
      }

      if (!a) return null;
      if (r) return i.getCurrentTokenRange();
      var t = i.getCurrentTokenRow();
      return c === -1 ? new s(t, e.getLine(t).length, p, h) : new s(p, h, t, i.getCurrentTokenColumn());
    };
  }.call(u.prototype);
}), ace.define("ace/mode/lua", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/lua_highlight_rules", "ace/mode/folding/lua", "ace/range", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./lua_highlight_rules").LuaHighlightRules,
      o = e("./folding/lua").FoldMode,
      u = e("../range").Range,
      a = e("../worker/worker_client").WorkerClient,
      f = function f() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(f, i), function () {
    function n(t) {
      var n = 0;

      for (var r = 0; r < t.length; r++) {
        var i = t[r];
        i.type == "keyword" ? i.value in e && (n += e[i.value]) : i.type == "paren.lparen" ? n += i.value.length : i.type == "paren.rparen" && (n -= i.value.length);
      }

      return n < 0 ? -1 : n > 0 ? 1 : 0;
    }

    this.lineCommentStart = "--", this.blockComment = {
      start: "--[",
      end: "]--"
    };
    var e = {
      "function": 1,
      then: 1,
      "do": 1,
      "else": 1,
      elseif: 1,
      repeat: 1,
      end: -1,
      until: -1
    },
        t = ["else", "elseif", "end", "until"];
    this.getNextLineIndent = function (e, t, r) {
      var i = this.$getIndent(t),
          s = 0,
          o = this.getTokenizer().getLineTokens(t, e),
          u = o.tokens;
      return e == "start" && (s = n(u)), s > 0 ? i + r : s < 0 && i.substr(i.length - r.length) == r && !this.checkOutdent(e, t, "\n") ? i.substr(0, i.length - r.length) : i;
    }, this.checkOutdent = function (e, n, r) {
      if (r != "\n" && r != "\r" && r != "\r\n") return !1;
      if (n.match(/^\s*[\)\}\]]$/)) return !0;
      var i = this.getTokenizer().getLineTokens(n.trim(), e).tokens;
      return !i || !i.length ? !1 : i[0].type == "keyword" && t.indexOf(i[0].value) != -1;
    }, this.getMatching = function (t, n, r) {
      if (n == undefined) {
        var i = t.selection.lead;
        r = i.column, n = i.row;
      }

      var s = t.getTokenAt(n, r);
      if (s && s.value in e) return this.foldingRules.luaBlock(t, n, r, !0);
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n),
          i = r.match(/^\s*/)[0].length;
      if (!i || !n) return;
      var s = this.getMatching(t, n, i + 1);
      if (!s || s.start.row == n) return;
      var o = this.$getIndent(t.getLine(s.start.row));
      o.length != i && (t.replace(new u(n, 0, n, i), o), t.outdentRows(new u(n + 1, 0, n + 1, 0)));
    }, this.createWorker = function (e) {
      var t = new a(["ace"], "ace/mode/lua_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/lua", this.snippetFileId = "ace/snippets/lua";
  }.call(f.prototype), t.Mode = f;
}), ace.define("ace/mode/luapage_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules", "ace/mode/lua_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      s = e("./lua_highlight_rules").LuaHighlightRules,
      o = function o() {
    i.call(this);
    var e = [{
      token: "keyword",
      regex: "<\\%\\=?",
      push: "lua-start"
    }, {
      token: "keyword",
      regex: "<\\?lua\\=?",
      push: "lua-start"
    }],
        t = [{
      token: "keyword",
      regex: "\\%>",
      next: "pop"
    }, {
      token: "keyword",
      regex: "\\?>",
      next: "pop"
    }];
    this.embedRules(s, "lua-", t, ["start"]);

    for (var n in this.$rules) {
      this.$rules[n].unshift.apply(this.$rules[n], e);
    }

    this.normalizeRules();
  };

  r.inherits(o, i), t.LuaPageHighlightRules = o;
}), ace.define("ace/mode/luapage", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/lua", "ace/mode/luapage_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./lua").Mode,
      o = e("./luapage_highlight_rules").LuaPageHighlightRules,
      u = function u() {
    i.call(this), this.HighlightRules = o, this.createModeDelegates({
      "lua-": s
    });
  };

  r.inherits(u, i), function () {
    this.$id = "ace/mode/luapage";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/luapage"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-lucene.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-lucene.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/lucene_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "constant.language.escape",
        regex: /\\[\-+&|!(){}\[\]^"~*?:\\]/
      }, {
        token: "constant.character.negation",
        regex: "\\-"
      }, {
        token: "constant.character.interro",
        regex: "\\?"
      }, {
        token: "constant.character.required",
        regex: "\\+"
      }, {
        token: "constant.character.asterisk",
        regex: "\\*"
      }, {
        token: "constant.character.proximity",
        regex: "~(?:0\\.[0-9]+|[0-9]+)?"
      }, {
        token: "keyword.operator",
        regex: "(AND|OR|NOT|TO)\\b"
      }, {
        token: "paren.lparen",
        regex: "[\\(\\{\\[]"
      }, {
        token: "paren.rparen",
        regex: "[\\)\\}\\]]"
      }, {
        token: "keyword.operator",
        regex: /[><=^]/
      }, {
        token: "constant.numeric",
        regex: /\d[\d.-]*/
      }, {
        token: "string",
        regex: /"(?:\\"|[^"])*"/
      }, {
        token: "keyword",
        regex: /(?:\\.|[^\s\-+&|!(){}\[\]^"~*?:\\])+:/,
        next: "maybeRegex"
      }, {
        token: "term",
        regex: /\w+/
      }, {
        token: "text",
        regex: /\s+/
      }],
      maybeRegex: [{
        token: "text",
        regex: /\s+/
      }, {
        token: "string.regexp.start",
        regex: "/",
        next: "regex"
      }, {
        regex: "",
        next: "start"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp.end",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.escape",
        regex: "<d+-d+>|[~&@]"
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }]
    };
  };

  r.inherits(s, i), t.LuceneHighlightRules = s;
}), ace.define("ace/mode/lucene", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/lucene_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./lucene_highlight_rules").LuceneHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.$id = "ace/mode/lucene";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/lucene"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-makefile.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-makefile.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/sh_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = t.reservedKeywords = "!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",
      o = t.languageConstructs = "[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",
      u = function u() {
    var e = this.createKeywordMapper({
      keyword: s,
      "support.function.builtin": o,
      "invalid.deprecated": "debugger"
    }, "identifier"),
        t = "(?:(?:[1-9]\\d*)|(?:0))",
        n = "(?:\\.\\d+)",
        r = "(?:\\d+)",
        i = "(?:(?:" + r + "?" + n + ")|(?:" + r + "\\.))",
        u = "(?:(?:" + i + "|" + r + ")" + ")",
        a = "(?:" + u + "|" + i + ")",
        f = "(?:&" + r + ")",
        l = "[a-zA-Z_][a-zA-Z0-9_]*",
        c = "(?:" + l + "(?==))",
        h = "(?:\\$(?:SHLVL|\\$|\\!|\\?))",
        p = "(?:" + l + "\\s*\\(\\))";
    this.$rules = {
      start: [{
        token: "constant",
        regex: /\\./
      }, {
        token: ["text", "comment"],
        regex: /(^|\s)(#.*)$/
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "constant.language.escape",
          regex: /\\(?:[$`"\\]|$)/
        }, {
          include: "variables"
        }, {
          token: "keyword.operator",
          regex: /`/
        }, {
          token: "string.end",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: "\\$'",
        push: [{
          token: "constant.language.escape",
          regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/
        }, {
          token: "string",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        regex: "<<<",
        token: "keyword.operator"
      }, {
        stateName: "heredoc",
        regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",
        onMatch: function onMatch(e, t, n) {
          var r = e[2] == "-" ? "indentedHeredoc" : "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[4]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "text",
            value: i[2]
          }, {
            type: "string",
            value: i[3]
          }, {
            type: "support.class",
            value: i[4]
          }, {
            type: "string",
            value: i[5]
          }];
        },
        rules: {
          heredoc: [{
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }],
          indentedHeredoc: [{
            token: "string",
            regex: "^	+"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" || t[0] === "indentedHeredoc" ? t[0] : e;
        }
      }, {
        token: ["keyword", "text", "text", "text", "variable"],
        regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/
      }, {
        token: "variable.language",
        regex: h
      }, {
        token: "variable",
        regex: c
      }, {
        include: "variables"
      }, {
        token: "support.function",
        regex: p
      }, {
        token: "support.function",
        regex: f
      }, {
        token: "string",
        start: "'",
        end: "'"
      }, {
        token: "constant.numeric",
        regex: a
      }, {
        token: "constant.numeric",
        regex: t + "\\b"
      }, {
        token: e,
        regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"
      }, {
        token: "punctuation.operator",
        regex: ";"
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]]"
      }, {
        token: "paren.rparen",
        regex: "[\\)\\}]",
        next: "pop"
      }],
      variables: [{
        token: "variable",
        regex: /(\$)(\w+)/
      }, {
        token: ["variable", "paren.lparen"],
        regex: /(\$)(\()/,
        push: "start"
      }, {
        token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"],
        regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,
        push: "start"
      }, {
        token: "variable",
        regex: /\$[*@#?\-$!0_]/
      }, {
        token: ["variable", "paren.lparen"],
        regex: /(\$)(\{)/,
        push: "start"
      }]
    }, this.normalizeRules();
  };

  r.inherits(u, i), t.ShHighlightRules = u;
}), ace.define("ace/mode/makefile_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/sh_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = e("./sh_highlight_rules"),
      o = function o() {
    var e = this.createKeywordMapper({
      keyword: s.reservedKeywords,
      "support.function.builtin": s.languageConstructs,
      "invalid.deprecated": "debugger"
    }, "string");
    this.$rules = {
      start: [{
        token: "string.interpolated.backtick.makefile",
        regex: "`",
        next: "shell-start"
      }, {
        token: "punctuation.definition.comment.makefile",
        regex: /#(?=.)/,
        next: "comment"
      }, {
        token: ["keyword.control.makefile"],
        regex: "^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)"
      }, {
        token: ["entity.name.function.makefile", "text"],
        regex: "^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)"
      }],
      comment: [{
        token: "punctuation.definition.comment.makefile",
        regex: /.+\\/
      }, {
        token: "punctuation.definition.comment.makefile",
        regex: ".+",
        next: "start"
      }],
      "shell-start": [{
        token: e,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "string",
        regex: "\\w+"
      }, {
        token: "string.interpolated.backtick.makefile",
        regex: "`",
        next: "start"
      }]
    };
  };

  r.inherits(o, i), t.MakefileHighlightRules = o;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/makefile", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/makefile_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./makefile_highlight_rules").MakefileHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.$indentWithTabs = !0, this.$id = "ace/mode/makefile", this.snippetFileId = "ace/snippets/makefile";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/makefile"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-markdown.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-markdown.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/xml_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/xml", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./xml_highlight_rules").XmlHighlightRules,
      u = e("./behaviour/xml").XmlBehaviour,
      a = e("./folding/xml").FoldMode,
      f = e("../worker/worker_client").WorkerClient,
      l = function l() {
    this.HighlightRules = o, this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(l, s), function () {
    this.voidElements = i.arrayToMap([]), this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.createWorker = function (e) {
      var t = new f(["ace"], "ace/mode/xml_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/xml";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/markdown_highlight_rules", ["require", "exports", "module", "ace/config", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../config").$modes,
      i = e("../lib/oop"),
      s = e("../lib/lang"),
      o = e("./text_highlight_rules").TextHighlightRules,
      u = e("./html_highlight_rules").HtmlHighlightRules,
      a = function a(e) {
    return "(?:[^" + s.escapeRegExp(e) + "\\\\]|\\\\.)*";
  },
      f = function f() {
    u.call(this);
    var e = {
      token: "support.function",
      regex: /^\s*(```+[^`]*|~~~+[^~]*)$/,
      onMatch: function onMatch(e, t, n, i) {
        var s = e.match(/^(\s*)([`~]+)(.*)/),
            o = /[\w-]+|$/.exec(s[3])[0];
        return r[o] || (o = ""), n.unshift("githubblock", [], [s[1], s[2], o], t), this.token;
      },
      next: "githubblock"
    },
        t = [{
      token: "support.function",
      regex: ".*",
      onMatch: function onMatch(e, t, n, i) {
        var s = n[1],
            o = n[2][0],
            u = n[2][1],
            a = n[2][2],
            f = /^(\s*)(`+|~+)\s*$/.exec(e);
        if (f && f[1].length < o.length + 3 && f[2].length >= u.length && f[2][0] == u[0]) return n.splice(0, 3), this.next = n.shift(), this.token;
        this.next = "";

        if (a && r[a]) {
          var l = r[a].getTokenizer().getLineTokens(e, s.slice(0));
          return n[1] = l.state, l.tokens;
        }

        return this.token;
      }
    }];
    this.$rules.start.unshift({
      token: "empty_line",
      regex: "^$",
      next: "allowBlock"
    }, {
      token: "markup.heading.1",
      regex: "^=+(?=\\s*$)"
    }, {
      token: "markup.heading.2",
      regex: "^\\-+(?=\\s*$)"
    }, {
      token: function token(e) {
        return "markup.heading." + e.length;
      },
      regex: /^#{1,6}(?=\s|$)/,
      next: "header"
    }, e, {
      token: "string.blockquote",
      regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",
      next: "blockquote"
    }, {
      token: "constant",
      regex: "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",
      next: "allowBlock"
    }, {
      token: "markup.list",
      regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
      next: "listblock-start"
    }, {
      include: "basic"
    }), this.addRules({
      basic: [{
        token: "constant.language.escape",
        regex: /\\[\\`*_{}\[\]()#+\-.!]/
      }, {
        token: "support.function",
        regex: "(`+)(.*?[^`])(\\1)"
      }, {
        token: ["text", "constant", "text", "url", "string", "text"],
        regex: '^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'
      }, {
        token: ["text", "string", "text", "constant", "text"],
        regex: "(\\[)(" + a("]") + ")(\\]\\s*\\[)(" + a("]") + ")(\\])"
      }, {
        token: ["text", "string", "text", "markup.underline", "string", "text"],
        regex: "(\\!?\\[)(" + a("]") + ")(\\]\\()" + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + '(\\s*"' + a('"') + '"\\s*)?' + "(\\))"
      }, {
        token: "string.strong",
        regex: "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"
      }, {
        token: "string.emphasis",
        regex: "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"
      }, {
        token: ["text", "url", "text"],
        regex: "(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"
      }],
      allowBlock: [{
        token: "support.function",
        regex: "^ {4}.+",
        next: "allowBlock"
      }, {
        token: "empty_line",
        regex: "^$",
        next: "allowBlock"
      }, {
        token: "empty",
        regex: "",
        next: "start"
      }],
      header: [{
        regex: "$",
        next: "start"
      }, {
        include: "basic"
      }, {
        defaultToken: "heading"
      }],
      "listblock-start": [{
        token: "support.variable",
        regex: /(?:\[[ x]\])?/,
        next: "listblock"
      }],
      listblock: [{
        token: "empty_line",
        regex: "^$",
        next: "start"
      }, {
        token: "markup.list",
        regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
        next: "listblock-start"
      }, {
        include: "basic",
        noEscape: !0
      }, e, {
        defaultToken: "list"
      }],
      blockquote: [{
        token: "empty_line",
        regex: "^\\s*$",
        next: "start"
      }, {
        token: "string.blockquote",
        regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",
        next: "blockquote"
      }, {
        include: "basic",
        noEscape: !0
      }, {
        defaultToken: "string.blockquote"
      }],
      githubblock: t
    }), this.normalizeRules();
  };

  i.inherits(f, o), t.MarkdownHighlightRules = f;
}), ace.define("ace/mode/folding/markdown", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      return this.foldingStartMarker.test(r) ? r[0] == "`" ? e.bgTokenizer.getState(n) == "start" ? "end" : "start" : "start" : "";
    }, this.getFoldWidgetRange = function (e, t, n) {
      function l(t) {
        return f = e.getTokens(t)[0], f && f.type.lastIndexOf(c, 0) === 0;
      }

      function h() {
        var e = f.value[0];
        return e == "=" ? 6 : e == "-" ? 5 : 7 - f.value.search(/[^#]|$/);
      }

      var r = e.getLine(n),
          i = r.length,
          o = e.getLength(),
          u = n,
          a = n;
      if (!r.match(this.foldingStartMarker)) return;

      if (r[0] == "`") {
        if (e.bgTokenizer.getState(n) !== "start") {
          while (++n < o) {
            r = e.getLine(n);
            if (r[0] == "`" & r.substring(0, 3) == "```") break;
          }

          return new s(u, i, n, 0);
        }

        while (n-- > 0) {
          r = e.getLine(n);
          if (r[0] == "`" & r.substring(0, 3) == "```") break;
        }

        return new s(n, r.length, u, 0);
      }

      var f,
          c = "markup.heading";

      if (l(n)) {
        var p = h();

        while (++n < o) {
          if (!l(n)) continue;
          var d = h();
          if (d >= p) break;
        }

        a = n - (!f || ["=", "-"].indexOf(f.value[0]) == -1 ? 1 : 2);
        if (a > u) while (a > u && /^\s*$/.test(e.getLine(a))) {
          a--;
        }

        if (a > u) {
          var v = e.getLine(a).length;
          return new s(u, i, a, v);
        }
      }
    };
  }.call(o.prototype);
}), ace.define("ace/mode/sh_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = t.reservedKeywords = "!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",
      o = t.languageConstructs = "[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",
      u = function u() {
    var e = this.createKeywordMapper({
      keyword: s,
      "support.function.builtin": o,
      "invalid.deprecated": "debugger"
    }, "identifier"),
        t = "(?:(?:[1-9]\\d*)|(?:0))",
        n = "(?:\\.\\d+)",
        r = "(?:\\d+)",
        i = "(?:(?:" + r + "?" + n + ")|(?:" + r + "\\.))",
        u = "(?:(?:" + i + "|" + r + ")" + ")",
        a = "(?:" + u + "|" + i + ")",
        f = "(?:&" + r + ")",
        l = "[a-zA-Z_][a-zA-Z0-9_]*",
        c = "(?:" + l + "(?==))",
        h = "(?:\\$(?:SHLVL|\\$|\\!|\\?))",
        p = "(?:" + l + "\\s*\\(\\))";
    this.$rules = {
      start: [{
        token: "constant",
        regex: /\\./
      }, {
        token: ["text", "comment"],
        regex: /(^|\s)(#.*)$/
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "constant.language.escape",
          regex: /\\(?:[$`"\\]|$)/
        }, {
          include: "variables"
        }, {
          token: "keyword.operator",
          regex: /`/
        }, {
          token: "string.end",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: "\\$'",
        push: [{
          token: "constant.language.escape",
          regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/
        }, {
          token: "string",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        regex: "<<<",
        token: "keyword.operator"
      }, {
        stateName: "heredoc",
        regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",
        onMatch: function onMatch(e, t, n) {
          var r = e[2] == "-" ? "indentedHeredoc" : "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[4]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "text",
            value: i[2]
          }, {
            type: "string",
            value: i[3]
          }, {
            type: "support.class",
            value: i[4]
          }, {
            type: "string",
            value: i[5]
          }];
        },
        rules: {
          heredoc: [{
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }],
          indentedHeredoc: [{
            token: "string",
            regex: "^	+"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" || t[0] === "indentedHeredoc" ? t[0] : e;
        }
      }, {
        token: ["keyword", "text", "text", "text", "variable"],
        regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/
      }, {
        token: "variable.language",
        regex: h
      }, {
        token: "variable",
        regex: c
      }, {
        include: "variables"
      }, {
        token: "support.function",
        regex: p
      }, {
        token: "support.function",
        regex: f
      }, {
        token: "string",
        start: "'",
        end: "'"
      }, {
        token: "constant.numeric",
        regex: a
      }, {
        token: "constant.numeric",
        regex: t + "\\b"
      }, {
        token: e,
        regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"
      }, {
        token: "punctuation.operator",
        regex: ";"
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]]"
      }, {
        token: "paren.rparen",
        regex: "[\\)\\}]",
        next: "pop"
      }],
      variables: [{
        token: "variable",
        regex: /(\$)(\w+)/
      }, {
        token: ["variable", "paren.lparen"],
        regex: /(\$)(\()/,
        push: "start"
      }, {
        token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"],
        regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,
        push: "start"
      }, {
        token: "variable",
        regex: /\$[*@#?\-$!0_]/
      }, {
        token: ["variable", "paren.lparen"],
        regex: /(\$)(\{)/,
        push: "start"
      }]
    }, this.normalizeRules();
  };

  r.inherits(u, i), t.ShHighlightRules = u;
}), ace.define("ace/mode/sh", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/sh_highlight_rules", "ace/range", "ace/mode/folding/cstyle", "ace/mode/behaviour/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./sh_highlight_rules").ShHighlightRules,
      o = e("../range").Range,
      u = e("./folding/cstyle").FoldMode,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = function f() {
    this.HighlightRules = s, this.foldingRules = new u(), this.$behaviour = new a();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[:]\s*$/);
        o && (r += n);
      }

      return r;
    };
    var e = {
      pass: 1,
      "return": 1,
      raise: 1,
      "break": 1,
      "continue": 1
    };
    this.checkOutdent = function (t, n, r) {
      if (r !== "\r\n" && r !== "\r" && r !== "\n") return !1;
      var i = this.getTokenizer().getLineTokens(n.trim(), t).tokens;
      if (!i) return !1;

      do {
        var s = i.pop();
      } while (s && (s.type == "comment" || s.type == "text" && s.value.match(/^\s+$/)));

      return s ? s.type == "keyword" && e[s.value] : !1;
    }, this.autoOutdent = function (e, t, n) {
      n += 1;
      var r = this.$getIndent(t.getLine(n)),
          i = t.getTabString();
      r.slice(-i.length) == i && t.remove(new o(n, r.length - i.length, n, r.length));
    }, this.$id = "ace/mode/sh", this.snippetFileId = "ace/snippets/sh";
  }.call(f.prototype), t.Mode = f;
}), ace.define("ace/mode/markdown", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript", "ace/mode/xml", "ace/mode/html", "ace/mode/markdown_highlight_rules", "ace/mode/folding/markdown", "ace/mode/javascript", "ace/mode/html", "ace/mode/sh", "ace/mode/sh", "ace/mode/xml", "ace/mode/css"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript").Mode,
      o = e("./xml").Mode,
      u = e("./html").Mode,
      a = e("./markdown_highlight_rules").MarkdownHighlightRules,
      f = e("./folding/markdown").FoldMode,
      l = function l() {
    this.HighlightRules = a, this.createModeDelegates({
      javascript: e("./javascript").Mode,
      html: e("./html").Mode,
      bash: e("./sh").Mode,
      sh: e("./sh").Mode,
      xml: e("./xml").Mode,
      css: e("./css").Mode
    }), this.foldingRules = new f(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(l, i), function () {
    this.type = "text", this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.$quotes = {
      '"': '"',
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      if (e == "listblock") {
        var r = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);
        if (!r) return "";
        var i = r[2];
        return i || (i = parseInt(r[3], 10) + 1 + "."), r[1] + i + r[4];
      }

      return this.$getIndent(t);
    }, this.$id = "ace/mode/markdown", this.snippetFileId = "ace/snippets/markdown";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/markdown"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-mask.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-mask.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/markdown_highlight_rules", ["require", "exports", "module", "ace/config", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../config").$modes,
      i = e("../lib/oop"),
      s = e("../lib/lang"),
      o = e("./text_highlight_rules").TextHighlightRules,
      u = e("./html_highlight_rules").HtmlHighlightRules,
      a = function a(e) {
    return "(?:[^" + s.escapeRegExp(e) + "\\\\]|\\\\.)*";
  },
      f = function f() {
    u.call(this);
    var e = {
      token: "support.function",
      regex: /^\s*(```+[^`]*|~~~+[^~]*)$/,
      onMatch: function onMatch(e, t, n, i) {
        var s = e.match(/^(\s*)([`~]+)(.*)/),
            o = /[\w-]+|$/.exec(s[3])[0];
        return r[o] || (o = ""), n.unshift("githubblock", [], [s[1], s[2], o], t), this.token;
      },
      next: "githubblock"
    },
        t = [{
      token: "support.function",
      regex: ".*",
      onMatch: function onMatch(e, t, n, i) {
        var s = n[1],
            o = n[2][0],
            u = n[2][1],
            a = n[2][2],
            f = /^(\s*)(`+|~+)\s*$/.exec(e);
        if (f && f[1].length < o.length + 3 && f[2].length >= u.length && f[2][0] == u[0]) return n.splice(0, 3), this.next = n.shift(), this.token;
        this.next = "";

        if (a && r[a]) {
          var l = r[a].getTokenizer().getLineTokens(e, s.slice(0));
          return n[1] = l.state, l.tokens;
        }

        return this.token;
      }
    }];
    this.$rules.start.unshift({
      token: "empty_line",
      regex: "^$",
      next: "allowBlock"
    }, {
      token: "markup.heading.1",
      regex: "^=+(?=\\s*$)"
    }, {
      token: "markup.heading.2",
      regex: "^\\-+(?=\\s*$)"
    }, {
      token: function token(e) {
        return "markup.heading." + e.length;
      },
      regex: /^#{1,6}(?=\s|$)/,
      next: "header"
    }, e, {
      token: "string.blockquote",
      regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",
      next: "blockquote"
    }, {
      token: "constant",
      regex: "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",
      next: "allowBlock"
    }, {
      token: "markup.list",
      regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
      next: "listblock-start"
    }, {
      include: "basic"
    }), this.addRules({
      basic: [{
        token: "constant.language.escape",
        regex: /\\[\\`*_{}\[\]()#+\-.!]/
      }, {
        token: "support.function",
        regex: "(`+)(.*?[^`])(\\1)"
      }, {
        token: ["text", "constant", "text", "url", "string", "text"],
        regex: '^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'
      }, {
        token: ["text", "string", "text", "constant", "text"],
        regex: "(\\[)(" + a("]") + ")(\\]\\s*\\[)(" + a("]") + ")(\\])"
      }, {
        token: ["text", "string", "text", "markup.underline", "string", "text"],
        regex: "(\\!?\\[)(" + a("]") + ")(\\]\\()" + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + '(\\s*"' + a('"') + '"\\s*)?' + "(\\))"
      }, {
        token: "string.strong",
        regex: "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"
      }, {
        token: "string.emphasis",
        regex: "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"
      }, {
        token: ["text", "url", "text"],
        regex: "(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"
      }],
      allowBlock: [{
        token: "support.function",
        regex: "^ {4}.+",
        next: "allowBlock"
      }, {
        token: "empty_line",
        regex: "^$",
        next: "allowBlock"
      }, {
        token: "empty",
        regex: "",
        next: "start"
      }],
      header: [{
        regex: "$",
        next: "start"
      }, {
        include: "basic"
      }, {
        defaultToken: "heading"
      }],
      "listblock-start": [{
        token: "support.variable",
        regex: /(?:\[[ x]\])?/,
        next: "listblock"
      }],
      listblock: [{
        token: "empty_line",
        regex: "^$",
        next: "start"
      }, {
        token: "markup.list",
        regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
        next: "listblock-start"
      }, {
        include: "basic",
        noEscape: !0
      }, e, {
        defaultToken: "list"
      }],
      blockquote: [{
        token: "empty_line",
        regex: "^\\s*$",
        next: "start"
      }, {
        token: "string.blockquote",
        regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",
        next: "blockquote"
      }, {
        include: "basic",
        noEscape: !0
      }, {
        defaultToken: "string.blockquote"
      }],
      githubblock: t
    }), this.normalizeRules();
  };

  i.inherits(f, o), t.MarkdownHighlightRules = f;
}), ace.define("ace/mode/mask_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/css_highlight_rules", "ace/mode/markdown_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  function N() {
    function t(e, t, n) {
      var r = "js-" + e + "-",
          i = e === "block" ? ["start"] : ["start", "no_regex"];
      s(o, r, t, i, n);
    }

    function n() {
      s(u, "css-block-", /\}/);
    }

    function r() {
      s(a, "md-multiline-", /("""|''')/, []);
    }

    function i() {
      s(f, "html-multiline-", /("""|''')/);
    }

    function s(t, n, r, i, s) {
      var o = "pop",
          u = i || ["start"];
      u.length === 0 && (u = null), /block|multiline/.test(n) && (o = n + "end", e.$rules[o] = [k("empty", "", "start")]), e.embedRules(t, n, [k(s || w, r, o)], u, u == null ? !0 : !1);
    }

    this.$rules = {
      start: [k("comment", "\\/\\/.*$"), k("comment", "\\/\\*", [k("comment", ".*?\\*\\/", "start"), k("comment", ".+")]), C.string("'''"), C.string('"""'), C.string('"'), C.string("'"), C.syntax(/(markdown|md)\b/, "md-multiline", "multiline"), C.syntax(/html\b/, "html-multiline", "multiline"), C.syntax(/(slot|event)\b/, "js-block", "block"), C.syntax(/style\b/, "css-block", "block"), C.syntax(/var\b/, "js-statement", "attr"), C.tag(), k(b, "[[({>]"), k(w, "[\\])};]", "start"), {
        caseInsensitive: !0
      }]
    };
    var e = this;
    t("interpolation", /\]/, w + "." + g), t("statement", /\)|}|;/), t("block", /\}/), n(), r(), i(), this.normalizeRules();
  }

  function k(e, t, n) {
    var r, i, s;
    return arguments.length === 4 ? (r = n, i = arguments[3]) : typeof n == "string" ? i = n : r = n, typeof e == "function" && (s = e, e = "empty"), {
      token: e,
      regex: t,
      push: r,
      next: i,
      onMatch: s
    };
  }

  t.MaskHighlightRules = N;
  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./css_highlight_rules").CssHighlightRules,
      a = e("./markdown_highlight_rules").MarkdownHighlightRules,
      f = e("./html_highlight_rules").HtmlHighlightRules,
      l = "keyword.support.constant.language",
      c = "support.function.markup.bold",
      h = "keyword",
      p = "constant.language",
      d = "keyword.control.markup.italic",
      v = "support.variable.class",
      m = "keyword.operator",
      g = "markup.italic",
      y = "markup.bold",
      b = "paren.lparen",
      w = "paren.rparen",
      E,
      S,
      x,
      T;
  (function () {
    E = i.arrayToMap("log".split("|")), x = i.arrayToMap(":dualbind|:bind|:import|slot|event|style|html|markdown|md".split("|")), S = i.arrayToMap("debugger|define|var|if|each|for|of|else|switch|case|with|visible|+if|+each|+for|+switch|+with|+visible|include|import".split("|")), T = i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|"));
  })(), r.inherits(N, s);
  var C = {
    string: function string(e, t) {
      var n = k("string.start", e, [k(b + "." + g, /~\[/, C.interpolation()), k("string.end", e, "pop"), {
        defaultToken: "string"
      }], t);

      if (e.length === 1) {
        var r = k("string.escape", "\\\\" + e);
        n.push.unshift(r);
      }

      return n;
    },
    interpolation: function interpolation() {
      return [k(d, /\s*\w*\s*:/), "js-interpolation-start"];
    },
    tagHead: function tagHead(e) {
      return k(v, e, [k(v, /[\w\-_]+/), k(b + "." + g, /~\[/, C.interpolation()), C.goUp()]);
    },
    tag: function tag() {
      return {
        token: "tag",
        onMatch: function onMatch(e) {
          return void 0 !== S[e] ? h : void 0 !== x[e] ? p : void 0 !== E[e] ? "support.function" : void 0 !== T[e.toLowerCase()] ? l : c;
        },
        regex: /([@\w\-_:+]+)|((^|\s)(?=\s*(\.|#)))/,
        push: [C.tagHead(/\./), C.tagHead(/#/), C.expression(), C.attribute(), k(b, /[;>{]/, "pop")]
      };
    },
    syntax: function syntax(e, t, n) {
      return {
        token: p,
        regex: e,
        push: {
          attr: [t + "-start", k(m, /;/, "start")],
          multiline: [C.tagHead(/\./), C.tagHead(/#/), C.attribute(), C.expression(), k(b, /[>\{]/), k(m, /;/, "start"), k(b, /'''|"""/, [t + "-start"])],
          block: [C.tagHead(/\./), C.tagHead(/#/), C.attribute(), C.expression(), k(b, /\{/, [t + "-start"])]
        }[n]
      };
    },
    attribute: function attribute() {
      return k(function (e) {
        return /^x\-/.test(e) ? v + "." + y : v;
      }, /[\w_-]+/, [k(m, /\s*=\s*/, [C.string('"'), C.string("'"), C.word(), C.goUp()]), C.goUp()]);
    },
    expression: function expression() {
      return k(b, /\(/, ["js-statement-start"]);
    },
    word: function word() {
      return k("string", /[\w-_]+/);
    },
    goUp: function goUp() {
      return k("text", "", "pop");
    },
    goStart: function goStart() {
      return k("text", "", "start");
    }
  };
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/mask", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/mask_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./mask_highlight_rules").MaskHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/css").CssBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/mask";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/mask"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-matlab.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-matlab.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/matlab_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while",
        t = "true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout",
        n = "abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztestadapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog",
        r = "cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse",
        i = this.createKeywordMapper({
      "storage.type": r,
      "support.function": n,
      keyword: e,
      "constant.language": t
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "string",
        regex: "'",
        stateName: "qstring",
        next: [{
          token: "constant.language.escape",
          regex: "''"
        }, {
          token: "string",
          regex: "'|$",
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        regex: "",
        next: "noQstring"
      }],
      noQstring: [{
        regex: "^\\s*%{\\s*$",
        token: "comment.start",
        push: "blockComment"
      }, {
        token: "comment",
        regex: "%[^\r\n]*"
      }, {
        token: "string",
        regex: '"',
        stateName: "qqstring",
        next: [{
          token: "constant.language.escape",
          regex: /\\./
        }, {
          token: "string",
          regex: "\\\\$",
          next: "qqstring"
        }, {
          token: "string",
          regex: '"|$',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: i,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\/|\\/\\/|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=",
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\.",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "[({\\[]",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "[\\]})]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        token: "text",
        regex: "$",
        next: "start"
      }],
      blockComment: [{
        regex: "^\\s*%{\\s*$",
        token: "comment.start",
        push: "blockComment"
      }, {
        regex: "^\\s*%}\\s*$",
        token: "comment.end",
        next: "pop"
      }, {
        defaultToken: "comment"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.MatlabHighlightRules = s;
}), ace.define("ace/mode/matlab", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/matlab_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./matlab_highlight_rules").MatlabHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = "%", this.blockComment = {
      start: "%{",
      end: "%}"
    }, this.$id = "ace/mode/matlab";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/matlab"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-maze.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-maze.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/maze_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "keyword.control",
        regex: /##|``/,
        comment: "Wall"
      }, {
        token: "entity.name.tag",
        regex: /\.\./,
        comment: "Path"
      }, {
        token: "keyword.control",
        regex: /<>/,
        comment: "Splitter"
      }, {
        token: "entity.name.tag",
        regex: /\*[\*A-Za-z0-9]/,
        comment: "Signal"
      }, {
        token: "constant.numeric",
        regex: /[0-9]{2}/,
        comment: "Pause"
      }, {
        token: "keyword.control",
        regex: /\^\^/,
        comment: "Start"
      }, {
        token: "keyword.control",
        regex: /\(\)/,
        comment: "Hole"
      }, {
        token: "support.function",
        regex: />>/,
        comment: "Out"
      }, {
        token: "support.function",
        regex: />\//,
        comment: "Ln Out"
      }, {
        token: "support.function",
        regex: /<</,
        comment: "In"
      }, {
        token: "keyword.control",
        regex: /--/,
        comment: "One use"
      }, {
        token: "constant.language",
        regex: /%[LRUDNlrudn]/,
        comment: "Direction"
      }, {
        token: ["entity.name.function", "keyword.other", "keyword.operator", "keyword.other", "keyword.operator", "constant.numeric", "keyword.operator", "keyword.other", "keyword.operator", "constant.numeric", "string.quoted.double", "string.quoted.single"],
        regex: /([A-Za-z][A-Za-z0-9])( *-> *)(?:([-+*\/]=)( *)((?:-)?)([0-9]+)|(=)( *)(?:((?:-)?)([0-9]+)|("[^"]*")|('[^']*')))/,
        comment: "Assignment function"
      }, {
        token: ["entity.name.function", "keyword.other", "keyword.control", "keyword.other", "keyword.operator", "keyword.other", "keyword.operator", "constant.numeric", "entity.name.tag", "keyword.other", "keyword.control", "keyword.other", "constant.language", "keyword.other", "keyword.control", "keyword.other", "constant.language"],
        regex: /([A-Za-z][A-Za-z0-9])( *-> *)(IF|if)( *)(?:([<>]=?|==)( *)((?:-)?)([0-9]+)|(\*[\*A-Za-z0-9]))( *)(THEN|then)( *)(%[LRUDNlrudn])(?:( *)(ELSE|else)( *)(%[LRUDNlrudn]))?/,
        comment: "Equality Function"
      }, {
        token: "entity.name.function",
        regex: /[A-Za-z][A-Za-z0-9]/,
        comment: "Function cell"
      }, {
        token: "comment.line.double-slash",
        regex: / *\/\/.*/,
        comment: "Comment"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["mz"],
    name: "Maze",
    scopeName: "source.maze"
  }, r.inherits(s, i), t.MazeHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/maze", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/maze_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./maze_highlight_rules").MazeHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.$id = "ace/mode/maze", this.snippetFileId = "ace/snippets/maze";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/maze"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-mediawiki.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-mediawiki.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/mediawiki_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        include: "#switch"
      }, {
        include: "#redirect"
      }, {
        include: "#variable"
      }, {
        include: "#comment"
      }, {
        include: "#entity"
      }, {
        include: "#emphasis"
      }, {
        include: "#tag"
      }, {
        include: "#table"
      }, {
        include: "#hr"
      }, {
        include: "#heading"
      }, {
        include: "#link"
      }, {
        include: "#list"
      }, {
        include: "#template"
      }],
      "#hr": [{
        token: "markup.bold",
        regex: /^[-]{4,}/
      }],
      "#switch": [{
        token: "constant.language",
        regex: /(__NOTOC__|__FORCETOC__|__TOC__|__NOEDITSECTION__|__NEWSECTIONLINK__|__NONEWSECTIONLINK__|__NOWYSIWYG__|__NOGALLERY__|__HIDDENCAT__|__EXPECTUNUSEDCATEGORY__|__NOCONTENTCONVERT__|__NOCC__|__NOTITLECONVERT__|__NOTC__|__START__|__END__|__INDEX__|__NOINDEX__|__STATICREDIRECT__|__NOGLOBAL__|__DISAMBIG__)/
      }],
      "#redirect": [{
        token: ["keyword.control.redirect", "meta.keyword.control"],
        regex: /(^#REDIRECT|^#redirect|^#Redirect)(\s+)/
      }],
      "#variable": [{
        token: "storage.type.variable",
        regex: /{{{/,
        push: [{
          token: "storage.type.variable",
          regex: /}}}/,
          next: "pop"
        }, {
          token: ["text", "variable.other", "text", "keyword.operator"],
          regex: /(\s*)(\w+)(\s*)((?:\|)?)/
        }, {
          defaultToken: "storage.type.variable"
        }]
      }],
      "#entity": [{
        token: "constant.character.entity",
        regex: /&\w+;/
      }],
      "#list": [{
        token: "markup.bold",
        regex: /^[#*;:]+/,
        push: [{
          token: "markup.list",
          regex: /$/,
          next: "pop"
        }, {
          include: "$self"
        }, {
          defaultToken: "markup.list"
        }]
      }],
      "#template": [{
        token: ["storage.type.function", "meta.template", "entity.name.function", "meta.template"],
        regex: /({{)(\s*)([#\w: ]+)(\s*)/,
        push: [{
          token: "storage.type.function",
          regex: /}}/,
          next: "pop"
        }, {
          token: ["storage", "meta.structure.dictionary", "support.type.property-name", "meta.structure.dictionary", "punctuation.separator.dictionary.key-value", "meta.structure.dictionary", "meta.structure.dictionary.value"],
          regex: /(\|)(\s*)([a-zA-Z-]*)(\s*)(=)(\s*)([^|}]*)/,
          push: [{
            token: "meta.structure.dictionary",
            regex: /(?=}}|[|])/,
            next: "pop"
          }, {
            defaultToken: "meta.structure.dictionary"
          }]
        }, {
          token: ["storage", "meta.template.value"],
          regex: /(\|)(.*?)/,
          push: [{
            token: [],
            regex: /(?=}}|[|])/,
            next: "pop"
          }, {
            include: "$self"
          }, {
            defaultToken: "meta.template.value"
          }]
        }, {
          defaultToken: "meta.template"
        }]
      }],
      "#link": [{
        token: ["punctuation.definition.tag.begin", "meta.tag.link.internal", "entity.name.tag", "meta.tag.link.internal", "string.other.link.title", "meta.tag.link.internal", "punctuation.definition.tag"],
        regex: /(\[\[)(\s*)((?:Category|Wikipedia)?)(:?)([^\]\]\|]+)(\s*)((?:\|)*)/,
        push: [{
          token: "punctuation.definition.tag.end",
          regex: /\]\]/,
          next: "pop"
        }, {
          include: "$self"
        }, {
          defaultToken: "meta.tag.link.internal"
        }]
      }, {
        token: ["punctuation.definition.tag.begin", "meta.tag.link.external", "meta.tag.link.external", "string.unquoted", "punctuation.definition.tag.end"],
        regex: /(\[)(.*?)([\s]+)(.*?)(\])/
      }],
      "#comment": [{
        token: "punctuation.definition.comment.html",
        regex: /<!--/,
        push: [{
          token: "punctuation.definition.comment.html",
          regex: /-->/,
          next: "pop"
        }, {
          defaultToken: "comment.block.html"
        }]
      }],
      "#emphasis": [{
        token: ["punctuation.definition.tag.begin", "markup.italic.bold", "punctuation.definition.tag.end"],
        regex: /(''''')(?!')(.*?)('''''|$)/
      }, {
        token: ["punctuation.definition.tag.begin", "markup.bold", "punctuation.definition.tag.end"],
        regex: /(''')(?!')(.*?)('''|$)/
      }, {
        token: ["punctuation.definition.tag.begin", "markup.italic", "punctuation.definition.tag.end"],
        regex: /('')(?!')(.*?)(''|$)/
      }],
      "#heading": [{
        token: ["punctuation.definition.heading", "entity.name.section", "punctuation.definition.heading"],
        regex: /(={1,6})(.+?)(\1)(?!=)/
      }],
      "#tag": [{
        token: ["punctuation.definition.tag.begin", "entity.name.tag", "meta.tag.block.ref", "punctuation.definition.tag.end"],
        regex: /(<)(ref)((?:\s+.*?)?)(>)/,
        caseInsensitive: !0,
        push: [{
          token: ["punctuation.definition.tag.begin", "entity.name.tag", "meta.tag.block.ref", "punctuation.definition.tag.end"],
          regex: /(<\/)(ref)(\s*)(>)/,
          caseInsensitive: !0,
          next: "pop"
        }, {
          include: "$self"
        }, {
          defaultToken: "meta.tag.block.ref"
        }]
      }, {
        token: ["punctuation.definition.tag.begin", "entity.name.tag", "meta.tag.block.nowiki", "punctuation.definition.tag.end"],
        regex: /(<)(nowiki)((?:\s+.*?)?)(>)/,
        caseInsensitive: !0,
        push: [{
          token: ["punctuation.definition.tag.begin", "entity.name.tag", "meta.tag.block.nowiki", "punctuation.definition.tag.end"],
          regex: /(<\/)(nowiki)(\s*)(>)/,
          caseInsensitive: !0,
          next: "pop"
        }, {
          defaultToken: "meta.tag.block.nowiki"
        }]
      }, {
        token: ["punctuation.definition.tag.begin", "entity.name.tag"],
        regex: /(<\/?)(noinclude|includeonly|onlyinclude)(?=\W)/,
        caseInsensitive: !0,
        push: [{
          token: ["invalid.illegal", "punctuation.definition.tag.end"],
          regex: /((?:\/)?)(>)/,
          next: "pop"
        }, {
          include: "#attribute"
        }, {
          defaultToken: "meta.tag.block.any"
        }]
      }, {
        token: ["punctuation.definition.tag.begin", "entity.name.tag"],
        regex: /(<)(br|wbr|hr|meta|link)(?=\W)/,
        caseInsensitive: !0,
        push: [{
          token: "punctuation.definition.tag.end",
          regex: /\/?>/,
          next: "pop"
        }, {
          include: "#attribute"
        }, {
          defaultToken: "meta.tag.other"
        }]
      }, {
        token: ["punctuation.definition.tag.begin", "entity.name.tag"],
        regex: /(<\/?)(div|center|span|h1|h2|h3|h4|h5|h6|bdo|em|strong|cite|dfn|code|samp|kbd|var|abbr|blockquote|q|sub|sup|p|pre|ins|del|ul|ol|li|dl|dd|dt|table|caption|thead|tfoot|tbody|colgroup|col|tr|td|th|a|img|video|source|track|tt|b|i|big|small|strike|s|u|font|ruby|rb|rp|rt|rtc|math|figure|figcaption|bdi|data|time|mark|html)(?=\W)/,
        caseInsensitive: !0,
        push: [{
          token: ["invalid.illegal", "punctuation.definition.tag.end"],
          regex: /((?:\/)?)(>)/,
          next: "pop"
        }, {
          include: "#attribute"
        }, {
          defaultToken: "meta.tag.block"
        }]
      }, {
        token: ["punctuation.definition.tag.begin", "invalid.illegal"],
        regex: /(<\/)(br|wbr|hr|meta|link)(?=\W)/,
        caseInsensitive: !0,
        push: [{
          token: "punctuation.definition.tag.end",
          regex: /\/?>/,
          next: "pop"
        }, {
          include: "#attribute"
        }, {
          defaultToken: "meta.tag.other"
        }]
      }],
      "#caption": [{
        token: ["meta.tag.block.table-caption", "punctuation.definition.tag.begin"],
        regex: /^(\s*)(\|\+)/,
        push: [{
          token: "meta.tag.block.table-caption",
          regex: /$/,
          next: "pop"
        }, {
          defaultToken: "meta.tag.block.table-caption"
        }]
      }],
      "#tr": [{
        token: ["meta.tag.block.tr", "punctuation.definition.tag.begin", "meta.tag.block.tr", "invalid.illegal"],
        regex: /^(\s*)(\|\-)([\s]*)(.*)/
      }],
      "#th": [{
        token: ["meta.tag.block.th.heading", "punctuation.definition.tag.begin", "meta.tag.block.th.heading", "punctuation.definition.tag", "markup.bold"],
        regex: /^(\s*)(!)(?:(.*?)(\|))?(.*?)(?=!!|$)/,
        push: [{
          token: "meta.tag.block.th.heading",
          regex: /$/,
          next: "pop"
        }, {
          token: ["punctuation.definition.tag.begin", "meta.tag.block.th.inline", "punctuation.definition.tag", "markup.bold"],
          regex: /(!!)(?:(.*?)(\|))?(.*?)(?=!!|$)/
        }, {
          include: "$self"
        }, {
          defaultToken: "meta.tag.block.th.heading"
        }]
      }],
      "#td": [{
        token: ["meta.tag.block.td", "punctuation.definition.tag.begin"],
        regex: /^(\s*)(\|)/,
        push: [{
          token: "meta.tag.block.td",
          regex: /$/,
          next: "pop"
        }, {
          include: "$self"
        }, {
          defaultToken: "meta.tag.block.td"
        }]
      }],
      "#table": [{
        patterns: [{
          name: "meta.tag.block.table",
          begin: "^\\s*({\\|)(.*?)$",
          end: "^\\s*\\|}",
          beginCaptures: {
            1: {
              name: "punctuation.definition.tag.begin"
            },
            2: {
              patterns: [{
                include: "#attribute"
              }]
            },
            3: {
              name: "invalid.illegal"
            }
          },
          endCaptures: {
            0: {
              name: "punctuation.definition.tag.end"
            }
          },
          patterns: [{
            include: "#comment"
          }, {
            include: "#template"
          }, {
            include: "#caption"
          }, {
            include: "#tr"
          }, {
            include: "#th"
          }, {
            include: "#td"
          }]
        }],
        repository: {
          caption: {
            name: "meta.tag.block.table-caption",
            begin: "^\\s*(\\|\\+)",
            end: "$",
            beginCaptures: {
              1: {
                name: "punctuation.definition.tag.begin"
              }
            }
          },
          tr: {
            name: "meta.tag.block.tr",
            match: "^\\s*(\\|\\-)[\\s]*(.*)",
            captures: {
              1: {
                name: "punctuation.definition.tag.begin"
              },
              2: {
                name: "invalid.illegal"
              }
            }
          },
          th: {
            name: "meta.tag.block.th.heading",
            begin: "^\\s*(!)((.*?)(\\|))?(.*?)(?=(!!)|$)",
            end: "$",
            beginCaptures: {
              1: {
                name: "punctuation.definition.tag.begin"
              },
              3: {
                patterns: [{
                  include: "#attribute"
                }]
              },
              4: {
                name: "punctuation.definition.tag"
              },
              5: {
                name: "markup.bold"
              }
            },
            patterns: [{
              name: "meta.tag.block.th.inline",
              match: "(!!)((.*?)(\\|))?(.*?)(?=(!!)|$)",
              captures: {
                1: {
                  name: "punctuation.definition.tag.begin"
                },
                3: {
                  patterns: [{
                    include: "#attribute"
                  }]
                },
                4: {
                  name: "punctuation.definition.tag"
                },
                5: {
                  name: "markup.bold"
                }
              }
            }, {
              include: "$self"
            }]
          },
          td: {
            name: "meta.tag.block.td",
            begin: "^\\s*(\\|)",
            end: "$",
            beginCaptures: {
              1: {
                name: "punctuation.definition.tag.begin"
              },
              2: {
                patterns: [{
                  include: "#attribute"
                }]
              },
              3: {
                name: "punctuation.definition.tag"
              }
            },
            patterns: [{
              include: "$self"
            }]
          }
        }
      }],
      "#attribute": [{
        include: "#string"
      }, {
        token: "entity.other.attribute-name",
        regex: /\w+/
      }],
      "#string": [{
        token: "string.quoted.double",
        regex: /\"/,
        push: [{
          token: "string.quoted.double",
          regex: /\"/,
          next: "pop"
        }, {
          defaultToken: "string.quoted.double"
        }]
      }, {
        token: "string.quoted.single",
        regex: /\'/,
        push: [{
          token: "string.quoted.single",
          regex: /\'/,
          next: "pop"
        }, {
          defaultToken: "string.quoted.single"
        }]
      }],
      "#url": [{
        token: "markup.underline.link",
        regex: /(?:http(?:s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:\/?#\[\]@!\$&'\(\)\*\+,;=.]+/
      }, {
        token: "invalid.illegal",
        regex: /.*/
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    name: "MediaWiki",
    scopeName: "text.html.mediawiki",
    fileTypes: ["mediawiki", "wiki"]
  }, r.inherits(s, i), t.MediaWikiHighlightRules = s;
}), ace.define("ace/mode/mediawiki", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/mediawiki_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./mediawiki_highlight_rules").MediaWikiHighlightRules,
      o = function o() {
    this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.type = "text", this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.$id = "ace/mode/mediawiki";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/mediawiki"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-mel.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-mel.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/mel_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        caseInsensitive: !0,
        token: "storage.type.mel",
        regex: "\\b(matrix|string|vector|float|int|void)\\b"
      }, {
        caseInsensitive: !0,
        token: "support.function.mel",
        regex: "\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\b"
      }, {
        caseInsensitive: !0,
        token: "support.constant.mel",
        regex: "\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\b"
      }, {
        caseInsensitive: !0,
        token: "keyword.control.mel",
        regex: "\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\b"
      }, {
        token: "keyword.other.mel",
        regex: "\\b(global)\\b"
      }, {
        caseInsensitive: !0,
        token: "constant.language.mel",
        regex: "\\b(null|undefined)\\b"
      }, {
        token: "constant.numeric.mel",
        regex: "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b"
      }, {
        token: "punctuation.definition.string.begin.mel",
        regex: '"',
        push: [{
          token: "constant.character.escape.mel",
          regex: "\\\\."
        }, {
          token: "punctuation.definition.string.end.mel",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.quoted.double.mel"
        }]
      }, {
        token: ["variable.other.mel", "punctuation.definition.variable.mel"],
        regex: "(\\$)([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*?\\b)"
      }, {
        token: "punctuation.definition.string.begin.mel",
        regex: "'",
        push: [{
          token: "constant.character.escape.mel",
          regex: "\\\\."
        }, {
          token: "punctuation.definition.string.end.mel",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.quoted.single.mel"
        }]
      }, {
        token: "constant.language.mel",
        regex: "\\b(false|true|yes|no|on|off)\\b"
      }, {
        token: "punctuation.definition.comment.mel",
        regex: "/\\*",
        push: [{
          token: "punctuation.definition.comment.mel",
          regex: "\\*/",
          next: "pop"
        }, {
          defaultToken: "comment.block.mel"
        }]
      }, {
        token: ["comment.line.double-slash.mel", "punctuation.definition.comment.mel"],
        regex: "(//)(.*$\\n?)"
      }, {
        caseInsensitive: !0,
        token: "keyword.operator.mel",
        regex: "\\b(instanceof)\\b"
      }, {
        token: "keyword.operator.symbolic.mel",
        regex: "[-\\!\\%\\&\\*\\+\\=\\/\\?\\:]"
      }, {
        token: ["meta.preprocessor.mel", "punctuation.definition.preprocessor.mel"],
        regex: "(^[ \\t]*)((?:#)[a-zA-Z]+)"
      }, {
        token: ["meta.function.mel", "keyword.other.mel", "storage.type.mel", "entity.name.function.mel", "punctuation.section.function.mel"],
        regex: "(global\\s*)?(proc\\s*)(\\w+\\s*\\[?\\]?\\s+|\\s+)([A-Za-z_][A-Za-z0-9_\\.]*)(\\s*\\()",
        push: [{
          include: "$self"
        }, {
          token: "punctuation.section.function.mel",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "meta.function.mel"
        }]
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.MELHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/mel", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/mel_highlight_rules", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./mel_highlight_rules").MELHighlightRules,
      o = e("./behaviour/cstyle").CstyleBehaviour,
      u = e("./folding/cstyle").FoldMode,
      a = function a() {
    this.HighlightRules = s, this.$behaviour = new o(), this.foldingRules = new u();
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/mel";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/mel"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-mixal.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-mixal.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/mixal_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = function e(_e) {
      return _e && _e.search(/^[A-Z\u0394\u03a0\u03a30-9]{1,10}$/) > -1 && _e.search(/[A-Z\u0394\u03a0\u03a3]/) > -1;
    },
        t = function t(e) {
      return e && ["NOP", "ADD", "FADD", "SUB", "FSUB", "MUL", "FMUL", "DIV", "FDIV", "NUM", "CHAR", "HLT", "SLA", "SRA", "SLAX", "SRAX", "SLC", "SRC", "MOVE", "LDA", "LD1", "LD2", "LD3", "LD4", "LD5", "LD6", "LDX", "LDAN", "LD1N", "LD2N", "LD3N", "LD4N", "LD5N", "LD6N", "LDXN", "STA", "ST1", "ST2", "ST3", "ST4", "ST5", "ST6", "STX", "STJ", "STZ", "JBUS", "IOC", "IN", "OUT", "JRED", "JMP", "JSJ", "JOV", "JNOV", "JL", "JE", "JG", "JGE", "JNE", "JLE", "JAN", "JAZ", "JAP", "JANN", "JANZ", "JANP", "J1N", "J1Z", "J1P", "J1NN", "J1NZ", "J1NP", "J2N", "J2Z", "J2P", "J2NN", "J2NZ", "J2NP", "J3N", "J3Z", "J3P", "J3NN", "J3NZ", "J3NP", "J4N", "J4Z", "J4P", "J4NN", "J4NZ", "J4NP", "J5N", "J5Z", "J5P", "J5NN", "J5NZ", "J5NP", "J6N", "J6Z", "J6P", "J6NN", "J6NZ", "J6NP", "JXAN", "JXZ", "JXP", "JXNN", "JXNZ", "JXNP", "INCA", "DECA", "ENTA", "ENNA", "INC1", "DEC1", "ENT1", "ENN1", "INC2", "DEC2", "ENT2", "ENN2", "INC3", "DEC3", "ENT3", "ENN3", "INC4", "DEC4", "ENT4", "ENN4", "INC5", "DEC5", "ENT5", "ENN5", "INC6", "DEC6", "ENT6", "ENN6", "INCX", "DECX", "ENTX", "ENNX", "CMPA", "FCMP", "CMP1", "CMP2", "CMP3", "CMP4", "CMP5", "CMP6", "CMPX", "EQU", "ORIG", "CON", "ALF", "END"].indexOf(e) > -1;
    },
        n = function n(e) {
      return e && e.search(/[^ A-Z\u0394\u03a0\u03a30-9.,()+*/=$<>@;:'-]/) == -1;
    };

    this.$rules = {
      start: [{
        token: "comment.line.character",
        regex: /^ *\*.*$/
      }, {
        token: function token(t, r, i, s, o, u) {
          return [e(t) ? "variable.other" : "invalid.illegal", "text", "keyword.control", "text", n(o) ? "text" : "invalid.illegal", "comment.line.character"];
        },
        regex: /^(\S+)?( +)(ALF)(  )(.{5})(\s+.*)?$/
      }, {
        token: function token(t, r, i, s, o, u) {
          return [e(t) ? "variable.other" : "invalid.illegal", "text", "keyword.control", "text", n(o) ? "text" : "invalid.illegal", "comment.line.character"];
        },
        regex: /^(\S+)?( +)(ALF)( )(\S.{4})(\s+.*)?$/
      }, {
        token: function token(n, r, i, s) {
          return [e(n) ? "variable.other" : "invalid.illegal", "text", t(i) ? "keyword.control" : "invalid.illegal", "comment.line.character"];
        },
        regex: /^(\S+)?( +)(\S+)(?:\s*)$/
      }, {
        token: function token(r, i, s, o, u, a) {
          return [e(r) ? "variable.other" : "invalid.illegal", "text", t(s) ? "keyword.control" : "invalid.illegal", "text", n(u) ? "text" : "invalid.illegal", "comment.line.character"];
        },
        regex: /^(\S+)?( +)(\S+)( +)(\S+)(\s+.*)?$/
      }, {
        defaultToken: "text"
      }]
    };
  };

  r.inherits(s, i), t.MixalHighlightRules = s;
}), ace.define("ace/mode/mixal", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/mixal_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./mixal_highlight_rules").MixalHighlightRules,
      o = function o() {
    this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.$id = "ace/mode/mixal", this.lineCommentStart = "*";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/mixal"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-mushcode.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-mushcode.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/mushcode_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "@if|@ifelse|@switch|@halt|@dolist|@create|@scent|@sound|@touch|@ataste|@osound|@ahear|@aahear|@amhear|@otouch|@otaste|@drop|@odrop|@adrop|@dropfail|@odropfail|@smell|@oemit|@emit|@pemit|@parent|@clone|@taste|whisper|page|say|pose|semipose|teach|touch|taste|smell|listen|look|move|go|home|follow|unfollow|desert|dismiss|@tel",
        t = "=#0",
        n = "default|edefault|eval|get_eval|get|grep|grepi|hasattr|hasattrp|hasattrval|hasattrpval|lattr|nattr|poss|udefault|ufun|u|v|uldefault|xget|zfun|band|bnand|bnot|bor|bxor|shl|shr|and|cand|cor|eq|gt|gte|lt|lte|nand|neq|nor|not|or|t|xor|con|entrances|exit|followers|home|lcon|lexits|loc|locate|lparent|lsearch|next|num|owner|parent|pmatch|rloc|rnum|room|where|zone|worn|held|carried|acos|asin|atan|ceil|cos|e|exp|fdiv|fmod|floor|log|ln|pi|power|round|sin|sqrt|tan|aposs|andflags|conn|commandssent|controls|doing|elock|findable|flags|fullname|hasflag|haspower|hastype|hidden|idle|isbaker|lock|lstats|money|who|name|nearby|obj|objflags|photo|poll|powers|pendingtext|receivedtext|restarts|restarttime|subj|shortestpath|tmoney|type|visible|cat|element|elements|extract|filter|filterbool|first|foreach|fold|grab|graball|index|insert|itemize|items|iter|last|ldelete|map|match|matchall|member|mix|munge|pick|remove|replace|rest|revwords|setdiff|setinter|setunion|shuffle|sort|sortby|splice|step|wordpos|words|add|lmath|max|mean|median|min|mul|percent|sign|stddev|sub|val|bound|abs|inc|dec|dist2d|dist3d|div|floordiv|mod|modulo|remainder|vadd|vdim|vdot|vmag|vmax|vmin|vmul|vsub|vunit|regedit|regeditall|regeditalli|regediti|regmatch|regmatchi|regrab|regraball|regraballi|regrabi|regrep|regrepi|after|alphamin|alphamax|art|before|brackets|capstr|case|caseall|center|containsfansi|comp|decompose|decrypt|delete|edit|encrypt|escape|if|ifelse|lcstr|left|lit|ljust|merge|mid|ostrlen|pos|repeat|reverse|right|rjust|scramble|secure|space|spellnum|squish|strcat|strmatch|strinsert|stripansi|stripfansi|strlen|switch|switchall|table|tr|trim|ucstr|unsafe|wrap|ctitle|cwho|channels|clock|cflags|ilev|itext|inum|convsecs|convutcsecs|convtime|ctime|etimefmt|isdaylight|mtime|secs|msecs|starttime|time|timefmt|timestring|utctime|atrlock|clone|create|cook|dig|emit|lemit|link|oemit|open|pemit|remit|set|tel|wipe|zemit|fbcreate|fbdestroy|fbwrite|fbclear|fbcopy|fbcopyto|fbclip|fbdump|fbflush|fbhset|fblist|fbstats|qentries|qentry|play|ansi|break|c|asc|die|isdbref|isint|isnum|isletters|linecoords|localize|lnum|nameshort|null|objeval|r|rand|s|setq|setr|soundex|soundslike|valid|vchart|vchart2|vlabel|@@|bakerdays|bodybuild|box|capall|catalog|children|ctrailer|darttime|debt|detailbar|exploredroom|fansitoansi|fansitoxansi|fullbar|halfbar|isdarted|isnewbie|isword|lambda|lobjects|lplayers|lthings|lvexits|lvobjects|lvplayers|lvthings|newswrap|numsuffix|playerson|playersthisweek|randomad|randword|realrandword|replacechr|second|splitamount|strlenall|text|third|tofansi|totalac|unique|getaddressroom|listpropertycomm|listpropertyres|lotowner|lotrating|lotratingcount|lotvalue|boughtproduct|companyabb|companyicon|companylist|companyname|companyowners|companyvalue|employees|invested|productlist|productname|productowners|productrating|productratingcount|productsoldat|producttype|ratedproduct|soldproduct|topproducts|totalspentonproduct|totalstock|transfermoney|uniquebuyercount|uniqueproductsbought|validcompany|deletepicture|fbsave|getpicturesecurity|haspicture|listpictures|picturesize|replacecolor|rgbtocolor|savepicture|setpicturesecurity|showpicture|piechart|piechartlabel|createmaze|drawmaze|drawwireframe",
        r = this.createKeywordMapper({
      "invalid.deprecated": "debugger",
      "support.function": n,
      "constant.language": t,
      keyword: e
    }, "identifier"),
        i = "(?:r|u|ur|R|U|UR|Ur|uR)?",
        s = "(?:(?:[1-9]\\d*)|(?:0))",
        o = "(?:0[oO]?[0-7]+)",
        u = "(?:0[xX][\\dA-Fa-f]+)",
        a = "(?:0[bB][01]+)",
        f = "(?:" + s + "|" + o + "|" + u + "|" + a + ")",
        l = "(?:[eE][+-]?\\d+)",
        c = "(?:\\.\\d+)",
        h = "(?:\\d+)",
        p = "(?:(?:" + h + "?" + c + ")|(?:" + h + "\\.))",
        d = "(?:(?:" + p + "|" + h + ")" + l + ")",
        v = "(?:" + d + "|" + p + ")";
    this.$rules = {
      start: [{
        token: "variable",
        regex: "%[0-9]{1}"
      }, {
        token: "variable",
        regex: "%q[0-9A-Za-z]{1}"
      }, {
        token: "variable",
        regex: "%[a-zA-Z]{1}"
      }, {
        token: "variable.language",
        regex: "%[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: "(?:" + v + "|\\d+)[jJ]\\b"
      }, {
        token: "constant.numeric",
        regex: v
      }, {
        token: "constant.numeric",
        regex: f + "[lL]\\b"
      }, {
        token: "constant.numeric",
        regex: f + "\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text",
        regex: "\\s+"
      }]
    };
  };

  r.inherits(s, i), t.MushCodeRules = s;
}), ace.define("ace/mode/folding/pythonic", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e) {
    this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + e + ")(?:\\s*)(?:#.*)?$");
  };

  r.inherits(s, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = e.getLine(n),
          i = r.match(this.foldingStartMarker);
      if (i) return i[1] ? this.openingBracketBlock(e, i[1], n, i.index) : i[2] ? this.indentationBlock(e, n, i.index + i[2].length) : this.indentationBlock(e, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/mushcode", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/mushcode_highlight_rules", "ace/mode/folding/pythonic", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./mushcode_highlight_rules").MushCodeRules,
      o = e("./folding/pythonic").FoldMode,
      u = e("../range").Range,
      a = function a() {
    this.HighlightRules = s, this.foldingRules = new o("\\:"), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[:]\s*$/);
        o && (r += n);
      }

      return r;
    };

    var e = {
      pass: 1,
      "return": 1,
      raise: 1,
      "break": 1,
      "continue": 1
    };
    this.checkOutdent = function (t, n, r) {
      if (r !== "\r\n" && r !== "\r" && r !== "\n") return !1;
      var i = this.getTokenizer().getLineTokens(n.trim(), t).tokens;
      if (!i) return !1;

      do {
        var s = i.pop();
      } while (s && (s.type == "comment" || s.type == "text" && s.value.match(/^\s+$/)));

      return s ? s.type == "keyword" && e[s.value] : !1;
    }, this.autoOutdent = function (e, t, n) {
      n += 1;
      var r = this.$getIndent(t.getLine(n)),
          i = t.getTabString();
      r.slice(-i.length) == i && t.remove(new u(n, r.length - i.length, n, r.length));
    }, this.$id = "ace/mode/mushcode";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/mushcode"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-mysql.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-mysql.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/mysql_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = function u() {
    function i(e) {
      var t = e.start,
          n = e.escape;
      return {
        token: "string.start",
        regex: t,
        next: [{
          token: "constant.language.escape",
          regex: n
        }, {
          token: "string.end",
          next: "start",
          regex: t
        }, {
          defaultToken: "string"
        }]
      };
    }

    var e = "alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat",
        t = "by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl",
        n = "charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee",
        r = this.createKeywordMapper({
      "support.function": t,
      keyword: e,
      constant: "false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat",
      "variable.language": n
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: "(?:-- |#).*$"
      }, i({
        start: '"',
        escape: /\\[0'"bnrtZ\\%_]?/
      }), i({
        start: "'",
        escape: /\\[0'"bnrtZ\\%_]?/
      }), s.getStartRule("doc-start"), {
        token: "comment",
        regex: /\/\*/,
        next: "comment"
      }, {
        token: "constant.numeric",
        regex: /0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "constant.class",
        regex: "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "constant.buildin",
        regex: "`[^`]*`"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "paren.lparen",
        regex: "[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\)]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.embedRules(s, "doc-", [s.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(u, o), t.MysqlHighlightRules = u;
}), ace.define("ace/mode/mysql", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/mysql_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("../mode/text").Mode,
      s = e("./mysql_highlight_rules").MysqlHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = ["--", "#"], this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/mysql";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/mysql"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-nginx.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-nginx.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/nginx_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "include|index|absolute_redirect|aio|output_buffers|directio|sendfile|aio_write|alias|root|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|default_type|disable_symlinks|directio_alignment|error_page|etag|if_modified_since|ignore_invalid_headers|internal|keepalive_requests|keepalive_disable|keepalive_timeout|limit_except|large_client_header_buffers|limit_rate|limit_rate_after|lingering_close|lingering_time|lingering_timeout|listen|log_not_found|log_subrequest|max_ranges|merge_slashes|msie_padding|msie_refresh|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|output_buffers|port_in_redirect|postpone_output|read_ahead|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|satisfy|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|subrequest_output_buffer_size|tcp_nodelay|tcp_nopush|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|variables_hash_bucket_size|variables_hash_max_size|accept_mutex|accept_mutex_delay|debug_connection|error_log|daemon|debug_points|env|load_module|lock_file|master_process|multi_accept|pcre_jit|pid|ssl_engine|thread_pool|timer_resolution|use|user|worker_aio_requests|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_shutdown_timeout|working_directory|allow|deny|add_before_body|add_after_body|addition_types|api|status_zone|auth_basic|auth_basic_user_file|auth_jwt|auth_jwt|auth_jwt_claim_set|auth_jwt_header_set|auth_jwt_key_file|auth_jwt_key_request|auth_jwt_leeway|auth_request|auth_request_set|autoindex|autoindex_exact_size|autoindex_format|autoindex_localtime|ancient_browser|ancient_browser_value|modern_browser|modern_browser_value|charset|charset_map|charset_types|override_charset|source_charset|create_full_put_path|dav_access|dav_methods|min_delete_depth|empty_gif|f4f|f4f_buffer_size|fastcgi_bind|fastcgi_buffer_size|fastcgi_buffering|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_background_update|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_age|fastcgi_cache_lock_timeout|fastcgi_cache_max_range_offset|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_revalidate|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_catch_stderr|fastcgi_connect_timeout|fastcgi_force_ranges|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_limit_rate|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_next_upstream_timeout|fastcgi_next_upstream_tries|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_pass_request_body|fastcgi_pass_request_headers|fastcgi_read_timeout|fastcgi_request_buffering|fastcgi_send_lowat|fastcgi_send_timeout|fastcgi_socket_keepalive|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geoip_country|geoip_city|geoip_org|geoip_proxy|geoip_proxy_recursive|grpc_bind|grpc_buffer_size|grpc_connect_timeout|grpc_hide_header|grpc_ignore_headers|grpc_intercept_errors|grpc_next_upstream|grpc_next_upstream_timeout|grpc_next_upstream_tries|grpc_pass|grpc_pass_header|grpc_read_timeout|grpc_send_timeout|grpc_set_header|grpc_socket_keepalive|grpc_ssl_certificate|grpc_ssl_certificate_key|grpc_ssl_ciphers|grpc_ssl_crl|grpc_ssl_name|grpc_ssl_password_file|grpc_ssl_protocols|grpc_ssl_server_name|grpc_ssl_session_reuse|grpc_ssl_trusted_certificate|grpc_ssl_verify|grpc_ssl_verify_depth|gunzip|gunzip_buffers|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_types|gzip_vary|gzip_static|add_header|add_trailer|expires|hlshls_buffers|hls_forward_args|hls_fragment|hls_mp4_buffer_size|hls_mp4_max_buffer_size|image_filter|image_filter_buffer|image_filter_interlace|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|image_filter_webp_quality|js_content|js_include|js_set|keyval|keyval_zone|limit_conn|limit_conn_log_level|limit_conn_status|limit_conn_zone|limit_zone|limit_req|limit_req_log_level|limit_req_status|limit_req_zone|access_log|log_format|open_log_file_cache|map_hash_bucket_size|map_hash_max_size|memcached_bind|memcached_buffer_size|memcached_connect_timeout|memcached_force_ranges|memcached_gzip_flag|memcached_next_upstream|memcached_next_upstream_timeout|memcached_next_upstream_tries|memcached_pass|memcached_read_timeout|memcached_send_timeout|memcached_socket_keepalive|mirror|mirror_request_body|mp4|mp4_buffer_size|mp4_max_buffer_size|mp4_limit_rate|mp4_limit_rate_after|perl_modules|perl_require|perl_set|proxy_bind|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_background_update|proxy_cache_bypass|proxy_cache_convert_head|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_age|proxy_cache_lock_timeout|proxy_cache_max_range_offset|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_purge|proxy_cache_revalidate|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_force_ranges|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_limit_rate|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_next_upstream_timeout|proxy_next_upstream_tries|proxy_no_cache|proxy_pass|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_socket_keepalive|proxy_ssl_certificate|proxy_ssl_certificate_key|proxy_ssl_ciphers|proxy_ssl_crl|proxy_ssl_name|proxy_ssl_password_file|proxy_ssl_protocols|proxy_ssl_server_name|proxy_ssl_session_reuse|proxy_ssl_trusted_certificate|proxy_ssl_verify|proxy_ssl_verify_depth|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|random_index|set_real_ip_from|real_ip_header|real_ip_recursive|referer_hash_bucket_size|referer_hash_max_size|valid_referers|break|return|rewrite_log|set|uninitialized_variable_warn|scgi_bind|scgi_buffer_size|scgi_buffering|scgi_buffers|scgi_busy_buffers_size|scgi_cache|scgi_cache_background_update|scgi_cache_key|scgi_cache_lock|scgi_cache_lock_age|scgi_cache_lock_timeout|scgi_cache_max_range_offset|scgi_cache_methods|scgi_cache_min_uses|scgi_cache_path|scgi_cache_purge|scgi_cache_revalidate|scgi_cache_use_stale|scgi_cache_valid|scgi_connect_timeout|scgi_force_ranges|scgi_hide_header|scgi_ignore_client_abort|scgi_ignore_headers|scgi_intercept_errors|scgi_limit_rate|scgi_max_temp_file_size|scgi_next_upstream|scgi_next_upstream_timeout|scgi_next_upstream_tries|scgi_no_cache|scgi_param|scgi_pass|scgi_pass_header|scgi_pass_request_body|scgi_pass_request_headers|scgi_read_timeout|scgi_request_buffering|scgi_send_timeout|scgi_socket_keepalive|scgi_store|scgi_store_access|scgi_temp_file_write_size|scgi_temp_path|secure_link|secure_link_md5|secure_link_secret|session_log|session_log_format|session_log_zone|slice|spdy_chunk_size|spdy_headers_comp|ssi|ssi_last_modified|ssi_min_file_chunk|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_buffer_size|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_early_data|ssl_ecdh_curve|ssl_password_file|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_ticket_key|ssl_session_tickets|ssl_session_timeout|ssl_stapling|ssl_stapling_file|ssl_stapling_responder|ssl_stapling_verify|ssl_trusted_certificate|ssl_verify_client|ssl_verify_depth|status|status_format|status_zone|stub_status|sub_filter|sub_filter_last_modified|sub_filter_once|sub_filter_types|server|zone|state|hash|ip_hash|keepalive|keepalive_requests|keepalive_timeout|ntlm|least_conn|least_time|queue|random|sticky|sticky_cookie_insert|upstream_conf|health_check|userid|userid_domain|userid_expires|userid_mark|userid_name|userid_p3p|userid_path|userid_service|uwsgi_bind|uwsgi_buffer_size|uwsgi_buffering|uwsgi_buffers|uwsgi_busy_buffers_size|uwsgi_cache|uwsgi_cache_background_update|uwsgi_cache_bypass|uwsgi_cache_key|uwsgi_cache_lock|uwsgi_cache_lock_age|uwsgi_cache_lock_timeout|uwsgi_cache_max_range_offset|uwsgi_cache_methods|uwsgi_cache_min_uses|uwsgi_cache_path|uwsgi_cache_purge|uwsgi_cache_revalidate|uwsgi_cache_use_stale|uwsgi_cache_valid|uwsgi_connect_timeout|uwsgi_force_ranges|uwsgi_hide_header|uwsgi_ignore_client_abort|uwsgi_ignore_headers|uwsgi_intercept_errors|uwsgi_limit_rate|uwsgi_max_temp_file_size|uwsgi_modifier1|uwsgi_modifier2|uwsgi_next_upstream|uwsgi_next_upstream_timeout|uwsgi_next_upstream_tries|uwsgi_no_cache|uwsgi_param|uwsgi_pass|uwsgi_pass_header|uwsgi_pass_request_body|uwsgi_pass_request_headers|uwsgi_read_timeout|uwsgi_request_buffering|uwsgi_send_timeout|uwsgi_socket_keepalive|uwsgi_ssl_certificate|uwsgi_ssl_certificate_key|uwsgi_ssl_ciphers|uwsgi_ssl_crl|uwsgi_ssl_name|uwsgi_ssl_password_file|uwsgi_ssl_protocols|uwsgi_ssl_server_name|uwsgi_ssl_session_reuse|uwsgi_ssl_trusted_certificate|uwsgi_ssl_verify|uwsgi_ssl_verify_depth|uwsgi_store|uwsgi_store_access|uwsgi_temp_file_write_size|uwsgi_temp_path|http2_body_preread_size|http2_chunk_size|http2_idle_timeout|http2_max_concurrent_pushes|http2_max_concurrent_streams|http2_max_field_size|http2_max_header_size|http2_max_requests|http2_push|http2_push_preload|http2_recv_buffer_size|http2_recv_timeout|xml_entities|xslt_last_modified|xslt_param|xslt_string_param|xslt_stylesheet|xslt_types|listen|protocol|resolver|resolver_timeout|timeout|auth_http|auth_http_header|auth_http_pass_client_cert|auth_http_timeout|proxy_buffer|proxy_pass_error_message|proxy_timeout|xclient|starttls|imap_auth|imap_capabilities|imap_client_buffer|pop3_auth|pop3_capabilities|smtp_auth|smtp_capabilities|smtp_client_buffer|smtp_greeting_delay|preread_buffer_size|preread_timeout|proxy_protocol_timeout|js_access|js_filter|js_preread|proxy_download_rate|proxy_requests|proxy_responses|proxy_upload_rate|ssl_handshake_timeout|ssl_preread|health_check_timeout|zone_sync|zone_sync_buffers|zone_sync_connect_retry_interval|zone_sync_connect_timeout|zone_sync_interval|zone_sync_recv_buffer_size|zone_sync_server|zone_sync_ssl|zone_sync_ssl_certificate|zone_sync_ssl_certificate_key|zone_sync_ssl_ciphers|zone_sync_ssl_crl|zone_sync_ssl_name|zone_sync_ssl_password_file|zone_sync_ssl_protocols|zone_sync_ssl_server_name|zone_sync_ssl_trusted_certificate|zone_sync_ssl_verify_depth|zone_sync_timeout|google_perftools_profiles|proxy|perl";
    this.$rules = {
      start: [{
        token: ["storage.type", "text", "string.regexp", "paren.lparen"],
        regex: "\\b(location)(\\s+)([\\^]?~[\\*]?\\s+.*?)({)"
      }, {
        token: ["storage.type", "text", "text", "paren.lparen"],
        regex: "\\b(location|match|upstream)(\\s+)(.*?)({)"
      }, {
        token: ["storage.type", "text", "string", "text", "variable", "text", "paren.lparen"],
        regex: '\\b(split_clients|map)(\\s+)(\\".*\\")(\\s+)(\\$[\\w_]+)(\\s*)({)'
      }, {
        token: ["storage.type", "text", "paren.lparen"],
        regex: "\\b(http|events|server|mail|stream)(\\s*)({)"
      }, {
        token: ["storage.type", "text", "variable", "text", "variable", "text", "paren.lparen"],
        regex: "\\b(geo|map)(\\s+)(\\$[\\w_]+)?(\\s*)(\\$[\\w_]+)(\\s*)({)"
      }, {
        token: "paren.rparen",
        regex: "(})"
      }, {
        token: "paren.lparen",
        regex: "({)"
      }, {
        token: ["storage.type", "text", "paren.lparen"],
        regex: "\\b(if)(\\s+)(\\()",
        push: [{
          token: "paren.rparen",
          regex: "\\)|$",
          next: "pop"
        }, {
          include: "lexical"
        }]
      }, {
        token: "keyword",
        regex: "\\b(" + e + ")\\b",
        push: [{
          token: "punctuation",
          regex: ";",
          next: "pop"
        }, {
          include: "lexical"
        }]
      }, {
        token: ["keyword", "text", "string.regexp", "text", "punctuation"],
        regex: "\\b(rewrite)(\\s)(\\S*)(\\s.*)(;)"
      }, {
        include: "lexical"
      }, {
        include: "comments"
      }],
      comments: [{
        token: "comment",
        regex: "#.*$"
      }],
      lexical: [{
        token: "string",
        regex: "'",
        push: [{
          token: "string",
          regex: "'",
          next: "pop"
        }, {
          include: "variables"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: '"',
        push: [{
          token: "string",
          regex: '"',
          next: "pop"
        }, {
          include: "variables"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.regexp",
        regex: /[!]?[~][*]?\s+.*(?=\))/
      }, {
        token: "string.regexp",
        regex: /[\^]\S*(?=;$)/
      }, {
        token: "string.regexp",
        regex: /[\^]\S*(?=;|\s|$)/
      }, {
        token: "keyword.operator",
        regex: "\\B(\\+|\\-|\\*|\\=|!=)\\B"
      }, {
        token: "constant.language",
        regex: "\\b(true|false|on|off|all|any|main|always)\\b"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        include: "variables"
      }],
      variables: [{
        token: "variable",
        regex: "\\$[\\w_]+"
      }, {
        token: "variable.language",
        regex: "\\b(GET|POST|HEAD)\\b"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.NginxHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/nginx", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/nginx_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./nginx_highlight_rules").NginxHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    i.call(this), this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.$id = "ace/mode/nginx";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/nginx"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-nim.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-nim.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/nim_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = this.createKeywordMapper({
      variable: "var|let|const",
      keyword: "assert|parallel|spawn|export|include|from|template|mixin|bind|import|concept|raise|defer|try|finally|except|converter|proc|func|macro|method|and|or|not|xor|shl|shr|div|mod|in|notin|is|isnot|of|static|if|elif|else|case|of|discard|when|return|yield|block|break|while|echo|continue|asm|using|cast|addr|unsafeAddr|type|ref|ptr|do|declared|defined|definedInScope|compiles|sizeOf|is|shallowCopy|getAst|astToStr|spawn|procCall|for|iterator|as",
      "storage.type": "newSeq|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|float|char|bool|string|set|pointer|float32|float64|enum|object|cstring|array|seq|openArray|varargs|UncheckedArray|tuple|set|distinct|void|auto|openarray|range",
      "support.function": "lock|ze|toU8|toU16|toU32|ord|low|len|high|add|pop|contains|card|incl|excl|dealloc|inc",
      "constant.language": "nil|true|false"
    }, "identifier"),
        t = "(?:0[xX][\\dA-Fa-f][\\dA-Fa-f_]*)",
        n = "(?:[0-9][\\d_]*)",
        r = "(?:0o[0-7][0-7_]*)",
        i = "(?:0[bB][01][01_]*)",
        s = "(?:" + t + "|" + n + "|" + r + "|" + i + ")(?:'?[iIuU](?:8|16|32|64)|u)?\\b",
        o = "(?:[eE][+-]?[\\d][\\d_]*)",
        u = "(?:[\\d][\\d_]*(?:[.][\\d](?:[\\d_]*)" + o + "?)|" + o + ")",
        a = "(?:" + t + "(?:'(?:(?:[fF](?:32|64)?)|[dD])))|(?:" + u + "|" + n + "|" + r + "|" + i + ")(?:'(?:(?:[fF](?:32|64)?)|[dD]))",
        f = "\\\\([abeprcnlftv\\\"']|x[0-9A-Fa-f]{2}|[0-2][0-9]{2}|u[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})",
        l = "[a-zA-Z][a-zA-Z0-9_]*";
    this.$rules = {
      start: [{
        token: ["identifier", "keyword.operator", "support.function"],
        regex: "(" + l + ")([.]{1})(" + l + ")(?=\\()"
      }, {
        token: "paren.lparen",
        regex: "(\\{\\.)",
        next: [{
          token: "paren.rparen",
          regex: "(\\.\\}|\\})",
          next: "start"
        }, {
          include: "methods"
        }, {
          token: "identifier",
          regex: l
        }, {
          token: "punctuation",
          regex: /[,]/
        }, {
          token: "keyword.operator",
          regex: /[=:.]/
        }, {
          token: "paren.lparen",
          regex: /[[(]/
        }, {
          token: "paren.rparen",
          regex: /[\])]/
        }, {
          include: "math"
        }, {
          include: "strings"
        }, {
          defaultToken: "text"
        }]
      }, {
        token: "comment.doc.start",
        regex: /##\[(?!])/,
        push: "docBlockComment"
      }, {
        token: "comment.start",
        regex: /#\[(?!])/,
        push: "blockComment"
      }, {
        token: "comment.doc",
        regex: "##.*$"
      }, {
        token: "comment",
        regex: "#.*$"
      }, {
        include: "strings"
      }, {
        token: "string",
        regex: "'(?:\\\\(?:[abercnlftv]|x[0-9A-Fa-f]{2}|[0-2][0-9]{2}|u[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})|.{1})?'"
      }, {
        include: "methods"
      }, {
        token: e,
        regex: "[a-zA-Z][a-zA-Z0-9_]*\\b"
      }, {
        token: ["keyword.operator", "text", "storage.type"],
        regex: "([:])(\\s+)(" + l + ")(?=$|\\)|\\[|,|\\s+=|;|\\s+\\{)"
      }, {
        token: "paren.lparen",
        regex: /\[\.|{\||\(\.|\[:|[[({`]/
      }, {
        token: "paren.rparen",
        regex: /\.\)|\|}|\.]|[\])}]/
      }, {
        token: "keyword.operator",
        regex: /[=+\-*\/<>@$~&%|!?^.:\\]/
      }, {
        token: "punctuation",
        regex: /[,;]/
      }, {
        include: "math"
      }],
      blockComment: [{
        regex: /#\[]/,
        token: "comment"
      }, {
        regex: /#\[(?!])/,
        token: "comment.start",
        push: "blockComment"
      }, {
        regex: /]#/,
        token: "comment.end",
        next: "pop"
      }, {
        defaultToken: "comment"
      }],
      docBlockComment: [{
        regex: /##\[]/,
        token: "comment.doc"
      }, {
        regex: /##\[(?!])/,
        token: "comment.doc.start",
        push: "docBlockComment"
      }, {
        regex: /]##/,
        token: "comment.doc.end",
        next: "pop"
      }, {
        defaultToken: "comment.doc"
      }],
      math: [{
        token: "constant.float",
        regex: a
      }, {
        token: "constant.float",
        regex: u
      }, {
        token: "constant.integer",
        regex: s
      }],
      methods: [{
        token: "support.function",
        regex: "(\\w+)(?=\\()"
      }],
      strings: [{
        token: "string",
        regex: "(\\b" + l + ')?"""',
        push: [{
          token: "string",
          regex: '"""',
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: "\\b" + l + '"(?=.)',
        push: [{
          token: "string",
          regex: '"|$',
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: '"',
        push: [{
          token: "string",
          regex: '"|$',
          next: "pop"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.NimHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/nim", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/nim_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./nim_highlight_rules").NimHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    i.call(this), this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.blockComment = {
      start: "#[",
      end: "]#",
      nestable: !0
    }, this.$id = "ace/mode/nim";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/nim"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-nix.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-nix.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/c_cpp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",
      u = function u() {
    var e = "break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",
        t = "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",
        n = "const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",
        r = "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",
        s = "NULL|true|false|TRUE|FALSE|nullptr",
        u = this.$keywords = this.createKeywordMapper({
      "keyword.control": e,
      "storage.type": t,
      "storage.modifier": n,
      "keyword.operator": r,
      "variable.language": "this",
      "constant.language": s
    }, "identifier"),
        a = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*\\b",
        f = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,
        l = "%" + /(\d+\$)?/.source + /[#0\- +']*/.source + /[,;:_]?/.source + /((-?\d+)|\*(-?\d+\$)?)?/.source + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;
    this.$rules = {
      start: [{
        token: "comment",
        regex: "//$",
        next: "start"
      }, {
        token: "comment",
        regex: "//",
        next: "singleLineComment"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: "'(?:" + f + "|.)?'"
      }, {
        token: "string.start",
        regex: '"',
        stateName: "qqstring",
        next: [{
          token: "string",
          regex: /\\\s*$/,
          next: "qqstring"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          token: "constant.language.escape",
          regex: l
        }, {
          token: "string.end",
          regex: '"|$',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: 'R"\\(',
        stateName: "rawString",
        next: [{
          token: "string.end",
          regex: '\\)"',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "keyword",
        regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b",
        next: "directive"
      }, {
        token: "keyword",
        regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"
      }, {
        token: "support.function.C99.c",
        regex: o
      }, {
        token: u,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      singleLineComment: [{
        token: "comment",
        regex: /\\$/,
        next: "singleLineComment"
      }, {
        token: "comment",
        regex: /$/,
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      directive: [{
        token: "constant.other.multiline",
        regex: /\\/
      }, {
        token: "constant.other.multiline",
        regex: /.*\\/
      }, {
        token: "constant.other",
        regex: "\\s*<.+?>",
        next: "start"
      }, {
        token: "constant.other",
        regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',
        next: "start"
      }, {
        token: "constant.other",
        regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",
        next: "start"
      }, {
        token: "constant.other",
        regex: /[^\\\/]+/,
        next: "start"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(u, s), t.c_cppHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/c_cpp", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/c_cpp_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./c_cpp_highlight_rules").c_cppHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[]\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/c_cpp", this.snippetFileId = "ace/snippets/c_cpp";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/nix_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "true|false",
        t = "with|import|if|else|then|inherit",
        n = "let|in|rec",
        r = this.createKeywordMapper({
      "constant.language.nix": e,
      "keyword.control.nix": t,
      "keyword.declaration.nix": n
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: /#.*$/
      }, {
        token: "comment",
        regex: /\/\*/,
        next: "comment"
      }, {
        token: "constant",
        regex: "<[^>]+>"
      }, {
        regex: "(==|!=|<=?|>=?)",
        token: ["keyword.operator.comparison.nix"]
      }, {
        regex: "((?:[+*/%-]|\\~)=)",
        token: ["keyword.operator.assignment.arithmetic.nix"]
      }, {
        regex: "=",
        token: "keyword.operator.assignment.nix"
      }, {
        token: "string",
        regex: "''",
        next: "qqdoc"
      }, {
        token: "string",
        regex: "'",
        next: "qstring"
      }, {
        token: "string",
        regex: '"',
        push: "qqstring"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        regex: "}",
        token: function token(e, t, n) {
          return n[1] && n[1].charAt(0) == "q" ? "constant.language.escape" : "text";
        },
        next: "pop"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqdoc: [{
        token: "constant.language.escape",
        regex: /\$\{/,
        push: "start"
      }, {
        token: "string",
        regex: "''",
        next: "pop"
      }, {
        defaultToken: "string"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: /\$\{/,
        push: "start"
      }, {
        token: "string",
        regex: '"',
        next: "pop"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: /\$\{/,
        push: "start"
      }, {
        token: "string",
        regex: "'",
        next: "pop"
      }, {
        defaultToken: "string"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.NixHighlightRules = s;
}), ace.define("ace/mode/nix", ["require", "exports", "module", "ace/lib/oop", "ace/mode/c_cpp", "ace/mode/nix_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./c_cpp").Mode,
      s = e("./nix_highlight_rules").NixHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    i.call(this), this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/nix";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/nix"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-nsis.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-nsis.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/nsis_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "keyword.compiler.nsis",
        regex: /^\s*!(?:include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|gettlbversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\b/,
        caseInsensitive: !0
      }, {
        token: "keyword.command.nsis",
        regex: /^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/,
        caseInsensitive: !0
      }, {
        token: "keyword.control.nsis",
        regex: /^\s*!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/,
        caseInsensitive: !0
      }, {
        token: "keyword.plugin.nsis",
        regex: /^\s*\w+::\w+/,
        caseInsensitive: !0
      }, {
        token: "keyword.operator.comparison.nsis",
        regex: /[!<>]?=|<>|<|>/
      }, {
        token: "support.function.nsis",
        regex: /(?:\b|^\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|PageEx|PageExEnd)\b/,
        caseInsensitive: !0
      }, {
        token: "support.library.nsis",
        regex: /\${[\w\.:-]+}/
      }, {
        token: "constant.nsis",
        regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/,
        caseInsensitive: !0
      }, {
        token: "constant.library.nsis",
        regex: /\${(?:AtLeastServicePack|AtLeastWin7|AtLeastWin8|AtLeastWin10|AtLeastWin95|AtLeastWin98|AtLeastWin2000|AtLeastWin2003|AtLeastWin2008|AtLeastWin2008R2|AtLeastWinME|AtLeastWinNT4|AtLeastWinVista|AtLeastWinXP|AtMostServicePack|AtMostWin7|AtMostWin8|AtMostWin10|AtMostWin95|AtMostWin98|AtMostWin2000|AtMostWin2003|AtMostWin2008|AtMostWin2008R2|AtMostWinME|AtMostWinNT4|AtMostWinVista|AtMostWinXP|IsDomainController|IsNT|IsServer|IsServicePack|IsWin7|IsWin8|IsWin10|IsWin95|IsWin98|IsWin2000|IsWin2003|IsWin2008|IsWin2008R2|IsWinME|IsWinNT4|IsWinVista|IsWinXP)}/
      }, {
        token: "constant.language.boolean.true.nsis",
        regex: /\b(?:true|on)\b/
      }, {
        token: "constant.language.boolean.false.nsis",
        regex: /\b(?:false|off)\b/
      }, {
        token: "constant.language.option.nsis",
        regex: /(?:\b|^\s*)(?:(?:un\.)?components|(?:un\.)?custom|(?:un\.)?directory|(?:un\.)?instfiles|(?:un\.)?license|uninstConfirm|admin|all|auto|both|bottom|bzip2|current|force|hide|highest|ifdiff|ifnewer|lastused|leave|left|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|user|Win10|Win7|Win8|WinVista|zlib)\b/,
        caseInsensitive: !0
      }, {
        token: "constant.language.slash-option.nsis",
        regex: /\b\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID=|ITALIC|LANG=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\b/,
        caseInsensitive: !0
      }, {
        token: "constant.numeric.nsis",
        regex: /\b(?:0(?:x|X)[0-9a-fA-F]+|[0-9]+(?:\.[0-9]+)?)\b/
      }, {
        token: "entity.name.function.nsis",
        regex: /\$\([\w\.:-]+\)/
      }, {
        token: "storage.type.function.nsis",
        regex: /\$\w+/
      }, {
        token: "punctuation.definition.string.begin.nsis",
        regex: /`/,
        push: [{
          token: "punctuation.definition.string.end.nsis",
          regex: /`/,
          next: "pop"
        }, {
          token: "constant.character.escape.nsis",
          regex: /\$\\./
        }, {
          defaultToken: "string.quoted.back.nsis"
        }]
      }, {
        token: "punctuation.definition.string.begin.nsis",
        regex: /"/,
        push: [{
          token: "punctuation.definition.string.end.nsis",
          regex: /"/,
          next: "pop"
        }, {
          token: "constant.character.escape.nsis",
          regex: /\$\\./
        }, {
          defaultToken: "string.quoted.double.nsis"
        }]
      }, {
        token: "punctuation.definition.string.begin.nsis",
        regex: /'/,
        push: [{
          token: "punctuation.definition.string.end.nsis",
          regex: /'/,
          next: "pop"
        }, {
          token: "constant.character.escape.nsis",
          regex: /\$\\./
        }, {
          defaultToken: "string.quoted.single.nsis"
        }]
      }, {
        token: ["punctuation.definition.comment.nsis", "comment.line.nsis"],
        regex: /(;|#)(.*$)/
      }, {
        token: "punctuation.definition.comment.nsis",
        regex: /\/\*/,
        push: [{
          token: "punctuation.definition.comment.nsis",
          regex: /\*\//,
          next: "pop"
        }, {
          defaultToken: "comment.block.nsis"
        }]
      }, {
        token: "text",
        regex: /(?:!include|!insertmacro)\b/
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    comment: "\n	todo: - highlight functions\n	",
    fileTypes: ["nsi", "nsh"],
    name: "NSIS",
    scopeName: "source.nsis"
  }, r.inherits(s, i), t.NSISHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/nsis", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/nsis_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./nsis_highlight_rules").NSISHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = [";", "#"], this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/nsis";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/nsis"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-nunjucks.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-nunjucks.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/nunjucks_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = e("./html_highlight_rules").HtmlHighlightRules,
      o = function o() {
    s.call(this), this.$rules.start.unshift({
      token: "punctuation.begin",
      regex: /{{-?/,
      push: [{
        token: "punctuation.end",
        regex: /-?}}/,
        next: "pop"
      }, {
        include: "expression"
      }]
    }, {
      token: "punctuation.begin",
      regex: /{%-?/,
      push: [{
        token: "punctuation.end",
        regex: /-?%}/,
        next: "pop"
      }, {
        token: "constant.language.escape",
        regex: /\b(r\/.*\/[gimy]?)\b/
      }, {
        include: "statement"
      }]
    }, {
      token: "comment.begin",
      regex: /{#/,
      push: [{
        token: "comment.end",
        regex: /#}/,
        next: "pop"
      }, {
        defaultToken: "comment"
      }]
    }), this.addRules({
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          token: "punctuation.begin",
          regex: /{{-?/,
          push: [{
            token: "punctuation.end",
            regex: /-?}}/,
            next: "pop"
          }, {
            include: "expression"
          }]
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          token: "punctuation.begin",
          regex: /{{-?/,
          push: [{
            token: "punctuation.end",
            regex: /-?}}/,
            next: "pop"
          }, {
            include: "expression"
          }]
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }],
      statement: [{
        token: "keyword.control",
        regex: /\b(block|endblock|extends|endif|elif|for|endfor|asyncEach|endeach|include|asyncAll|endall|macro|endmacro|set|endset|ignore missing|as|from|raw|verbatim|filter|endfilter)\b/
      }, {
        include: "expression"
      }],
      expression: [{
        token: "constant.language",
        regex: /\b(true|false|none)\b/
      }, {
        token: "string",
        regex: /"/,
        push: [{
          token: "string",
          regex: /"/,
          next: "pop"
        }, {
          include: "escapeStrings"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: /'/,
        push: [{
          token: "string",
          regex: /'/,
          next: "pop"
        }, {
          include: "escapeStrings"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: "keyword.operator",
        regex: /\+|-|\/\/|\/|%|\*\*|\*|===|==|!==|!=|>=|>|<=|</
      }, {
        token: "keyword.control",
        regex: /\b(and|else|if|in|import|not|or)\b/
      }, {
        token: "support.function",
        regex: /[a-zA-Z_]+(?=\()/
      }, {
        token: "paren.lpar",
        regex: /[(\[{]/
      }, {
        token: "paren.rpar",
        regex: /[)\]}]/
      }, {
        token: "punctuation",
        regex: /[,]/
      }, {
        token: ["punctuation", "support.function"],
        regex: /(\.)([a-zA-Z_][a-zA-Z0-9_]*)(?=\()/
      }, {
        token: ["punctuation", "variable.parameter"],
        regex: /(\.)([a-zA-Z_][a-zA-Z0-9_]*)/
      }, {
        token: ["punctuation", "text", "support.other"],
        regex: /(\|)(\s)*([a-zA-Z_][a-zA-Z0-9_]*)/
      }, {
        token: "variable",
        regex: /[a-zA-Z_][a-zA-Z0-9_]*/
      }],
      escapeStrings: [{
        token: "constant.language.escape",
        regex: /(\\\\n)|(\\\\)|(\\")|(\\')|(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v)/
      }, {
        token: "constant.language.escape",
        regex: /\\(?:x[0-9A-F]{2}|(?:U[0-9A-Fa-f]{8})|(?:u[0-9A-Fa-f]{4})|(?:N{[a-zA-Z ]+}))/
      }]
    }), this.normalizeRules();
  };

  r.inherits(o, i), t.NunjucksHighlightRules = o;
}), ace.define("ace/mode/nunjucks", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/nunjucks_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./nunjucks_highlight_rules").NunjucksHighlightRules,
      o = function o() {
    this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.$id = "ace/mode/nunjucks";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/nunjucks"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-objectivec.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-objectivec.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/c_cpp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",
      u = function u() {
    var e = "break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",
        t = "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",
        n = "const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",
        r = "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",
        s = "NULL|true|false|TRUE|FALSE|nullptr",
        u = this.$keywords = this.createKeywordMapper({
      "keyword.control": e,
      "storage.type": t,
      "storage.modifier": n,
      "keyword.operator": r,
      "variable.language": "this",
      "constant.language": s
    }, "identifier"),
        a = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*\\b",
        f = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,
        l = "%" + /(\d+\$)?/.source + /[#0\- +']*/.source + /[,;:_]?/.source + /((-?\d+)|\*(-?\d+\$)?)?/.source + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;
    this.$rules = {
      start: [{
        token: "comment",
        regex: "//$",
        next: "start"
      }, {
        token: "comment",
        regex: "//",
        next: "singleLineComment"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: "'(?:" + f + "|.)?'"
      }, {
        token: "string.start",
        regex: '"',
        stateName: "qqstring",
        next: [{
          token: "string",
          regex: /\\\s*$/,
          next: "qqstring"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          token: "constant.language.escape",
          regex: l
        }, {
          token: "string.end",
          regex: '"|$',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: 'R"\\(',
        stateName: "rawString",
        next: [{
          token: "string.end",
          regex: '\\)"',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "keyword",
        regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b",
        next: "directive"
      }, {
        token: "keyword",
        regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"
      }, {
        token: "support.function.C99.c",
        regex: o
      }, {
        token: u,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      singleLineComment: [{
        token: "comment",
        regex: /\\$/,
        next: "singleLineComment"
      }, {
        token: "comment",
        regex: /$/,
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      directive: [{
        token: "constant.other.multiline",
        regex: /\\/
      }, {
        token: "constant.other.multiline",
        regex: /.*\\/
      }, {
        token: "constant.other",
        regex: "\\s*<.+?>",
        next: "start"
      }, {
        token: "constant.other",
        regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',
        next: "start"
      }, {
        token: "constant.other",
        regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",
        next: "start"
      }, {
        token: "constant.other",
        regex: /[^\\\/]+/,
        next: "start"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(u, s), t.c_cppHighlightRules = u;
}), ace.define("ace/mode/objectivec_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/c_cpp_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./c_cpp_highlight_rules"),
      o = s.c_cppHighlightRules,
      u = function u() {
    var e = "\\\\(?:[abefnrtv'\"?\\\\]|[0-3]\\d{1,2}|[4-7]\\d?|222|x[a-zA-Z0-9]+)",
        t = [{
      regex: "\\b_cmd\\b",
      token: "variable.other.selector.objc"
    }, {
      regex: "\\b(?:self|super)\\b",
      token: "variable.language.objc"
    }],
        n = new o(),
        r = n.getRules();
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: ["storage.type.objc", "punctuation.definition.storage.type.objc", "entity.name.type.objc", "text", "entity.other.inherited-class.objc"],
        regex: "(@)(interface|protocol)(?!.+;)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*:\\s*)([A-Za-z]+)"
      }, {
        token: ["storage.type.objc"],
        regex: "(@end)"
      }, {
        token: ["storage.type.objc", "entity.name.type.objc", "entity.other.inherited-class.objc"],
        regex: "(@implementation)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*?::\\s*(?:[A-Za-z][A-Za-z0-9]*))?"
      }, {
        token: "string.begin.objc",
        regex: '@"',
        next: "constant_NSString"
      }, {
        token: "storage.type.objc",
        regex: "\\bid\\s*<",
        next: "protocol_list"
      }, {
        token: "keyword.control.macro.objc",
        regex: "\\bNS_DURING|NS_HANDLER|NS_ENDHANDLER\\b"
      }, {
        token: ["punctuation.definition.keyword.objc", "keyword.control.exception.objc"],
        regex: "(@)(try|catch|finally|throw)\\b"
      }, {
        token: ["punctuation.definition.keyword.objc", "keyword.other.objc"],
        regex: "(@)(defs|encode)\\b"
      }, {
        token: ["storage.type.id.objc", "text"],
        regex: "(\\bid\\b)(\\s|\\n)?"
      }, {
        token: "storage.type.objc",
        regex: "\\bIBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class\\b"
      }, {
        token: ["punctuation.definition.storage.type.objc", "storage.type.objc"],
        regex: "(@)(class|protocol)\\b"
      }, {
        token: ["punctuation.definition.storage.type.objc", "punctuation"],
        regex: "(@selector)(\\s*\\()",
        next: "selectors"
      }, {
        token: ["punctuation.definition.storage.modifier.objc", "storage.modifier.objc"],
        regex: "(@)(synchronized|public|private|protected|package)\\b"
      }, {
        token: "constant.language.objc",
        regex: "\\bYES|NO|Nil|nil\\b"
      }, {
        token: "support.variable.foundation",
        regex: "\\bNSApp\\b"
      }, {
        token: ["support.function.cocoa.leopard"],
        regex: "(?:\\b)(NS(?:Rect(?:ToCGRect|FromCGRect)|MakeCollectable|S(?:tringFromProtocol|ize(?:ToCGSize|FromCGSize))|Draw(?:NinePartImage|ThreePartImage)|P(?:oint(?:ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))(?:\\b)"
      }, {
        token: ["support.function.cocoa"],
        regex: "(?:\\b)(NS(?:R(?:ound(?:DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(?:CriticalAlertPanel(?:RelativeToWindow)?|InformationalAlertPanel(?:RelativeToWindow)?|AlertPanel(?:RelativeToWindow)?)|e(?:set(?:MapTable|HashTable)|c(?:ycleZone|t(?:Clip(?:List)?|F(?:ill(?:UsingOperation|List(?:UsingOperation|With(?:Grays|Colors(?:UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(?:dPixel|l(?:MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(?:SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(?:s)?|WindowServerMemory|AlertPanel)|M(?:i(?:n(?:X|Y)|d(?:X|Y))|ouseInRect|a(?:p(?:Remove|Get|Member|Insert(?:IfAbsent|KnownAbsent)?)|ke(?:R(?:ect|ange)|Size|Point)|x(?:Range|X|Y)))|B(?:itsPer(?:SampleFromDepth|PixelFromDepth)|e(?:stDepth|ep|gin(?:CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(?:ho(?:uldRetainWithZone|w(?:sServicesMenuItem|AnimationEffect))|tringFrom(?:R(?:ect|ange)|MapTable|S(?:ize|elector)|HashTable|Class|Point)|izeFromString|e(?:t(?:ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(?:Big(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|Short|Host(?:ShortTo(?:Big|Little)|IntTo(?:Big|Little)|DoubleTo(?:Big|Little)|FloatTo(?:Big|Little)|Long(?:To(?:Big|Little)|LongTo(?:Big|Little)))|Int|Double|Float|L(?:ittle(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|ong(?:Long)?)))|H(?:ighlightRect|o(?:stByteOrder|meDirectory(?:ForUser)?)|eight|ash(?:Remove|Get|Insert(?:IfAbsent|KnownAbsent)?)|FSType(?:CodeFromFileType|OfFile))|N(?:umberOfColorComponents|ext(?:MapEnumeratorPair|HashEnumeratorItem))|C(?:o(?:n(?:tainsRect|vert(?:GlyphsToPackedGlyphs|Swapped(?:DoubleToHost|FloatToHost)|Host(?:DoubleToSwapped|FloatToSwapped)))|unt(?:MapTable|HashTable|Frames|Windows(?:ForContext)?)|py(?:M(?:emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(?:MapTables|HashTables))|lassFromString|reate(?:MapTable(?:WithZone)?|HashTable(?:WithZone)?|Zone|File(?:namePboardType|ContentsPboardType)))|TemporaryDirectory|I(?:s(?:ControllerMarker|EmptyRect|FreedObject)|n(?:setRect|crementExtraRefCount|te(?:r(?:sect(?:sRect|ionR(?:ect|ange))|faceStyleForKey)|gralRect)))|Zone(?:Realloc|Malloc|Name|Calloc|Fr(?:omPointer|ee))|O(?:penStepRootDirectory|ffsetRect)|D(?:i(?:sableScreenUpdates|videRect)|ottedFrameRect|e(?:c(?:imal(?:Round|Multiply|S(?:tring|ubtract)|Normalize|Co(?:py|mpa(?:ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(?:MemoryPages|Object))|raw(?:Gr(?:oove|ayBezel)|B(?:itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(?:hiteBezel|indowBackground)|LightBezel))|U(?:serName|n(?:ionR(?:ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(?:Bundle(?:Setup|Cleanup)|Setup(?:VirtualMachine)?|Needs(?:ToLoadClasses|VirtualMachine)|ClassesF(?:orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(?:oint(?:InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(?:n(?:d(?:MapTableEnumeration|HashTableEnumeration)|umerate(?:MapTable|HashTable)|ableScreenUpdates)|qual(?:R(?:ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(?:ileTypeForHFSTypeCode|ullUserName|r(?:ee(?:MapTable|HashTable)|ame(?:Rect(?:WithWidth(?:UsingOperation)?)?|Address)))|Wi(?:ndowList(?:ForContext)?|dth)|Lo(?:cationInRange|g(?:v|PageSize)?)|A(?:ccessibility(?:R(?:oleDescription(?:ForUIElement)?|aiseBadArgumentException)|Unignored(?:Children(?:ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(?:Main|Load)|vailableWindowDepths|ll(?:MapTable(?:Values|Keys)|HashTableObjects|ocate(?:MemoryPages|Collectable|Object)))))(?:\\b)"
      }, {
        token: ["support.class.cocoa.leopard"],
        regex: "(?:\\b)(NS(?:RuleEditor|G(?:arbageCollector|radient)|MapTable|HashTable|Co(?:ndition|llectionView(?:Item)?)|T(?:oolbarItemGroup|extInputClient|r(?:eeNode|ackingArea))|InvocationOperation|Operation(?:Queue)?|D(?:ictionaryController|ockTile)|P(?:ointer(?:Functions|Array)|athC(?:o(?:ntrol(?:Delegate)?|mponentCell)|ell(?:Delegate)?)|r(?:intPanelAccessorizing|edicateEditor(?:RowTemplate)?))|ViewController|FastEnumeration|Animat(?:ionContext|ablePropertyContainer)))(?:\\b)"
      }, {
        token: ["support.class.cocoa"],
        regex: "(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)"
      }, {
        token: ["support.type.cocoa.leopard"],
        regex: "(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)"
      }, {
        token: ["support.class.quartz"],
        regex: "(?:\\b)(C(?:I(?:Sampler|Co(?:ntext|lor)|Image(?:Accumulator)?|PlugIn(?:Registration)?|Vector|Kernel|Filter(?:Generator|Shape)?)|A(?:Renderer|MediaTiming(?:Function)?|BasicAnimation|ScrollLayer|Constraint(?:LayoutManager)?|T(?:iledLayer|extLayer|rans(?:ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(?:nimation(?:Group)?|ction))))(?:\\b)"
      }, {
        token: ["support.type.quartz"],
        regex: "(?:\\b)(C(?:G(?:Float|Point|Size|Rect)|IFormat|AConstraintAttribute))(?:\\b)"
      }, {
        token: ["support.type.cocoa"],
        regex: "(?:\\b)(NS(?:R(?:ect(?:Edge)?|ange)|G(?:lyph(?:Relation|LayoutMode)?|radientType)|M(?:odalSession|a(?:trixMode|p(?:Table|Enumerator)))|B(?:itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(?:cr(?:oll(?:er(?:Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(?:Granularity|Direction|Affinity)|wapped(?:Double|Float)|aveOperationType)|Ha(?:sh(?:Table|Enumerator)|ndler(?:2)?)|C(?:o(?:ntrol(?:Size|Tint)|mp(?:ositingOperation|arisonResult))|ell(?:State|Type|ImagePosition|Attribute))|T(?:hreadPrivate|ypesetterGlyphInfo|i(?:ckMarkPosition|tlePosition|meInterval)|o(?:ol(?:TipTag|bar(?:SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(?:TabType|Alignment)|ab(?:State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(?:ContextAuxiliary|PixelFormatAuxiliary)|D(?:ocumentChangeType|atePickerElementFlags|ra(?:werState|gOperation))|UsableScrollerParts|P(?:oint|r(?:intingPageOrder|ogressIndicator(?:Style|Th(?:ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(?:nt(?:SymbolicTraits|TraitMask|Action)|cusRingType)|W(?:indow(?:OrderingMode|Depth)|orkspace(?:IconCreationOptions|LaunchOptions)|ritingDirection)|L(?:ineBreakMode|ayout(?:Status|Direction))|A(?:nimation(?:Progress|Effect)|ppl(?:ication(?:TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle)))(?:\\b)"
      }, {
        token: ["support.constant.cocoa"],
        regex: "(?:\\b)(NS(?:NotFound|Ordered(?:Ascending|Descending|Same)))(?:\\b)"
      }, {
        token: ["support.constant.notification.cocoa.leopard"],
        regex: "(?:\\b)(NS(?:MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification)(?:\\b)"
      }, {
        token: ["support.constant.notification.cocoa"],
        regex: "(?:\\b)(NS(?:Menu(?:Did(?:RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(?:ystemColorsDidChange|plitView(?:DidResizeSubviews|WillResizeSubviews))|C(?:o(?:nt(?:extHelpModeDid(?:Deactivate|Activate)|rolT(?:intDidChange|extDid(?:BeginEditing|Change|EndEditing)))|lor(?:PanelColorDidChange|ListDidChange)|mboBox(?:Selection(?:IsChanging|DidChange)|Will(?:Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(?:oolbar(?:DidRemoveItem|WillAddItem)|ext(?:Storage(?:DidProcessEditing|WillProcessEditing)|Did(?:BeginEditing|Change|EndEditing)|View(?:DidChange(?:Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)))|ImageRepRegistryDidChange|OutlineView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)|Item(?:Did(?:Collapse|Expand)|Will(?:Collapse|Expand)))|Drawer(?:Did(?:Close|Open)|Will(?:Close|Open))|PopUpButton(?:CellWillPopUp|WillPopUp)|View(?:GlobalFrameDidChange|BoundsDidChange|F(?:ocusDidChange|rameDidChange))|FontSetChanged|W(?:indow(?:Did(?:Resi(?:ze|gn(?:Main|Key))|M(?:iniaturize|ove)|Become(?:Main|Key)|ChangeScreen(?:|Profile)|Deminiaturize|Update|E(?:ndSheet|xpose))|Will(?:M(?:iniaturize|ove)|BeginSheet|Close))|orkspace(?:SessionDid(?:ResignActive|BecomeActive)|Did(?:Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(?:Sleep|Unmount|PowerOff|LaunchApplication)))|A(?:ntialiasThresholdChanged|ppl(?:ication(?:Did(?:ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(?:nhide|pdate)|FinishLaunching)|Will(?:ResignActive|BecomeActive|Hide|Terminate|U(?:nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification)(?:\\b)"
      }, {
        token: ["support.constant.cocoa.leopard"],
        regex: "(?:\\b)(NS(?:RuleEditor(?:RowType(?:Simple|Compound)|NestingMode(?:Si(?:ngle|mple)|Compound|List))|GradientDraws(?:BeforeStartingLocation|AfterEndingLocation)|M(?:inusSetExpressionType|a(?:chPortDeallocate(?:ReceiveRight|SendRight|None)|pTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(?:oxCustom|undleExecutableArchitecture(?:X86|I386|PPC(?:64)?)|etweenPredicateOperatorType|ackgroundStyle(?:Raised|Dark|L(?:ight|owered)))|S(?:tring(?:DrawingTruncatesLastVisibleLine|EncodingConversion(?:ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(?:e(?:ech(?:SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(?:GrammarFlag|SpellingFlag))|litViewDividerStyleThi(?:n|ck))|e(?:rvice(?:RequestTimedOutError|M(?:iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(?:inimum|aximum)|Application(?:NotFoundError|LaunchFailedError))|gmentStyle(?:Round(?:Rect|ed)|SmallSquare|Capsule|Textured(?:Rounded|Square)|Automatic)))|H(?:UDWindowMask|ashTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(?:oModeColorPanel|etServiceNoAutoRename)|C(?:hangeRedone|o(?:ntainsPredicateOperatorType|l(?:orRenderingIntent(?:RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(?:None|ContentArea|TrackableArea|EditableTextArea))|T(?:imeZoneNameStyle(?:S(?:hort(?:Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(?:Regular|SourceList)|racking(?:Mouse(?:Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(?:ssumeInside|ctive(?:In(?:KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(?:n(?:tersectSetExpressionType|dexedColorSpaceModel)|mageScale(?:None|Proportionally(?:Down|UpOrDown)|AxesIndependently))|Ope(?:nGLPFAAllowOfflineRenderers|rationQueue(?:DefaultMaxConcurrentOperationCount|Priority(?:High|Normal|Very(?:High|Low)|Low)))|D(?:iacriticInsensitiveSearch|ownloadsDirectory)|U(?:nionSetExpressionType|TF(?:16(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(?:ointerFunctions(?:Ma(?:chVirtualMemory|llocMemory)|Str(?:ongMemory|uctPersonality)|C(?:StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(?:paque(?:Memory|Personality)|bjectP(?:ointerPersonality|ersonality)))|at(?:hStyle(?:Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(?:Scaling|Copies|Orientation|P(?:a(?:perSize|ge(?:Range|SetupAccessory))|review)))|Executable(?:RuntimeMismatchError|NotLoadableError|ErrorM(?:inimum|aximum)|L(?:inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(?:Initial|Prior)|F(?:i(?:ndPanelSubstringMatchType(?:StartsWith|Contains|EndsWith|FullWord)|leRead(?:TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(?:ndow(?:BackingLocation(?:MainMemory|Default|VideoMemory)|Sharing(?:Read(?:Only|Write)|None)|CollectionBehavior(?:MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType))(?:\\b)"
      }, {
        token: ["support.constant.cocoa"],
        regex: "(?:\\b)(NS(?:R(?:GB(?:ModeColorPanel|ColorSpaceModel)|ight(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey)|ound(?:RectBezelStyle|Bankers|ed(?:BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(?:CapStyle|JoinStyle))|un(?:StoppedResponse|ContinuesResponse|AbortedResponse)|e(?:s(?:izableWindowMask|et(?:CursorRectsRunLoopOrdering|FunctionKey))|ce(?:ssedBezelStyle|iver(?:sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(?:evancyLevelIndicatorStyle|ative(?:Before|After))|gular(?:SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(?:n(?:domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(?:ModeMatrix|Button)))|G(?:IFFileType|lyph(?:Below|Inscribe(?:B(?:elow|ase)|Over(?:strike|Below)|Above)|Layout(?:WithPrevious|A(?:tAPoint|gainstAPoint))|A(?:ttribute(?:BidiLevel|Soft|Inscribe|Elastic)|bove))|r(?:ooveBorder|eaterThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|a(?:y(?:ModeColorPanel|ColorSpaceModel)|dient(?:None|Con(?:cave(?:Strong|Weak)|vex(?:Strong|Weak)))|phiteControlTint)))|XML(?:N(?:o(?:tationDeclarationKind|de(?:CompactEmptyElement|IsCDATA|OptionsNone|Use(?:SingleQuotes|DoubleQuotes)|Pre(?:serve(?:NamespaceOrder|C(?:haracterReferences|DATA)|DTD|Prefixes|E(?:ntities|mptyElements)|Quotes|Whitespace|A(?:ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(?:ocument(?:X(?:MLKind|HTMLKind|Include)|HTMLKind|T(?:idy(?:XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(?:arser(?:GTRequiredError|XMLDeclNot(?:StartedError|FinishedError)|Mi(?:splaced(?:XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(?:StartedError|FinishedError))|S(?:t(?:andaloneValueError|ringNot(?:StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(?:MTOKENRequiredError|o(?:t(?:ationNot(?:StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(?:haracterRef(?:In(?:DTDError|PrologError|EpilogError)|AtEOFError)|o(?:nditionalSectionNot(?:StartedError|FinishedError)|mment(?:NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(?:ternalError|valid(?:HexCharacterRefError|C(?:haracter(?:RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(?:NameError|Error)))|OutOfMemoryError|D(?:ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(?:RI(?:RequiredError|FragmentError)|n(?:declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(?:CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(?:MissingSemiError|NoNameError|In(?:Internal(?:SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(?:ocessingInstructionNot(?:StartedError|FinishedError)|ematureDocumentEndError))|E(?:n(?:codingNotSupportedError|tity(?:Ref(?:In(?:DTDError|PrologError|EpilogError)|erence(?:MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(?:StartedError|FinishedError)|Is(?:ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(?:StartedError|FinishedError)|xt(?:ernalS(?:tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(?:iteralNot(?:StartedError|FinishedError)|T(?:RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(?:RedefinedError|HasNoValueError|Not(?:StartedError|FinishedError)|ListNot(?:StartedError|FinishedError)))|rocessingInstructionKind)|E(?:ntity(?:GeneralKind|DeclarationKind|UnparsedKind|P(?:ar(?:sedKind|ameterKind)|redefined))|lement(?:Declaration(?:MixedKind|UndefinedKind|E(?:lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(?:N(?:MToken(?:sKind|Kind)|otationKind)|CDATAKind|ID(?:Ref(?:sKind|Kind)|Kind)|DeclarationKind|En(?:tit(?:yKind|iesKind)|umerationKind)|Kind))|M(?:i(?:n(?:XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(?:nthCalendarUnit|deSwitchFunctionKey|use(?:Moved(?:Mask)?|E(?:ntered(?:Mask)?|ventSubtype|xited(?:Mask)?))|veToBezierPathElement|mentary(?:ChangeButton|Push(?:Button|InButton)|Light(?:Button)?))|enuFunctionKey|a(?:c(?:intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(?:XEdge|YEdge))|ACHOperatingSystem)|B(?:MPFileType|o(?:ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(?:Se(?:condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(?:zelBorder|velLineJoinStyle|low(?:Bottom|Top)|gin(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(?:spaceCharacter|tabTextMovement|ingStore(?:Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(?:owser(?:NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(?:h(?:ift(?:JISStringEncoding|KeyMask)|ow(?:ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(?:s(?:ReqFunctionKey|tem(?:D(?:omainMask|efined(?:Mask)?)|FunctionKey))|mbolStringEncoding)|c(?:a(?:nnedOption|le(?:None|ToFit|Proportionally))|r(?:oll(?:er(?:NoPart|Increment(?:Page|Line|Arrow)|Decrement(?:Page|Line|Arrow)|Knob(?:Slot)?|Arrows(?:M(?:inEnd|axEnd)|None|DefaultSetting))|Wheel(?:Mask)?|LockFunctionKey)|eenChangedEventType))|t(?:opFunctionKey|r(?:ingDrawing(?:OneShot|DisableScreenFontSubstitution|Uses(?:DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(?:Status(?:Reading|NotOpen|Closed|Open(?:ing)?|Error|Writing|AtEnd)|Event(?:Has(?:BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(?:ndEncountered|rrorOccurred)))))|i(?:ngle(?:DateMode|UnderlineStyle)|ze(?:DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(?:condCalendarUnit|lect(?:By(?:Character|Paragraph|Word)|i(?:ng(?:Next|Previous)|onAffinity(?:Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(?:Momentary|Select(?:One|Any)))|quareLineCapStyle|witchButton|ave(?:ToOperation|Op(?:tions(?:Yes|No|Ask)|eration)|AsOperation)|mall(?:SquareBezelStyle|C(?:ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(?:ighlightModeMatrix|SBModeColorPanel|o(?:ur(?:Minute(?:SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(?:Never|OnlyFromMainDocumentDomain|Always)|e(?:lp(?:ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(?:MonthDa(?:yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(?:o(?:n(?:StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(?:ification(?:SuspensionBehavior(?:Hold|Coalesce|D(?:eliverImmediately|rop))|NoCoalescing|CoalescingOn(?:Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(?:cr(?:iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(?:itle|opLevelContainersSpecifierError|abs(?:BezelBorder|NoBorder|LineBorder))|I(?:nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(?:ll(?:Glyph|CellType)|m(?:eric(?:Search|PadKeyMask)|berFormatter(?:Round(?:Half(?:Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(?:10|Default)|S(?:cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(?:ercentStyle|ad(?:Before(?:Suffix|Prefix)|After(?:Suffix|Prefix))))))|e(?:t(?:Services(?:BadArgumentError|NotFoundError|C(?:ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(?:StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(?:t(?:iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(?:hange(?:ReadOtherContents|GrayCell(?:Mask)?|BackgroundCell(?:Mask)?|Cleared|Done|Undone|Autosaved)|MYK(?:ModeColorPanel|ColorSpaceModel)|ircular(?:BezelStyle|Slider)|o(?:n(?:stantValueExpressionType|t(?:inuousCapacityLevelIndicatorStyle|entsCellMask|ain(?:sComparison|erSpecifierError)|rol(?:Glyph|KeyMask))|densedFontMask)|lor(?:Panel(?:RGBModeMask|GrayModeMask|HSBModeMask|C(?:MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(?:p(?:osite(?:XOR|Source(?:In|O(?:ut|ver)|Atop)|Highlight|C(?:opy|lear)|Destination(?:In|O(?:ut|ver)|Atop)|Plus(?:Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(?:stom(?:SelectorPredicateOperatorType|PaletteModeColorPanel)|r(?:sor(?:Update(?:Mask)?|PointingDevice)|veToBezierPathElement))|e(?:nterT(?:extAlignment|abStopType)|ll(?:State|H(?:ighlighted|as(?:Image(?:Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(?:Bordered|InsetButton)|Disabled|Editable|LightsBy(?:Gray|Background|Contents)|AllowsMixedState))|l(?:ipPagination|o(?:s(?:ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(?:ControlTint|DisplayFunctionKey|LineFunctionKey))|a(?:seInsensitive(?:Search|PredicateOption)|n(?:notCreateScriptCommandError|cel(?:Button|TextMovement))|chesDirectory|lculation(?:NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(?:itical(?:Request|AlertStyle)|ayonModeColorPanel))|T(?:hick(?:SquareBezelStyle|erSquareBezelStyle)|ypesetter(?:Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(?:ineBreakAction|atestBehavior))|i(?:ckMark(?:Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(?:olbarItemVisibilityPriority(?:Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(?:Compression(?:N(?:one|EXT)|CCITTFAX(?:3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(?:rminate(?:Now|Cancel|Later)|xt(?:Read(?:InapplicableDocumentTypeError|WriteErrorM(?:inimum|aximum))|Block(?:M(?:i(?:nimum(?:Height|Width)|ddleAlignment)|a(?:rgin|ximum(?:Height|Width)))|B(?:o(?:ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(?:ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(?:Characters|Attributes)|CellType|ured(?:RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(?:FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(?:RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(?:Character|TextMovement|le(?:tP(?:oint(?:Mask|EventSubtype)?|roximity(?:Mask|EventSubtype)?)|Column(?:NoResizing|UserResizingMask|AutoresizingMask)|View(?:ReverseSequentialColumnAutoresizingStyle|GridNone|S(?:olid(?:HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(?:n(?:sert(?:CharFunctionKey|FunctionKey|LineFunctionKey)|t(?:Type|ernalS(?:criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(?:Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(?:2022JPStringEncoding|Latin(?:1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(?:R(?:ight|ep(?:MatchesDevice|LoadStatus(?:ReadingHeader|Completed|InvalidData|Un(?:expectedEOF|knownType)|WillNeedAllData)))|Below|C(?:ellType|ache(?:BySize|Never|Default|Always))|Interpolation(?:High|None|Default|Low)|O(?:nly|verlaps)|Frame(?:Gr(?:oove|ayBezel)|Button|None|Photo)|L(?:oadStatus(?:ReadError|C(?:ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(?:lign(?:Right|Bottom(?:Right|Left)?|Center|Top(?:Right|Left)?|Left)|bove)))|O(?:n(?:State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|TextMovement)|SF1OperatingSystem|pe(?:n(?:GL(?:GO(?:Re(?:setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(?:R(?:obust|endererID)|M(?:inimumPolicy|ulti(?:sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(?:creenMask|te(?:ncilSize|reo)|ingleRenderer|upersample|ample(?:s|Buffers|Alpha))|NoRecovery|C(?:o(?:lor(?:Size|Float)|mpliant)|losestPolicy)|OffScreen|D(?:oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(?:cc(?:umSize|elerated)|ux(?:Buffers|DepthStencil)|l(?:phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(?:criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(?:B(?:itfield|oolType)|S(?:hortType|tr(?:ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(?:Type|longType)|ArrayType))|D(?:i(?:s(?:c(?:losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(?:Selection|PredicateModifier))|o(?:c(?:ModalWindowMask|ument(?:Directory|ationDirectory))|ubleType|wn(?:TextMovement|ArrowFunctionKey))|e(?:s(?:cendingPageOrder|ktopDirectory)|cimalTabStopType|v(?:ice(?:NColorSpaceModel|IndependentModifierFlagsMask)|eloper(?:Directory|ApplicationDirectory))|fault(?:ControlTint|TokenStyle)|lete(?:Char(?:acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(?:yCalendarUnit|teFormatter(?:MediumStyle|Behavior(?:10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(?:wer(?:Clos(?:ingState|edState)|Open(?:ingState|State))|gOperation(?:Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(?:ser(?:CancelledError|D(?:irectory|omainMask)|FunctionKey)|RL(?:Handle(?:NotLoaded|Load(?:Succeeded|InProgress|Failed))|CredentialPersistence(?:None|Permanent|ForSession))|n(?:scaledWindowMask|cachedRead|i(?:codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(?:o(?:CloseGroupingRunLoopOrdering|FunctionKey)|e(?:finedDateComponent|rline(?:Style(?:Single|None|Thick|Double)|Pattern(?:Solid|D(?:ot|ash(?:Dot(?:Dot)?)?)))))|known(?:ColorSpaceModel|P(?:ointingDevice|ageOrder)|KeyS(?:criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(?:dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(?:ustifiedTextAlignment|PEG(?:2000FileType|FileType)|apaneseEUC(?:GlyphPacking|StringEncoding))|P(?:o(?:s(?:t(?:Now|erFontMask|WhenIdle|ASAP)|iti(?:on(?:Replace|Be(?:fore|ginning)|End|After)|ve(?:IntType|DoubleType|FloatType)))|pUp(?:NoArrow|ArrowAt(?:Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(?:InCell(?:Mask)?|OnPushOffButton)|e(?:n(?:TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(?:Mask)?)|P(?:S(?:caleField|tatus(?:Title|Field)|aveButton)|N(?:ote(?:Title|Field)|ame(?:Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(?:a(?:perFeedButton|ge(?:Range(?:To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(?:useFunctionKey|ragraphSeparatorCharacter|ge(?:DownFunctionKey|UpFunctionKey))|r(?:int(?:ing(?:ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(?:NotFound|OK|Error)|FunctionKey)|o(?:p(?:ertyList(?:XMLFormat|MutableContainers(?:AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(?:BarStyle|SpinningStyle|Preferred(?:SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(?:ssedTab|vFunctionKey))|L(?:HeightForm|CancelButton|TitleField|ImageButton|O(?:KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(?:n(?:terCharacter|d(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|v(?:e(?:nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(?:Comparison|PredicateOperatorType)|ra(?:serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(?:clude(?:10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(?:i(?:ew(?:M(?:in(?:XMargin|YMargin)|ax(?:XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(?:lidationErrorM(?:inimum|aximum)|riableExpressionType))|Key(?:SpecifierEvaluationScriptError|Down(?:Mask)?|Up(?:Mask)?|PathExpressionType|Value(?:MinusSetMutation|SetSetMutation|Change(?:Re(?:placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(?:New|Old)|UnionSetMutation|ValidationError))|QTMovie(?:NormalPlayback|Looping(?:BackAndForthPlayback|Playback))|F(?:1(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(?:nd(?:PanelAction(?:Replace(?:A(?:ndFind|ll(?:InSelection)?))?|S(?:howFindPanel|e(?:tFindString|lectAll(?:InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(?:Read(?:No(?:SuchFileError|PermissionError)|CorruptFileError|In(?:validFileNameError|applicableStringEncodingError)|Un(?:supportedSchemeError|knownError))|HandlingPanel(?:CancelButton|OKButton)|NoSuchFileError|ErrorM(?:inimum|aximum)|Write(?:NoPermissionError|In(?:validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(?:supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(?:nt(?:Mo(?:noSpaceTrait|dernSerifsClass)|BoldTrait|S(?:ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(?:o(?:ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(?:ntegerAdvancementsRenderingMode|talicTrait)|O(?:ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(?:nknownClass|IOptimizedTrait)|Panel(?:S(?:hadowEffectModeMask|t(?:andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(?:ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(?:amilyClassMask|reeformSerifsClass)|Antialiased(?:RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(?:Below|Type(?:None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(?:attingError(?:M(?:inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(?:ExpressionType|KeyMask)|3(?:1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(?:RevertButton|S(?:ize(?:Title|Field)|etButton)|CurrentField|Preview(?:Button|Field))|l(?:oat(?:ingPointSamplesBitmapFormat|Type)|agsChanged(?:Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(?:heelModeColorPanel|indow(?:s(?:NTOperatingSystem|CP125(?:1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(?:InterfaceStyle|OperatingSystem))|M(?:iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(?:NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(?:ctivation|ddingToRecents)|A(?:sync|nd(?:Hide(?:Others)?|Print)|llowingClassicStartup))|eek(?:day(?:CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(?:ntsBidiLevels|rningAlertStyle)|r(?:itingDirection(?:RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(?:i(?:stModeMatrix|ne(?:Moves(?:Right|Down|Up|Left)|B(?:order|reakBy(?:C(?:harWrapping|lipping)|Truncating(?:Middle|Head|Tail)|WordWrapping))|S(?:eparatorCharacter|weep(?:Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(?:ssThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey))|a(?:yout(?:RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(?:sc(?:iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(?:y(?:Type|PredicateModifier|EventMask)|choredSearch|imation(?:Blocking|Nonblocking(?:Threaded)?|E(?:ffect(?:DisappearingItemDefault|Poof)|ase(?:In(?:Out)?|Out))|Linear)|dPredicateType)|t(?:Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(?:obe(?:GB1CharacterCollection|CNS1CharacterCollection|Japan(?:1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(?:saveOperation|Pagination)|pp(?:lication(?:SupportDirectory|D(?:irectory|e(?:fined(?:Mask)?|legateReply(?:Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(?:Mask)?)|l(?:ternateKeyMask|pha(?:ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(?:SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(?:ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(?:sWrongScriptError|EvaluationScriptError)|bove(?:Bottom|Top)|WTEventType)))(?:\\b)"
      }, {
        token: "support.function.C99.c",
        regex: s.cFunctions
      }, {
        token: n.getKeywords(),
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "punctuation.section.scope.begin.objc",
        regex: "\\[",
        next: "bracketed_content"
      }, {
        token: "meta.function.objc",
        regex: "^(?:-|\\+)\\s*"
      }],
      constant_NSString: [{
        token: "constant.character.escape.objc",
        regex: e
      }, {
        token: "invalid.illegal.unknown-escape.objc",
        regex: "\\\\."
      }, {
        token: "string",
        regex: '[^"\\\\]+'
      }, {
        token: "punctuation.definition.string.end",
        regex: '"',
        next: "start"
      }],
      protocol_list: [{
        token: "punctuation.section.scope.end.objc",
        regex: ">",
        next: "start"
      }, {
        token: "support.other.protocol.objc",
        regex: "\bNS(?:GlyphStorage|M(?:utableCopying|enuItem)|C(?:hangeSpelling|o(?:ding|pying|lorPicking(?:Custom|Default)))|T(?:oolbarItemValidations|ext(?:Input|AttachmentCell))|I(?:nputServ(?:iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(?:CTypeSerializationCallBack|ect)|D(?:ecimalNumberBehaviors|raggingInfo)|U(?:serInterfaceValidations|RL(?:HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(?:ToobarItem|UserInterfaceItem)|Locking)\b"
      }],
      selectors: [{
        token: "support.function.any-method.name-of-parameter.objc",
        regex: "\\b(?:[a-zA-Z_:][\\w]*)+"
      }, {
        token: "punctuation",
        regex: "\\)",
        next: "start"
      }],
      bracketed_content: [{
        token: "punctuation.section.scope.end.objc",
        regex: "]",
        next: "start"
      }, {
        token: ["support.function.any-method.objc"],
        regex: "(?:predicateWithFormat:| NSPredicate predicateWithFormat:)",
        next: "start"
      }, {
        token: "support.function.any-method.objc",
        regex: "\\w+(?::|(?=]))",
        next: "start"
      }],
      bracketed_strings: [{
        token: "punctuation.section.scope.end.objc",
        regex: "]",
        next: "start"
      }, {
        token: "keyword.operator.logical.predicate.cocoa",
        regex: "\\b(?:AND|OR|NOT|IN)\\b"
      }, {
        token: ["invalid.illegal.unknown-method.objc", "punctuation.separator.arguments.objc"],
        regex: "\\b(\\w+)(:)"
      }, {
        regex: "\\b(?:ALL|ANY|SOME|NONE)\\b",
        token: "constant.language.predicate.cocoa"
      }, {
        regex: "\\b(?:NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b",
        token: "constant.language.predicate.cocoa"
      }, {
        regex: "\\b(?:MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b",
        token: "keyword.operator.comparison.predicate.cocoa"
      }, {
        regex: "\\bC(?:ASEINSENSITIVE|I)\\b",
        token: "keyword.other.modifier.predicate.cocoa"
      }, {
        regex: "\\b(?:ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b",
        token: "keyword.other.predicate.cocoa"
      }, {
        regex: e,
        token: "constant.character.escape.objc"
      }, {
        regex: "\\\\.",
        token: "invalid.illegal.unknown-escape.objc"
      }, {
        token: "string",
        regex: '[^"\\\\]'
      }, {
        token: "punctuation.definition.string.end.objc",
        regex: '"',
        next: "predicates"
      }],
      comment: [{
        token: "comment",
        regex: ".*?\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      methods: [{
        token: "meta.function.objc",
        regex: "(?=\\{|#)|;",
        next: "start"
      }]
    };

    for (var u in r) {
      this.$rules[u] ? this.$rules[u].push && this.$rules[u].push.apply(this.$rules[u], r[u]) : this.$rules[u] = r[u];
    }

    this.$rules.bracketed_content = this.$rules.bracketed_content.concat(this.$rules.start, t), this.embedRules(i, "doc-", [i.getEndRule("start")]);
  };

  r.inherits(u, o), t.ObjectiveCHighlightRules = u;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/objectivec", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/objectivec_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./objectivec_highlight_rules").ObjectiveCHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/objectivec";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/objectivec"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-ocaml.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-ocaml.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/ocaml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|or|private|rec|sig|struct|then|to|try|type|val|virtual|when|while|with",
        t = "true|false",
        n = "abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|add_available_units|add_big_int|add_buffer|add_channel|add_char|add_initializer|add_int_big_int|add_interfaces|add_num|add_string|add_substitute|add_substring|alarm|allocated_bytes|allow_only|allow_unsafe_modules|always|append|appname_get|appname_set|approx_num_exp|approx_num_fix|arg|argv|arith_status|array|array1_of_genarray|array2_of_genarray|array3_of_genarray|asin|asr|assoc|assq|at_exit|atan|atan2|auto_synchronize|background|basename|beginning_of_input|big_int_of_int|big_int_of_num|big_int_of_string|bind|bind_class|bind_tag|bits|bits_of_float|black|blit|blit_image|blue|bool|bool_of_string|bounded_full_split|bounded_split|bounded_split_delim|bprintf|break|broadcast|bscanf|button_down|c_layout|capitalize|cardinal|cardinal|catch|catch_break|ceil|ceiling_num|channel|char|char_of_int|chdir|check|check_suffix|chmod|choose|chop_extension|chop_suffix|chown|chown|chr|chroot|classify_float|clear|clear_available_units|clear_close_on_exec|clear_graph|clear_nonblock|clear_parser|close|close|closeTk|close_box|close_graph|close_in|close_in_noerr|close_out|close_out_noerr|close_process|close_process|close_process_full|close_process_in|close_process_out|close_subwindow|close_tag|close_tbox|closedir|closedir|closure_tag|code|combine|combine|combine|command|compact|compare|compare_big_int|compare_num|complex32|complex64|concat|conj|connect|contains|contains_from|contents|copy|cos|cosh|count|count|counters|create|create_alarm|create_image|create_matrix|create_matrix|create_matrix|create_object|create_object_and_run_initializers|create_object_opt|create_process|create_process|create_process_env|create_process_env|create_table|current|current_dir_name|current_point|current_x|current_y|curveto|custom_tag|cyan|data_size|decr|decr_num|default_available_units|delay|delete_alarm|descr_of_in_channel|descr_of_out_channel|destroy|diff|dim|dim1|dim2|dim3|dims|dirname|display_mode|div|div_big_int|div_num|double_array_tag|double_tag|draw_arc|draw_char|draw_circle|draw_ellipse|draw_image|draw_poly|draw_poly_line|draw_rect|draw_segments|draw_string|dummy_pos|dummy_table|dump_image|dup|dup2|elements|empty|end_of_input|environment|eprintf|epsilon_float|eq_big_int|eq_num|equal|err_formatter|error_message|escaped|establish_server|executable_name|execv|execve|execvp|execvpe|exists|exists2|exit|exp|failwith|fast_sort|fchmod|fchown|field|file|file_exists|fill|fill_arc|fill_circle|fill_ellipse|fill_poly|fill_rect|filter|final_tag|finalise|find|find_all|first_chars|firstkey|flatten|float|float32|float64|float_of_big_int|float_of_bits|float_of_int|float_of_num|float_of_string|floor|floor_num|flush|flush_all|flush_input|flush_str_formatter|fold|fold_left|fold_left2|fold_right|fold_right2|for_all|for_all2|force|force_newline|force_val|foreground|fork|format_of_string|formatter_of_buffer|formatter_of_out_channel|fortran_layout|forward_tag|fprintf|frexp|from|from_channel|from_file|from_file_bin|from_function|from_string|fscanf|fst|fstat|ftruncate|full_init|full_major|full_split|gcd_big_int|ge_big_int|ge_num|genarray_of_array1|genarray_of_array2|genarray_of_array3|get|get_all_formatter_output_functions|get_approx_printing|get_copy|get_ellipsis_text|get_error_when_null_denominator|get_floating_precision|get_formatter_output_functions|get_formatter_tag_functions|get_image|get_margin|get_mark_tags|get_max_boxes|get_max_indent|get_method|get_method_label|get_normalize_ratio|get_normalize_ratio_when_printing|get_print_tags|get_state|get_variable|getcwd|getegid|getegid|getenv|getenv|getenv|geteuid|geteuid|getgid|getgid|getgrgid|getgrgid|getgrnam|getgrnam|getgroups|gethostbyaddr|gethostbyname|gethostname|getitimer|getlogin|getpeername|getpid|getppid|getprotobyname|getprotobynumber|getpwnam|getpwuid|getservbyname|getservbyport|getsockname|getsockopt|getsockopt_float|getsockopt_int|getsockopt_optint|gettimeofday|getuid|global_replace|global_substitute|gmtime|green|grid|group_beginning|group_end|gt_big_int|gt_num|guard|handle_unix_error|hash|hash_param|hd|header_size|i|id|ignore|in_channel_length|in_channel_of_descr|incr|incr_num|index|index_from|inet_addr_any|inet_addr_of_string|infinity|infix_tag|init|init_class|input|input_binary_int|input_byte|input_char|input_line|input_value|int|int16_signed|int16_unsigned|int32|int64|int8_signed|int8_unsigned|int_of_big_int|int_of_char|int_of_float|int_of_num|int_of_string|integer_num|inter|interactive|inv|invalid_arg|is_block|is_empty|is_implicit|is_int|is_int_big_int|is_integer_num|is_relative|iter|iter2|iteri|join|junk|key_pressed|kill|kind|kprintf|kscanf|land|last_chars|layout|lazy_from_fun|lazy_from_val|lazy_is_val|lazy_tag|ldexp|le_big_int|le_num|length|lexeme|lexeme_char|lexeme_end|lexeme_end_p|lexeme_start|lexeme_start_p|lineto|link|list|listen|lnot|loadfile|loadfile_private|localtime|lock|lockf|log|log10|logand|lognot|logor|logxor|lor|lower_window|lowercase|lseek|lsl|lsr|lstat|lt_big_int|lt_num|lxor|magenta|magic|mainLoop|major|major_slice|make|make_formatter|make_image|make_lexer|make_matrix|make_self_init|map|map2|map_file|mapi|marshal|match_beginning|match_end|matched_group|matched_string|max|max_array_length|max_big_int|max_elt|max_float|max_int|max_num|max_string_length|mem|mem_assoc|mem_assq|memq|merge|min|min_big_int|min_elt|min_float|min_int|min_num|minor|minus_big_int|minus_num|minus_one|mkdir|mkfifo|mktime|mod|mod_big_int|mod_float|mod_num|modf|mouse_pos|moveto|mul|mult_big_int|mult_int_big_int|mult_num|nan|narrow|nat_of_num|nativeint|neg|neg_infinity|new_block|new_channel|new_method|new_variable|next|nextkey|nice|nice|no_scan_tag|norm|norm2|not|npeek|nth|nth_dim|num_digits_big_int|num_dims|num_of_big_int|num_of_int|num_of_nat|num_of_ratio|num_of_string|O|obj|object_tag|ocaml_version|of_array|of_channel|of_float|of_int|of_int32|of_list|of_nativeint|of_string|one|openTk|open_box|open_connection|open_graph|open_hbox|open_hovbox|open_hvbox|open_in|open_in_bin|open_in_gen|open_out|open_out_bin|open_out_gen|open_process|open_process_full|open_process_in|open_process_out|open_subwindow|open_tag|open_tbox|open_temp_file|open_vbox|opendbm|opendir|openfile|or|os_type|out_channel_length|out_channel_of_descr|output|output_binary_int|output_buffer|output_byte|output_char|output_string|output_value|over_max_boxes|pack|params|parent_dir_name|parse|parse_argv|partition|pause|peek|pipe|pixels|place|plot|plots|point_color|polar|poll|pop|pos_in|pos_out|pow|power_big_int_positive_big_int|power_big_int_positive_int|power_int_positive_big_int|power_int_positive_int|power_num|pp_close_box|pp_close_tag|pp_close_tbox|pp_force_newline|pp_get_all_formatter_output_functions|pp_get_ellipsis_text|pp_get_formatter_output_functions|pp_get_formatter_tag_functions|pp_get_margin|pp_get_mark_tags|pp_get_max_boxes|pp_get_max_indent|pp_get_print_tags|pp_open_box|pp_open_hbox|pp_open_hovbox|pp_open_hvbox|pp_open_tag|pp_open_tbox|pp_open_vbox|pp_over_max_boxes|pp_print_as|pp_print_bool|pp_print_break|pp_print_char|pp_print_cut|pp_print_float|pp_print_flush|pp_print_if_newline|pp_print_int|pp_print_newline|pp_print_space|pp_print_string|pp_print_tab|pp_print_tbreak|pp_set_all_formatter_output_functions|pp_set_ellipsis_text|pp_set_formatter_out_channel|pp_set_formatter_output_functions|pp_set_formatter_tag_functions|pp_set_margin|pp_set_mark_tags|pp_set_max_boxes|pp_set_max_indent|pp_set_print_tags|pp_set_tab|pp_set_tags|pred|pred_big_int|pred_num|prerr_char|prerr_endline|prerr_float|prerr_int|prerr_newline|prerr_string|print|print_as|print_bool|print_break|print_char|print_cut|print_endline|print_float|print_flush|print_if_newline|print_int|print_newline|print_space|print_stat|print_string|print_tab|print_tbreak|printf|prohibit|public_method_label|push|putenv|quo_num|quomod_big_int|quote|raise|raise_window|ratio_of_num|rcontains_from|read|read_float|read_int|read_key|read_line|readdir|readdir|readlink|really_input|receive|recv|recvfrom|red|ref|regexp|regexp_case_fold|regexp_string|regexp_string_case_fold|register|register_exception|rem|remember_mode|remove|remove_assoc|remove_assq|rename|replace|replace_first|replace_matched|repr|reset|reshape|reshape_1|reshape_2|reshape_3|rev|rev_append|rev_map|rev_map2|rewinddir|rgb|rhs_end|rhs_end_pos|rhs_start|rhs_start_pos|rindex|rindex_from|rlineto|rmdir|rmoveto|round_num|run_initializers|run_initializers_opt|scanf|search_backward|search_forward|seek_in|seek_out|select|self|self_init|send|sendto|set|set_all_formatter_output_functions|set_approx_printing|set_binary_mode_in|set_binary_mode_out|set_close_on_exec|set_close_on_exec|set_color|set_ellipsis_text|set_error_when_null_denominator|set_field|set_floating_precision|set_font|set_formatter_out_channel|set_formatter_output_functions|set_formatter_tag_functions|set_line_width|set_margin|set_mark_tags|set_max_boxes|set_max_indent|set_method|set_nonblock|set_nonblock|set_normalize_ratio|set_normalize_ratio_when_printing|set_print_tags|set_signal|set_state|set_tab|set_tag|set_tags|set_text_size|set_window_title|setgid|setgid|setitimer|setitimer|setsid|setsid|setsockopt|setsockopt|setsockopt_float|setsockopt_float|setsockopt_int|setsockopt_int|setsockopt_optint|setsockopt_optint|setuid|setuid|shift_left|shift_left|shift_left|shift_right|shift_right|shift_right|shift_right_logical|shift_right_logical|shift_right_logical|show_buckets|shutdown|shutdown|shutdown_connection|shutdown_connection|sigabrt|sigalrm|sigchld|sigcont|sigfpe|sighup|sigill|sigint|sigkill|sign_big_int|sign_num|signal|signal|sigpending|sigpending|sigpipe|sigprocmask|sigprocmask|sigprof|sigquit|sigsegv|sigstop|sigsuspend|sigsuspend|sigterm|sigtstp|sigttin|sigttou|sigusr1|sigusr2|sigvtalrm|sin|singleton|sinh|size|size|size_x|size_y|sleep|sleep|sleep|slice_left|slice_left|slice_left_1|slice_left_2|slice_right|slice_right|slice_right_1|slice_right_2|snd|socket|socket|socket|socketpair|socketpair|sort|sound|split|split_delim|sprintf|sprintf|sqrt|sqrt|sqrt_big_int|square_big_int|square_num|sscanf|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|stat|stat|stat|stat|stat|stats|stats|std_formatter|stdbuf|stderr|stderr|stderr|stdib|stdin|stdin|stdin|stdout|stdout|stdout|str_formatter|string|string_after|string_before|string_match|string_of_big_int|string_of_bool|string_of_float|string_of_format|string_of_inet_addr|string_of_inet_addr|string_of_int|string_of_num|string_partial_match|string_tag|sub|sub|sub_big_int|sub_left|sub_num|sub_right|subset|subset|substitute_first|substring|succ|succ|succ|succ|succ_big_int|succ_num|symbol_end|symbol_end_pos|symbol_start|symbol_start_pos|symlink|symlink|sync|synchronize|system|system|system|tag|take|tan|tanh|tcdrain|tcdrain|tcflow|tcflow|tcflush|tcflush|tcgetattr|tcgetattr|tcsendbreak|tcsendbreak|tcsetattr|tcsetattr|temp_file|text_size|time|time|time|timed_read|timed_write|times|times|tl|tl|tl|to_buffer|to_channel|to_float|to_hex|to_int|to_int32|to_list|to_list|to_list|to_nativeint|to_string|to_string|to_string|to_string|to_string|top|top|total_size|transfer|transp|truncate|truncate|truncate|truncate|truncate|truncate|try_lock|umask|umask|uncapitalize|uncapitalize|uncapitalize|union|union|unit_big_int|unlink|unlink|unlock|unmarshal|unsafe_blit|unsafe_fill|unsafe_get|unsafe_get|unsafe_set|unsafe_set|update|uppercase|uppercase|uppercase|uppercase|usage|utimes|utimes|wait|wait|wait|wait|wait_next_event|wait_pid|wait_read|wait_signal|wait_timed_read|wait_timed_write|wait_write|waitpid|white|widen|window_id|word_size|wrap|wrap_abort|write|yellow|yield|zero|zero_big_int|Arg|Arith_status|Array|Array1|Array2|Array3|ArrayLabels|Big_int|Bigarray|Buffer|Callback|CamlinternalOO|Char|Complex|Condition|Dbm|Digest|Dynlink|Event|Filename|Format|Gc|Genarray|Genlex|Graphics|GraphicsX11|Hashtbl|Int32|Int64|LargeFile|Lazy|Lexing|List|ListLabels|Make|Map|Marshal|MoreLabels|Mutex|Nativeint|Num|Obj|Oo|Parsing|Pervasives|Printexc|Printf|Queue|Random|Scanf|Scanning|Set|Sort|Stack|State|StdLabels|Str|Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak",
        r = this.createKeywordMapper({
      "variable.language": "this",
      keyword: e,
      "constant.language": t,
      "support.function": n
    }, "identifier"),
        i = "(?:(?:[1-9]\\d*)|(?:0))",
        s = "(?:0[oO]?[0-7]+)",
        o = "(?:0[xX][\\dA-Fa-f]+)",
        u = "(?:0[bB][01]+)",
        a = "(?:" + i + "|" + s + "|" + o + "|" + u + ")",
        f = "(?:[eE][+-]?\\d+)",
        l = "(?:\\.\\d+)",
        c = "(?:\\d+)",
        h = "(?:(?:" + c + "?" + l + ")|(?:" + c + "\\.))",
        p = "(?:(?:" + h + "|" + c + ")" + f + ")",
        d = "(?:" + p + "|" + h + ")";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\(\\*.*?\\*\\)\\s*?$"
      }, {
        token: "comment",
        regex: "\\(\\*.*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "'.'"
      }, {
        token: "string",
        regex: '"',
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: "(?:" + d + "|\\d+)[jJ]\\b"
      }, {
        token: "constant.numeric",
        regex: d
      }, {
        token: "constant.numeric",
        regex: a + "\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|="
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\)",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qstring: [{
        token: "string",
        regex: '"',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }]
    };
  };

  r.inherits(s, i), t.OcamlHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/ocaml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/ocaml_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./ocaml_highlight_rules").OcamlHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = function a() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour, this.$outdent = new o();
  };

  r.inherits(a, i);
  var f = /(?:[({[=:]|[-=]>|\b(?:else|try|with))\s*$/;
  (function () {
    this.toggleCommentLines = function (e, t, n, r) {
      var i,
          s,
          o = !0,
          a = /^\s*\(\*(.*)\*\)/;

      for (i = n; i <= r; i++) {
        if (!a.test(t.getLine(i))) {
          o = !1;
          break;
        }
      }

      var f = new u(0, 0, 0, 0);

      for (i = n; i <= r; i++) {
        s = t.getLine(i), f.start.row = i, f.end.row = i, f.end.column = s.length, t.replace(f, o ? s.match(a)[1] : "(*" + s + "*)");
      }
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      return (!i.length || i[i.length - 1].type !== "comment") && e === "start" && f.test(t) && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/ocaml";
  }).call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/ocaml"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-pascal.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-pascal.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/pascal_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = this.createKeywordMapper({
      "keyword.control": "absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor"
    }, "identifier", !0);
    this.$rules = {
      start: [{
        caseInsensitive: !0,
        token: ["variable", "text", "storage.type.prototype", "entity.name.function.prototype"],
        regex: "\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))"
      }, {
        caseInsensitive: !0,
        token: ["variable", "text", "storage.type.function", "entity.name.function"],
        regex: "\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?"
      }, {
        caseInsensitive: !0,
        token: e,
        regex: /\b[a-z_]+\b/
      }, {
        token: "constant.numeric",
        regex: "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "punctuation.definition.comment",
        regex: "--.*$"
      }, {
        token: "punctuation.definition.comment",
        regex: "//.*$"
      }, {
        token: "punctuation.definition.comment",
        regex: "\\(\\*",
        push: [{
          token: "punctuation.definition.comment",
          regex: "\\*\\)",
          next: "pop"
        }, {
          defaultToken: "comment.block.one"
        }]
      }, {
        token: "punctuation.definition.comment",
        regex: "\\{",
        push: [{
          token: "punctuation.definition.comment",
          regex: "\\}",
          next: "pop"
        }, {
          defaultToken: "comment.block.two"
        }]
      }, {
        token: "punctuation.definition.string.begin",
        regex: '"',
        push: [{
          token: "constant.character.escape",
          regex: "\\\\."
        }, {
          token: "punctuation.definition.string.end",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.quoted.double"
        }]
      }, {
        token: "punctuation.definition.string.begin",
        regex: "'",
        push: [{
          token: "constant.character.escape.apostrophe",
          regex: "''"
        }, {
          token: "punctuation.definition.string.end",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.quoted.single"
        }]
      }, {
        token: "keyword.operator",
        regex: "[+\\-;,/*%]|:=|="
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.PascalHighlightRules = s;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/pascal", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/pascal_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./pascal_highlight_rules").PascalHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = ["--", "//"], this.blockComment = [{
      start: "(*",
      end: "*)"
    }, {
      start: "{",
      end: "}"
    }], this.$id = "ace/mode/pascal";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/pascal"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-perl.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-perl.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/perl_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars",
        t = "ARGV|ENV|INC|SIG",
        n = "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|getpeername|setpriority|getprotoent|setprotoent|getpriority|endprotoent|getservent|setservent|endservent|sethostent|socketpair|getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|map|die|uc|lc|do",
        r = this.createKeywordMapper({
      keyword: e,
      "constant.language": t,
      "support.function": n
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment.doc",
        regex: "^=(?:begin|item)\\b",
        next: "block_comment"
      }, {
        token: "string.regexp",
        regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: '["].*\\\\$',
        next: "qqstring"
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "string",
        regex: "['].*\\\\$",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: "0x[0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"
      }, {
        token: "comment",
        regex: "#.*$"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      qqstring: [{
        token: "string",
        regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      qstring: [{
        token: "string",
        regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      block_comment: [{
        token: "comment.doc",
        regex: "^=cut\\b",
        next: "start"
      }, {
        defaultToken: "comment.doc"
      }]
    };
  };

  r.inherits(s, i), t.PerlHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/perl", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/perl_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./perl_highlight_rules").PerlHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./folding/cstyle").FoldMode,
      a = function a() {
    this.HighlightRules = s, this.$outdent = new o(), this.foldingRules = new u({
      start: "^=(begin|item)\\b",
      end: "^=(cut)\\b"
    }), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = "#", this.blockComment = [{
      start: "=begin",
      end: "=cut",
      lineStartOnly: !0
    }, {
      start: "=item",
      end: "=cut",
      lineStartOnly: !0
    }], this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[:]\s*$/);
        o && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/perl", this.snippetFileId = "ace/snippets/perl";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/perl"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-perl6.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-perl6.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/perl6_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "my|our|class|role|grammar|is|does|sub|method|submethod|try|default|when|if|elsif|else|unless|with|orwith|without|for|given|proceed|succeed|loop|while|until|repeat|module|use|need|import|require|unit|constant|enum|multi|return|has|token|rule|make|made|proto|state|augment|but|anon|supersede|let|subset|gather|returns|return-rw|temp|BEGIN|CHECK|INIT|END|CLOSE|ENTER|LEAVE|KEEP|UNDO|PRE|POST|FIRST|NEXT|LAST|CATCH|CONTROL|QUIT|DOC",
        t = "Any|Array|Associative|AST|atomicint|Attribute|Backtrace|Backtrace::Frame|Bag|Baggy|BagHash|Blob|Block|Bool|Buf|Callable|CallFrame|Cancellation|Capture|Channel|Code|compiler|Complex|ComplexStr|Cool|CurrentThreadScheduler|Cursor|Date|Dateish|DateTime|Distro|Duration|Encoding|Exception|Failure|FatRat|Grammar|Hash|HyperWhatever|Instant|Int|IntStr|IO|IO::ArgFiles|IO::CatHandle|IO::Handle|IO::Notification|IO::Path|IO::Path::Cygwin|IO::Path::QNX|IO::Path::Unix|IO::Path::Win32|IO::Pipe|IO::Socket|IO::Socket::Async|IO::Socket::INET|IO::Spec|IO::Spec::Cygwin|IO::Spec::QNX|IO::Spec::Unix|IO::Spec::Win32|IO::Special|Iterable|Iterator|Junction|Kernel|Label|List|Lock|Lock::Async|Macro|Map|Match|Metamodel::AttributeContainer|Metamodel::C3MRO|Metamodel::ClassHOW|Metamodel::EnumHOW|Metamodel::Finalization|Metamodel::MethodContainer|Metamodel::MROBasedMethodDispatch|Metamodel::MultipleInheritance|Metamodel::Naming|Metamodel::Primitives|Metamodel::PrivateMethodContainer|Metamodel::RoleContainer|Metamodel::Trusting|Method|Mix|MixHash|Mixy|Mu|NFC|NFD|NFKC|NFKD|Nil|Num|Numeric|NumStr|ObjAt|Order|Pair|Parameter|Perl|Pod::Block|Pod::Block::Code|Pod::Block::Comment|Pod::Block::Declarator|Pod::Block::Named|Pod::Block::Para|Pod::Block::Table|Pod::Heading|Pod::Item|Positional|PositionalBindFailover|Proc|Proc::Async|Promise|Proxy|PseudoStash|QuantHash|Range|Rat|Rational|RatStr|Real|Regex|Routine|Scalar|Scheduler|Semaphore|Seq|Set|SetHash|Setty|Signature|Slip|Stash|Str|StrDistance|Stringy|Sub|Submethod|Supplier|Supplier::Preserving|Supply|Systemic|Tap|Telemetry|Telemetry::Instrument::Thread|Telemetry::Instrument::Usage|Telemetry::Period|Telemetry::Sampler|Thread|ThreadPoolScheduler|UInt|Uni|utf8|Variable|Version|VM|Whatever|WhateverCode|WrapHandle|int|uint|num|str|int8|int16|int32|int64|uint8|uint16|uint32|uint64|long|longlong|num32|num64|size_t|bool|CArray|Pointer|Backtrace|Backtrace::Frame|Exception|Failure|X::AdHoc|X::Anon::Augment|X::Anon::Multi|X::Assignment::RO|X::Attribute::NoPackage|X::Attribute::Package|X::Attribute::Undeclared|X::Augment::NoSuchType|X::Bind|X::Bind::NativeType|X::Bind::Slice|X::Caller::NotDynamic|X::Channel::ReceiveOnClosed|X::Channel::SendOnClosed|X::Comp|X::Composition::NotComposable|X::Constructor::Positional|X::ControlFlow|X::ControlFlow::Return|X::DateTime::TimezoneClash|X::Declaration::Scope|X::Declaration::Scope::Multi|X::Does::TypeObject|X::Eval::NoSuchLang|X::Export::NameClash|X::IO|X::IO::Chdir|X::IO::Chmod|X::IO::Copy|X::IO::Cwd|X::IO::Dir|X::IO::DoesNotExist|X::IO::Link|X::IO::Mkdir|X::IO::Move|X::IO::Rename|X::IO::Rmdir|X::IO::Symlink|X::IO::Unlink|X::Inheritance::NotComposed|X::Inheritance::Unsupported|X::Method::InvalidQualifier|X::Method::NotFound|X::Method::Private::Permission|X::Method::Private::Unqualified|X::Mixin::NotComposable|X::NYI|X::NoDispatcher|X::Numeric::Real|X::OS|X::Obsolete|X::OutOfRange|X::Package::Stubbed|X::Parameter::Default|X::Parameter::MultipleTypeConstraints|X::Parameter::Placeholder|X::Parameter::Twigil|X::Parameter::WrongOrder|X::Phaser::Multiple|X::Phaser::PrePost|X::Placeholder::Block|X::Placeholder::Mainline|X::Pod|X::Proc::Async|X::Proc::Async::AlreadyStarted|X::Proc::Async::CharsOrBytes|X::Proc::Async::MustBeStarted|X::Proc::Async::OpenForWriting|X::Proc::Async::TapBeforeSpawn|X::Proc::Unsuccessful|X::Promise::CauseOnlyValidOnBroken|X::Promise::Vowed|X::Redeclaration|X::Role::Initialization|X::Seq::Consumed|X::Sequence::Deduction|X::Signature::NameClash|X::Signature::Placeholder|X::Str::Numeric|X::StubCode|X::Syntax|X::Syntax::Augment::WithoutMonkeyTyping|X::Syntax::Comment::Embedded|X::Syntax::Confused|X::Syntax::InfixInTermPosition|X::Syntax::Malformed|X::Syntax::Missing|X::Syntax::NegatedPair|X::Syntax::NoSelf|X::Syntax::Number::RadixOutOfRange|X::Syntax::P5|X::Syntax::Regex::Adverb|X::Syntax::Regex::SolitaryQuantifier|X::Syntax::Reserved|X::Syntax::Self::WithoutObject|X::Syntax::Signature::InvocantMarker|X::Syntax::Term::MissingInitializer|X::Syntax::UnlessElse|X::Syntax::Variable::Match|X::Syntax::Variable::Numeric|X::Syntax::Variable::Twigil|X::Temporal|X::Temporal::InvalidFormat|X::TypeCheck|X::TypeCheck::Assignment|X::TypeCheck::Binding|X::TypeCheck::Return|X::TypeCheck::Splice|X::Undeclared",
        n = "abs|abs2rel|absolute|accept|ACCEPTS|accessed|acos|acosec|acosech|acosh|acotan|acotanh|acquire|act|action|actions|add|add_attribute|add_enum_value|add_fallback|add_method|add_parent|add_private_method|add_role|add_trustee|adverb|after|all|allocate|allof|allowed|alternative-names|annotations|antipair|antipairs|any|anyof|app_lifetime|append|arch|archname|args|arity|asec|asech|asin|asinh|ASSIGN-KEY|ASSIGN-POS|assuming|ast|at|atan|atan2|atanh|AT-KEY|atomic-assign|atomic-dec-fetch|atomic-fetch|atomic-fetch-add|atomic-fetch-dec|atomic-fetch-inc|atomic-fetch-sub|atomic-inc-fetch|AT-POS|attributes|auth|await|backtrace|Bag|BagHash|base|basename|base-repeating|batch|BIND-KEY|BIND-POS|bind-stderr|bind-stdin|bind-stdout|bind-udp|bits|bless|block|bool-only|bounds|break|Bridge|broken|BUILD|build-date|bytes|cache|callframe|calling-package|CALL-ME|callsame|callwith|can|cancel|candidates|cando|canonpath|caps|caption|Capture|cas|catdir|categorize|categorize-list|catfile|catpath|cause|ceiling|cglobal|changed|Channel|chars|chdir|child|child-name|child-typename|chmod|chomp|chop|chr|chrs|chunks|cis|classify|classify-list|cleanup|clone|close|closed|close-stdin|code|codes|collate|column|comb|combinations|command|comment|compiler|Complex|compose|compose_type|composer|condition|config|configure_destroy|configure_type_checking|conj|connect|constraints|construct|contains|contents|copy|cos|cosec|cosech|cosh|cotan|cotanh|count|count-only|cpu-cores|cpu-usage|CREATE|create_type|cross|cue|curdir|curupdir|d|Date|DateTime|day|daycount|day-of-month|day-of-week|day-of-year|days-in-month|declaration|decode|decoder|deepmap|defined|DEFINITE|delayed|DELETE-KEY|DELETE-POS|denominator|desc|DESTROY|destroyers|devnull|did-you-mean|die|dir|dirname|dir-sep|DISTROnames|do|done|duckmap|dynamic|e|eager|earlier|elems|emit|enclosing|encode|encoder|encoding|end|ends-with|enum_from_value|enum_value_list|enum_values|enums|eof|EVAL|EVALFILE|exception|excludes-max|excludes-min|EXISTS-KEY|EXISTS-POS|exit|exitcode|exp|expected|explicitly-manage|expmod|extension|f|fail|fc|feature|file|filename|find_method|find_method_qualified|finish|first|flat|flatmap|flip|floor|flush|fmt|format|formatter|freeze|from|from-list|from-loop|from-posix|full|full-barrier|get|get_value|getc|gist|got|grab|grabpairs|grep|handle|handled|handles|hardware|has_accessor|head|headers|hh-mm-ss|hidden|hides|hour|how|hyper|id|illegal|im|in|indent|index|indices|indir|infinite|infix|install_method_cache|Instant|instead|int-bounds|interval|in-timezone|invalid-str|invert|invocant|IO|IO::Notification.watch-path|is_trusted|is_type|isa|is-absolute|is-hidden|is-initial-thread|is-int|is-lazy|is-leap-year|isNaN|is-prime|is-relative|is-routine|is-setting|is-win|item|iterator|join|keep|kept|KERNELnames|key|keyof|keys|kill|kv|kxxv|l|lang|last|lastcall|later|lazy|lc|leading|level|line|lines|link|listen|live|local|lock|log|log10|lookup|lsb|MAIN|match|max|maxpairs|merge|message|method_table|methods|migrate|min|minmax|minpairs|minute|misplaced|Mix|MixHash|mkdir|mode|modified|month|move|mro|msb|multiness|name|named|named_names|narrow|nativecast|native-descriptor|nativesizeof|new|new_type|new-from-daycount|new-from-pairs|next|nextcallee|next-handle|nextsame|nextwith|NFC|NFD|NFKC|NFKD|nl-in|nl-out|nodemap|none|norm|not|note|now|nude|numerator|Numeric|of|offset|offset-in-hours|offset-in-minutes|old|on-close|one|on-switch|open|opened|operation|optional|ord|ords|orig|os-error|osname|out-buffer|pack|package|package-kind|package-name|packages|pair|pairs|pairup|parameter|params|parent|parent-name|parents|parse|parse-base|parsefile|parse-names|parts|path|path-sep|payload|peer-host|peer-port|periods|perl|permutations|phaser|pick|pickpairs|pid|placeholder|plus|polar|poll|polymod|pop|pos|positional|posix|postfix|postmatch|precomp-ext|precomp-target|pred|prefix|prematch|prepend|print|printf|print-nl|print-to|private|private_method_table|proc|produce|Promise|prompt|protect|pull-one|push|push-all|push-at-least|push-exactly|push-until-lazy|put|qualifier-type|quit|r|race|radix|rand|range|raw|re|read|readchars|readonly|ready|Real|reallocate|reals|reason|rebless|receive|recv|redispatcher|redo|reduce|rel2abs|relative|release|rename|repeated|replacement|report|reserved|resolve|restore|result|resume|rethrow|reverse|right|rindex|rmdir|roles_to_compose|rolish|roll|rootdir|roots|rotate|rotor|round|roundrobin|routine-type|run|rwx|s|samecase|samemark|samewith|say|schedule-on|scheduler|scope|sec|sech|second|seek|self|send|Set|set_hidden|set_name|set_package|set_rw|set_value|SetHash|set-instruments|setup_finalization|shape|share|shell|shift|sibling|sigil|sign|signal|signals|signature|sin|sinh|sink|sink-all|skip|skip-at-least|skip-at-least-pull-one|skip-one|sleep|sleep-timer|sleep-until|Slip|slurp|slurp-rest|slurpy|snap|snapper|so|socket-host|socket-port|sort|source|source-package|spawn|SPEC|splice|split|splitdir|splitpath|sprintf|spurt|sqrt|squish|srand|stable|start|started|starts-with|status|stderr|stdout|sub_signature|subbuf|subbuf-rw|subname|subparse|subst|subst-mutate|substr|substr-eq|substr-rw|succ|sum|Supply|symlink|t|tail|take|take-rw|tan|tanh|tap|target|target-name|tc|tclc|tell|then|throttle|throw|timezone|tmpdir|to|today|toggle|to-posix|total|trailing|trans|tree|trim|trim-leading|trim-trailing|truncate|truncated-to|trusts|try_acquire|trying|twigil|type|type_captures|typename|uc|udp|uncaught_handler|unimatch|uniname|uninames|uniparse|uniprop|uniprops|unique|unival|univals|unlink|unlock|unpack|unpolar|unshift|unwrap|updir|USAGE|utc|val|value|values|VAR|variable|verbose-config|version|VMnames|volume|vow|w|wait|warn|watch|watch-path|week|weekday-of-month|week-number|week-year|WHAT|WHERE|WHEREFORE|WHICH|WHO|whole-second|WHY|wordcase|words|workaround|wrap|write|write-to|yada|year|yield|yyyy-mm-dd|z|zip|zip-latest|plan|done-testing|bail-out|todo|skip|skip-rest|diag|subtest|pass|flunk|ok|nok|cmp-ok|is-deeply|isnt|is-approx|like|unlike|use-ok|isa-ok|does-ok|can-ok|dies-ok|lives-ok|eval-dies-ok|eval-lives-ok|throws-like|fails-like|rw|required|native|repr|export|symbol",
        r = "pi|Inf|tau|time",
        i = "eq|ne|gt|lt|le|ge|div|gcd|lcm|leg|cmp|ff|fff|x|before|after|Z|X|and|or|andthen|notandthen|orelse|xor",
        s = this.createKeywordMapper({
      keyword: e,
      "storage.type": t,
      "constant.language": r,
      "support.function": n,
      "keyword.operator": i
    }, "identifier"),
        o = "[a-zA-Z_][a-zA-Z_0-9:-]*\\b",
        u = {
      token: "constant.numeric",
      regex: "0x[0-9a-fA-F]+\\b"
    },
        a = {
      token: "constant.numeric",
      regex: "[+-.]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
    },
        f = {
      token: "constant.numeric",
      regex: "(?:\\d+_?\\d+)+\\b"
    },
        l = {
      token: "constant.numeric",
      regex: "\\+?\\d+i\\b"
    },
        c = {
      token: "constant.language.boolean",
      regex: "(?:True|False)\\b"
    },
        h = {
      token: "constant.other",
      regex: "v[0-9](?:\\.[a-zA-Z0-9*])*\\b"
    },
        p = {
      token: s,
      regex: "[a-zA-Z][\\:a-zA-Z0-9_-]*\\b"
    },
        d = {
      token: "variable.language",
      regex: "[$@%&][?*!.]?[a-zA-Z0-9_-]+\\b"
    },
        v = {
      token: "variable.language",
      regex: "\\$[/|!]?|@\\$/"
    },
        m = {
      token: "keyword.operator",
      regex: "=|<|>|\\+|\\*|-|/|~|%|\\?|!|\\^|\\.|\\:|\\,|\xBB|\xAB|\\||\\&|\u269B|\u2218"
    },
        g = {
      token: "constant.language",
      regex: "\uD835\uDC52|\u03C0|\u03C4|\u221E"
    },
        y = {
      token: "string.quoted.single",
      regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
    },
        b = {
      token: "string.quoted.single",
      regex: "[<](?:[a-zA-Z0-9 ])*[>]"
    },
        w = {
      token: "string.regexp",
      regex: "[m|rx]?[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
    };
    this.$rules = {
      start: [{
        token: "comment.block",
        regex: "#[`|=]\\(.*\\)"
      }, {
        token: "comment.block",
        regex: "#[`|=]\\[.*\\]"
      }, {
        token: "comment.doc",
        regex: "^=(?:begin)\\b",
        next: "block_comment"
      }, {
        token: "string.unquoted",
        regex: "q[x|w]?\\:to/END/;",
        next: "qheredoc"
      }, {
        token: "string.unquoted",
        regex: "qq[x|w]?\\:to/END/;",
        next: "qqheredoc"
      }, w, y, {
        token: "string.quoted.double",
        regex: '"',
        next: "qqstring"
      }, b, {
        token: ["keyword", "text", "variable.module"],
        regex: "(use)(\\s+)((?:" + o + "\\.?)*)"
      }, u, a, f, l, c, h, p, d, v, m, g, {
        token: "comment",
        regex: "#.*$"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: '\\\\(?:[nrtef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'
      }, d, v, {
        token: "lparen",
        regex: "{",
        next: "qqinterpolation"
      }, {
        token: "string.quoted.double",
        regex: '"',
        next: "start"
      }, {
        defaultToken: "string.quoted.double"
      }],
      qqinterpolation: [u, a, f, l, c, h, p, d, v, m, g, y, w, {
        token: "rparen",
        regex: "}",
        next: "qqstring"
      }],
      block_comment: [{
        token: "comment.doc",
        regex: "^=end +[a-zA-Z_0-9]*",
        next: "start"
      }, {
        defaultToken: "comment.doc"
      }],
      qheredoc: [{
        token: "string.unquoted",
        regex: "END$",
        next: "start"
      }, {
        defaultToken: "string.unquoted"
      }],
      qqheredoc: [d, v, {
        token: "lparen",
        regex: "{",
        next: "qqheredocinterpolation"
      }, {
        token: "string.unquoted",
        regex: "END$",
        next: "start"
      }, {
        defaultToken: "string.unquoted"
      }],
      qqheredocinterpolation: [u, a, f, l, c, h, p, d, v, m, g, y, w, {
        token: "rparen",
        regex: "}",
        next: "qqheredoc"
      }]
    };
  };

  r.inherits(s, i), t.Perl6HighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/perl6", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/perl6_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./perl6_highlight_rules").Perl6HighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./folding/cstyle").FoldMode,
      a = function a() {
    this.HighlightRules = s, this.$outdent = new o(), this.foldingRules = new u({
      start: "^=(begin)\\b",
      end: "^=(end)\\b"
    }), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = "#", this.blockComment = [{
      start: "=begin",
      end: "=end",
      lineStartOnly: !0
    }, {
      start: "=item",
      end: "=end",
      lineStartOnly: !0
    }], this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[:]\s*$/);
        o && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/perl6";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/perl6"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-pgsql.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-pgsql.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/perl_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars",
        t = "ARGV|ENV|INC|SIG",
        n = "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|getpeername|setpriority|getprotoent|setprotoent|getpriority|endprotoent|getservent|setservent|endservent|sethostent|socketpair|getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|map|die|uc|lc|do",
        r = this.createKeywordMapper({
      keyword: e,
      "constant.language": t,
      "support.function": n
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment.doc",
        regex: "^=(?:begin|item)\\b",
        next: "block_comment"
      }, {
        token: "string.regexp",
        regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: '["].*\\\\$',
        next: "qqstring"
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "string",
        regex: "['].*\\\\$",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: "0x[0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"
      }, {
        token: "comment",
        regex: "#.*$"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      qqstring: [{
        token: "string",
        regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      qstring: [{
        token: "string",
        regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      block_comment: [{
        token: "comment.doc",
        regex: "^=cut\\b",
        next: "start"
      }, {
        defaultToken: "comment.doc"
      }]
    };
  };

  r.inherits(s, i), t.PerlHighlightRules = s;
}), ace.define("ace/mode/python_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal",
        t = "True|False|None|NotImplemented|Ellipsis|__debug__",
        n = "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes",
        r = this.createKeywordMapper({
      "invalid.deprecated": "debugger",
      "support.function": n,
      "variable.language": "self|cls",
      "constant.language": t,
      keyword: e
    }, "identifier"),
        i = "[uU]?",
        s = "[rR]",
        o = "[fF]",
        u = "(?:[rR][fF]|[fF][rR])",
        a = "(?:(?:[1-9]\\d*)|(?:0))",
        f = "(?:0[oO]?[0-7]+)",
        l = "(?:0[xX][\\dA-Fa-f]+)",
        c = "(?:0[bB][01]+)",
        h = "(?:" + a + "|" + f + "|" + l + "|" + c + ")",
        p = "(?:[eE][+-]?\\d+)",
        d = "(?:\\.\\d+)",
        v = "(?:\\d+)",
        m = "(?:(?:" + v + "?" + d + ")|(?:" + v + "\\.))",
        g = "(?:(?:" + m + "|" + v + ")" + p + ")",
        y = "(?:" + g + "|" + m + ")",
        b = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "string",
        regex: i + '"{3}',
        next: "qqstring3"
      }, {
        token: "string",
        regex: i + '"(?=.)',
        next: "qqstring"
      }, {
        token: "string",
        regex: i + "'{3}",
        next: "qstring3"
      }, {
        token: "string",
        regex: i + "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: s + '"{3}',
        next: "rawqqstring3"
      }, {
        token: "string",
        regex: s + '"(?=.)',
        next: "rawqqstring"
      }, {
        token: "string",
        regex: s + "'{3}",
        next: "rawqstring3"
      }, {
        token: "string",
        regex: s + "'(?=.)",
        next: "rawqstring"
      }, {
        token: "string",
        regex: o + '"{3}',
        next: "fqqstring3"
      }, {
        token: "string",
        regex: o + '"(?=.)',
        next: "fqqstring"
      }, {
        token: "string",
        regex: o + "'{3}",
        next: "fqstring3"
      }, {
        token: "string",
        regex: o + "'(?=.)",
        next: "fqstring"
      }, {
        token: "string",
        regex: u + '"{3}',
        next: "rfqqstring3"
      }, {
        token: "string",
        regex: u + '"(?=.)',
        next: "rfqqstring"
      }, {
        token: "string",
        regex: u + "'{3}",
        next: "rfqstring3"
      }, {
        token: "string",
        regex: u + "'(?=.)",
        next: "rfqstring"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "punctuation",
        regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        include: "constants"
      }],
      qqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqqstring3: [{
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqstring3: [{
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rawqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rawqstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      fqqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "fqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqqstring3: [{
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqstring3: [{
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rfqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqstring: [{
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstringParRules: [{
        token: "paren.lparen",
        regex: "[\\[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)]"
      }, {
        token: "string",
        regex: "\\s+"
      }, {
        token: "string",
        regex: "'[^']*'"
      }, {
        token: "string",
        regex: '"[^"]*"'
      }, {
        token: "function.support",
        regex: "(!s|!r|!a)"
      }, {
        include: "constants"
      }, {
        token: "paren.rparen",
        regex: "}",
        next: "pop"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }],
      constants: [{
        token: "constant.numeric",
        regex: "(?:" + y + "|\\d+)[jJ]\\b"
      }, {
        token: "constant.numeric",
        regex: y
      }, {
        token: "constant.numeric",
        regex: h + "[lL]\\b"
      }, {
        token: "constant.numeric",
        regex: h + "\\b"
      }, {
        token: ["punctuation", "function.support"],
        regex: "(\\.)([a-zA-Z_]+)\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.PythonHighlightRules = s;
}), ace.define("ace/mode/json_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "variable",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'
      }, {
        token: "string",
        regex: '"',
        next: "string"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: "text",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment.start",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      string: [{
        token: "constant.language.escape",
        regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      comment: [{
        token: "comment.end",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    };
  };

  r.inherits(s, i), t.JsonHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/pgsql_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules", "ace/mode/perl_highlight_rules", "ace/mode/python_highlight_rules", "ace/mode/json_highlight_rules", "ace/mode/javascript_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = e("./perl_highlight_rules").PerlHighlightRules,
      a = e("./python_highlight_rules").PythonHighlightRules,
      f = e("./json_highlight_rules").JsonHighlightRules,
      l = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      c = function c() {
    var e = "abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|create|cross|cstring|csv|current|current_catalog|current_date|current_role|current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone",
        t = "RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|current_query|current_schema|current_schemas|current_setting|current_user|currtid|currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|has_function_privilege|has_language_privilege|has_schema_privilege|has_sequence_privilege|has_server_privilege|has_table_privilege|has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|json_object_field|json_object_field_text|json_object_keys|json_out|json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|pg_available_extension_versions|pg_available_extensions|pg_backend_pid|pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|pg_get_function_arguments|pg_get_function_identity_arguments|pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|pg_stat_get_bgwriter_buf_written_checkpoints|pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|pg_stat_get_function_calls|pg_stat_get_function_self_time|pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|range_after|range_before|range_cmp|range_contained_by|range_contains|range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists",
        n = this.createKeywordMapper({
      "support.function": t,
      keyword: e
    }, "identifier", !0),
        r = [{
      token: "string",
      regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
    }, {
      token: "variable.language",
      regex: '".*?"'
    }, {
      token: "constant.numeric",
      regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
    }, {
      token: n,
      regex: "[a-zA-Z_][a-zA-Z0-9_$]*\\b"
    }, {
      token: "keyword.operator",
      regex: "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|~=|~>=~|~>~|~~|~~\\*"
    }, {
      token: "paren.lparen",
      regex: "[\\(]"
    }, {
      token: "paren.rparen",
      regex: "[\\)]"
    }, {
      token: "text",
      regex: "\\s+"
    }];
    this.$rules = {
      start: [{
        token: "comment",
        regex: "--.*$"
      }, s.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "keyword.statementBegin",
        regex: "[a-zA-Z]+",
        next: "statement"
      }, {
        token: "support.buildin",
        regex: "^\\\\[\\S]+.*$"
      }],
      statement: [{
        token: "comment",
        regex: "--.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "commentStatement"
      }, {
        token: "statementEnd",
        regex: ";",
        next: "start"
      }, {
        token: "string",
        regex: "\\$perl\\$",
        next: "perl-start"
      }, {
        token: "string",
        regex: "\\$python\\$",
        next: "python-start"
      }, {
        token: "string",
        regex: "\\$json\\$",
        next: "json-start"
      }, {
        token: "string",
        regex: "\\$(js|javascript)\\$",
        next: "javascript-start"
      }, {
        token: "string",
        regex: "\\$[\\w_0-9]*\\$$",
        next: "dollarSql"
      }, {
        token: "string",
        regex: "\\$[\\w_0-9]*\\$",
        next: "dollarStatementString"
      }].concat(r),
      dollarSql: [{
        token: "comment",
        regex: "--.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "commentDollarSql"
      }, {
        token: "string",
        regex: "^\\$[\\w_0-9]*\\$",
        next: "statement"
      }, {
        token: "string",
        regex: "\\$[\\w_0-9]*\\$",
        next: "dollarSqlString"
      }].concat(r),
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      commentStatement: [{
        token: "comment",
        regex: "\\*\\/",
        next: "statement"
      }, {
        defaultToken: "comment"
      }],
      commentDollarSql: [{
        token: "comment",
        regex: "\\*\\/",
        next: "dollarSql"
      }, {
        defaultToken: "comment"
      }],
      dollarStatementString: [{
        token: "string",
        regex: ".*?\\$[\\w_0-9]*\\$",
        next: "statement"
      }, {
        token: "string",
        regex: ".+"
      }],
      dollarSqlString: [{
        token: "string",
        regex: ".*?\\$[\\w_0-9]*\\$",
        next: "dollarSql"
      }, {
        token: "string",
        regex: ".+"
      }]
    }, this.embedRules(s, "doc-", [s.getEndRule("start")]), this.embedRules(u, "perl-", [{
      token: "string",
      regex: "\\$perl\\$",
      next: "statement"
    }]), this.embedRules(a, "python-", [{
      token: "string",
      regex: "\\$python\\$",
      next: "statement"
    }]), this.embedRules(f, "json-", [{
      token: "string",
      regex: "\\$json\\$",
      next: "statement"
    }]), this.embedRules(l, "javascript-", [{
      token: "string",
      regex: "\\$(js|javascript)\\$",
      next: "statement"
    }]);
  };

  r.inherits(c, o), t.PgsqlHighlightRules = c;
}), ace.define("ace/mode/pgsql", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/pgsql_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("../mode/text").Mode,
      s = e("./pgsql_highlight_rules").PgsqlHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = "--", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      return e == "start" || e == "keyword.statementEnd" ? "" : this.$getIndent(t);
    }, this.$id = "ace/mode/pgsql";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/pgsql"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-php.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-php.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/php_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = e("./html_highlight_rules").HtmlHighlightRules,
      a = function a() {
    var e = s,
        t = i.arrayToMap("abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type".split("|")),
        n = i.arrayToMap("abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|final|finally|for|foreach|function|global|goto|if|implements|instanceof|insteadof|interface|namespace|new|or|private|protected|public|static|switch|throw|trait|try|use|var|while|xor|yield".split("|")),
        r = i.arrayToMap("__halt_compiler|die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset".split("|")),
        o = i.arrayToMap("true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__|__TRAIT__".split("|")),
        u = i.arrayToMap("$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|$http_response_header|$argc|$argv".split("|")),
        a = i.arrayToMap("key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregisterset_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|sql_regcase".split("|")),
        f = i.arrayToMap("cfunction|old_function".split("|")),
        l = i.arrayToMap([]);
    this.$rules = {
      start: [{
        token: "comment",
        regex: /(?:#|\/\/)(?:[^?]|\?[^>])*/
      }, e.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"
      }, {
        token: "string",
        regex: '"',
        next: "qqstring"
      }, {
        token: "string",
        regex: "'",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language",
        regex: "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\\b"
      }, {
        token: ["keyword", "text", "support.class"],
        regex: "\\b(new)(\\s+)(\\w+)"
      }, {
        token: ["support.class", "keyword.operator"],
        regex: "\\b(\\w+)(::)"
      }, {
        token: "constant.language",
        regex: "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b"
      }, {
        token: function token(e) {
          return n.hasOwnProperty(e) ? "keyword" : o.hasOwnProperty(e) ? "constant.language" : u.hasOwnProperty(e) ? "variable.language" : l.hasOwnProperty(e) ? "invalid.illegal" : t.hasOwnProperty(e) ? "support.function" : e == "debugger" ? "invalid.deprecated" : e.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/) ? "variable" : "identifier";
        },
        regex: /[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/
      }, {
        onMatch: function onMatch(e, t, n) {
          e = e.substr(3);
          if (e[0] == "'" || e[0] == '"') e = e.slice(1, -1);
          return n.unshift(this.next, e), "markup.list";
        },
        regex: /<<<(?:\w+|'\w+'|"\w+")$/,
        next: "heredoc"
      }, {
        token: "keyword.operator",
        regex: "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|\\.=|=|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "punctuation.operator",
        regex: /[,;]/
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      heredoc: [{
        onMatch: function onMatch(e, t, n) {
          return n[1] != e ? "string" : (n.shift(), n.shift(), "markup.list");
        },
        regex: "^\\w+(?=;?$)",
        next: "start"
      }, {
        token: "string",
        regex: ".*"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'
      }, {
        token: "variable",
        regex: /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/
      }, {
        token: "variable",
        regex: /\$\{[^"\}]+\}?/
      }, {
        token: "string",
        regex: '"',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: /\\['\\]/
      }, {
        token: "string",
        regex: "'",
        next: "start"
      }, {
        defaultToken: "string"
      }]
    }, this.embedRules(s, "doc-", [s.getEndRule("start")]);
  };

  r.inherits(a, o);

  var f = function f() {
    u.call(this);
    var e = [{
      token: "support.php_tag",
      regex: "<\\?(?:php|=)?",
      push: "php-start"
    }],
        t = [{
      token: "support.php_tag",
      regex: "\\?>",
      next: "pop"
    }];

    for (var n in this.$rules) {
      this.$rules[n].unshift.apply(this.$rules[n], e);
    }

    this.embedRules(a, "php-", t, ["start"]), this.normalizeRules();
  };

  r.inherits(f, u), t.PhpHighlightRules = f, t.PhpLangHighlightRules = a;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/php_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  function s(e, t) {
    return e.type.lastIndexOf(t) > -1;
  }

  var r = {
    abs: ["int abs(int number)", "Return the absolute value of the number"],
    acos: ["float acos(float number)", "Return the arc cosine of the number in radians"],
    acosh: ["float acosh(float number)", "Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number"],
    addGlob: ["bool addGlob(string pattern[,int flags [, array options]])", "Add files matching the glob pattern. See php's glob for the pattern syntax."],
    addPattern: ["bool addPattern(string pattern[, string path [, array options]])", "Add files matching the pcre pattern. See php's pcre for the pattern syntax."],
    addcslashes: ["string addcslashes(string str, string charlist)", "Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)"],
    addslashes: ["string addslashes(string str)", "Escapes single quote, double quotes and backslash characters in a string with backslashes"],
    apache_child_terminate: ["bool apache_child_terminate(void)", "Terminate apache process after this request"],
    apache_get_modules: ["array apache_get_modules(void)", "Get a list of loaded Apache modules"],
    apache_get_version: ["string apache_get_version(void)", "Fetch Apache version"],
    apache_getenv: ["bool apache_getenv(string variable [, bool walk_to_top])", "Get an Apache subprocess_env variable"],
    apache_lookup_uri: ["object apache_lookup_uri(string URI)", "Perform a partial request of the given URI to obtain information about it"],
    apache_note: ["string apache_note(string note_name [, string note_value])", "Get and set Apache request notes"],
    apache_request_auth_name: ["string apache_request_auth_name()", ""],
    apache_request_auth_type: ["string apache_request_auth_type()", ""],
    apache_request_discard_request_body: ["long apache_request_discard_request_body()", ""],
    apache_request_err_headers_out: ["array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])", "* fetch all headers that go out in case of an error or a subrequest"],
    apache_request_headers: ["array apache_request_headers(void)", "Fetch all HTTP request headers"],
    apache_request_headers_in: ["array apache_request_headers_in()", "* fetch all incoming request headers"],
    apache_request_headers_out: ["array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])", "* fetch all outgoing request headers"],
    apache_request_is_initial_req: ["bool apache_request_is_initial_req()", ""],
    apache_request_log_error: ["boolean apache_request_log_error(string message, [long facility])", ""],
    apache_request_meets_conditions: ["long apache_request_meets_conditions()", ""],
    apache_request_remote_host: ["int apache_request_remote_host([int type])", ""],
    apache_request_run: ["long apache_request_run()", "This is a wrapper for ap_sub_run_req and ap_destory_sub_req.  It takes      sub_request, runs it, destroys it, and returns it's status."],
    apache_request_satisfies: ["long apache_request_satisfies()", ""],
    apache_request_server_port: ["int apache_request_server_port()", ""],
    apache_request_set_etag: ["void apache_request_set_etag()", ""],
    apache_request_set_last_modified: ["void apache_request_set_last_modified()", ""],
    apache_request_some_auth_required: ["bool apache_request_some_auth_required()", ""],
    apache_request_sub_req_lookup_file: ["object apache_request_sub_req_lookup_file(string file)", "Returns sub-request for the specified file.  You would     need to run it yourself with run()."],
    apache_request_sub_req_lookup_uri: ["object apache_request_sub_req_lookup_uri(string uri)", "Returns sub-request for the specified uri.  You would     need to run it yourself with run()"],
    apache_request_sub_req_method_uri: ["object apache_request_sub_req_method_uri(string method, string uri)", "Returns sub-request for the specified file.  You would     need to run it yourself with run()."],
    apache_request_update_mtime: ["long apache_request_update_mtime([int dependency_mtime])", ""],
    apache_reset_timeout: ["bool apache_reset_timeout(void)", "Reset the Apache write timer"],
    apache_response_headers: ["array apache_response_headers(void)", "Fetch all HTTP response headers"],
    apache_setenv: ["bool apache_setenv(string variable, string value [, bool walk_to_top])", "Set an Apache subprocess_env variable"],
    array_change_key_case: ["array array_change_key_case(array input [, int case=CASE_LOWER])", "Retuns an array with all string keys lowercased [or uppercased]"],
    array_chunk: ["array array_chunk(array input, int size [, bool preserve_keys])", "Split array into chunks"],
    array_combine: ["array array_combine(array keys, array values)", "Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values"],
    array_count_values: ["array array_count_values(array input)", "Return the value as key and the frequency of that value in input as value"],
    array_diff: ["array array_diff(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are not present in any of the others arguments."],
    array_diff_assoc: ["array array_diff_assoc(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal"],
    array_diff_key: ["array array_diff_key(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved."],
    array_diff_uassoc: ["array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function."],
    array_diff_ukey: ["array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)", "Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved."],
    array_fill: ["array array_fill(int start_key, int num, mixed val)", "Create an array containing num elements starting with index start_key each initialized to val"],
    array_fill_keys: ["array array_fill_keys(array keys, mixed val)", "Create an array using the elements of the first parameter as keys each initialized to val"],
    array_filter: ["array array_filter(array input [, mixed callback])", "Filters elements from the array via the callback."],
    array_flip: ["array array_flip(array input)", "Return array with key <-> value flipped"],
    array_intersect: ["array array_intersect(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are present in all the other arguments"],
    array_intersect_assoc: ["array array_intersect_assoc(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check"],
    array_intersect_key: ["array array_intersect_key(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data."],
    array_intersect_uassoc: ["array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback."],
    array_intersect_ukey: ["array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)", "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data."],
    array_key_exists: ["bool array_key_exists(mixed key, array search)", "Checks if the given key or index exists in the array"],
    array_keys: ["array array_keys(array input [, mixed search_value[, bool strict]])", "Return just the keys from the input array, optionally only for the specified search_value"],
    array_map: ["array array_map(mixed callback, array input1 [, array input2 ,...])", "Applies the callback to the elements in given arrays."],
    array_merge: ["array array_merge(array arr1, array arr2 [, array ...])", "Merges elements from passed arrays into one array"],
    array_merge_recursive: ["array array_merge_recursive(array arr1, array arr2 [, array ...])", "Recursively merges elements from passed arrays into one array"],
    array_multisort: ["bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])", "Sort multiple arrays at once similar to how ORDER BY clause works in SQL"],
    array_pad: ["array array_pad(array input, int pad_size, mixed pad_value)", "Returns a copy of input array padded with pad_value to size pad_size"],
    array_pop: ["mixed array_pop(array stack)", "Pops an element off the end of the array"],
    array_product: ["mixed array_product(array input)", "Returns the product of the array entries"],
    array_push: ["int array_push(array stack, mixed var [, mixed ...])", "Pushes elements onto the end of the array"],
    array_rand: ["mixed array_rand(array input [, int num_req])", "Return key/keys for random entry/entries in the array"],
    array_reduce: ["mixed array_reduce(array input, mixed callback [, mixed initial])", "Iteratively reduce the array to a single value via the callback."],
    array_replace: ["array array_replace(array arr1, array arr2 [, array ...])", "Replaces elements from passed arrays into one array"],
    array_replace_recursive: ["array array_replace_recursive(array arr1, array arr2 [, array ...])", "Recursively replaces elements from passed arrays into one array"],
    array_reverse: ["array array_reverse(array input [, bool preserve keys])", "Return input as a new array with the order of the entries reversed"],
    array_search: ["mixed array_search(mixed needle, array haystack [, bool strict])", "Searches the array for a given value and returns the corresponding key if successful"],
    array_shift: ["mixed array_shift(array stack)", "Pops an element off the beginning of the array"],
    array_slice: ["array array_slice(array input, int offset [, int length [, bool preserve_keys]])", "Returns elements specified by offset and length"],
    array_splice: ["array array_splice(array input, int offset [, int length [, array replacement]])", "Removes the elements designated by offset and length and replace them with supplied array"],
    array_sum: ["mixed array_sum(array input)", "Returns the sum of the array entries"],
    array_udiff: ["array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function."],
    array_udiff_assoc: ["array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function."],
    array_udiff_uassoc: ["array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions."],
    array_uintersect: ["array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback."],
    array_uintersect_assoc: ["array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback."],
    array_uintersect_uassoc: ["array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks."],
    array_unique: ["array array_unique(array input [, int sort_flags])", "Removes duplicate values from array"],
    array_unshift: ["int array_unshift(array stack, mixed var [, mixed ...])", "Pushes elements onto the beginning of the array"],
    array_values: ["array array_values(array input)", "Return just the values from the input array"],
    array_walk: ["bool array_walk(array input, string funcname [, mixed userdata])", "Apply a user function to every member of an array"],
    array_walk_recursive: ["bool array_walk_recursive(array input, string funcname [, mixed userdata])", "Apply a user function recursively to every member of an array"],
    arsort: ["bool arsort(array &array_arg [, int sort_flags])", "Sort an array in reverse order and maintain index association"],
    asin: ["float asin(float number)", "Returns the arc sine of the number in radians"],
    asinh: ["float asinh(float number)", "Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number"],
    asort: ["bool asort(array &array_arg [, int sort_flags])", "Sort an array and maintain index association"],
    assert: ["int assert(string|bool assertion)", "Checks if assertion is false"],
    assert_options: ["mixed assert_options(int what [, mixed value])", "Set/get the various assert flags"],
    atan: ["float atan(float number)", "Returns the arc tangent of the number in radians"],
    atan2: ["float atan2(float y, float x)", "Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x"],
    atanh: ["float atanh(float number)", "Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number"],
    attachIterator: ["void attachIterator(Iterator iterator[, mixed info])", "Attach a new iterator"],
    base64_decode: ["string base64_decode(string str[, bool strict])", "Decodes string using MIME base64 algorithm"],
    base64_encode: ["string base64_encode(string str)", "Encodes string using MIME base64 algorithm"],
    base_convert: ["string base_convert(string number, int frombase, int tobase)", "Converts a number in a string from any base <= 36 to any base <= 36"],
    basename: ["string basename(string path [, string suffix])", "Returns the filename component of the path"],
    bcadd: ["string bcadd(string left_operand, string right_operand [, int scale])", "Returns the sum of two arbitrary precision numbers"],
    bccomp: ["int bccomp(string left_operand, string right_operand [, int scale])", "Compares two arbitrary precision numbers"],
    bcdiv: ["string bcdiv(string left_operand, string right_operand [, int scale])", "Returns the quotient of two arbitrary precision numbers (division)"],
    bcmod: ["string bcmod(string left_operand, string right_operand)", "Returns the modulus of the two arbitrary precision operands"],
    bcmul: ["string bcmul(string left_operand, string right_operand [, int scale])", "Returns the multiplication of two arbitrary precision numbers"],
    bcpow: ["string bcpow(string x, string y [, int scale])", "Returns the value of an arbitrary precision number raised to the power of another"],
    bcpowmod: ["string bcpowmod(string x, string y, string mod [, int scale])", "Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous"],
    bcscale: ["bool bcscale(int scale)", "Sets default scale parameter for all bc math functions"],
    bcsqrt: ["string bcsqrt(string operand [, int scale])", "Returns the square root of an arbitray precision number"],
    bcsub: ["string bcsub(string left_operand, string right_operand [, int scale])", "Returns the difference between two arbitrary precision numbers"],
    bin2hex: ["string bin2hex(string data)", "Converts the binary representation of data to hex"],
    bind_textdomain_codeset: ["string bind_textdomain_codeset (string domain, string codeset)", "Specify the character encoding in which the messages from the DOMAIN message catalog will be returned."],
    bindec: ["int bindec(string binary_number)", "Returns the decimal equivalent of the binary number"],
    bindtextdomain: ["string bindtextdomain(string domain_name, string dir)", "Bind to the text domain domain_name, looking for translations in dir. Returns the current domain"],
    birdstep_autocommit: ["bool birdstep_autocommit(int index)", ""],
    birdstep_close: ["bool birdstep_close(int id)", ""],
    birdstep_commit: ["bool birdstep_commit(int index)", ""],
    birdstep_connect: ["int birdstep_connect(string server, string user, string pass)", ""],
    birdstep_exec: ["int birdstep_exec(int index, string exec_str)", ""],
    birdstep_fetch: ["bool birdstep_fetch(int index)", ""],
    birdstep_fieldname: ["string birdstep_fieldname(int index, int col)", ""],
    birdstep_fieldnum: ["int birdstep_fieldnum(int index)", ""],
    birdstep_freeresult: ["bool birdstep_freeresult(int index)", ""],
    birdstep_off_autocommit: ["bool birdstep_off_autocommit(int index)", ""],
    birdstep_result: ["mixed birdstep_result(int index, mixed col)", ""],
    birdstep_rollback: ["bool birdstep_rollback(int index)", ""],
    bzcompress: ["string bzcompress(string source [, int blocksize100k [, int workfactor]])", "Compresses a string into BZip2 encoded data"],
    bzdecompress: ["string bzdecompress(string source [, int small])", "Decompresses BZip2 compressed data"],
    bzerrno: ["int bzerrno(resource bz)", "Returns the error number"],
    bzerror: ["array bzerror(resource bz)", "Returns the error number and error string in an associative array"],
    bzerrstr: ["string bzerrstr(resource bz)", "Returns the error string"],
    bzopen: ["resource bzopen(string|int file|fp, string mode)", "Opens a new BZip2 stream"],
    bzread: ["string bzread(resource bz[, int length])", "Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified"],
    cal_days_in_month: ["int cal_days_in_month(int calendar, int month, int year)", "Returns the number of days in a month for a given year and calendar"],
    cal_from_jd: ["array cal_from_jd(int jd, int calendar)", "Converts from Julian Day Count to a supported calendar and return extended information"],
    cal_info: ["array cal_info([int calendar])", "Returns information about a particular calendar"],
    cal_to_jd: ["int cal_to_jd(int calendar, int month, int day, int year)", "Converts from a supported calendar to Julian Day Count"],
    call_user_func: ["mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])", "Call a user function which is the first parameter"],
    call_user_func_array: ["mixed call_user_func_array(string function_name, array parameters)", "Call a user function which is the first parameter with the arguments contained in array"],
    call_user_method: ["mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])", "Call a user method on a specific object or class"],
    call_user_method_array: ["mixed call_user_method_array(string method_name, mixed object, array params)", "Call a user method on a specific object or class using a parameter array"],
    ceil: ["float ceil(float number)", "Returns the next highest integer value of the number"],
    chdir: ["bool chdir(string directory)", "Change the current directory"],
    checkdate: ["bool checkdate(int month, int day, int year)", "Returns true(1) if it is a valid date in gregorian calendar"],
    chgrp: ["bool chgrp(string filename, mixed group)", "Change file group"],
    chmod: ["bool chmod(string filename, int mode)", "Change file mode"],
    chown: ["bool chown (string filename, mixed user)", "Change file owner"],
    chr: ["string chr(int ascii)", "Converts ASCII code to a character"],
    chroot: ["bool chroot(string directory)", "Change root directory"],
    chunk_split: ["string chunk_split(string str [, int chunklen [, string ending]])", "Returns split line"],
    class_alias: ["bool class_alias(string user_class_name , string alias_name [, bool autoload])", "Creates an alias for user defined class"],
    class_exists: ["bool class_exists(string classname [, bool autoload])", "Checks if the class exists"],
    class_implements: ["array class_implements(mixed what [, bool autoload ])", "Return all classes and interfaces implemented by SPL"],
    class_parents: ["array class_parents(object instance [, boolean autoload = true])", "Return an array containing the names of all parent classes"],
    clearstatcache: ["void clearstatcache([bool clear_realpath_cache[, string filename]])", "Clear file stat cache"],
    closedir: ["void closedir([resource dir_handle])", "Close directory connection identified by the dir_handle"],
    closelog: ["bool closelog(void)", "Close connection to system logger"],
    collator_asort: ["bool collator_asort( Collator $coll, array(string) $arr )", "* Sort array using specified collator, maintaining index association."],
    collator_compare: ["int collator_compare( Collator $coll, string $str1, string $str2 )", "* Compare two strings."],
    collator_create: ["Collator collator_create( string $locale )", "* Create collator."],
    collator_get_attribute: ["int collator_get_attribute( Collator $coll, int $attr )", "* Get collation attribute value."],
    collator_get_error_code: ["int collator_get_error_code( Collator $coll )", "* Get collator's last error code."],
    collator_get_error_message: ["string collator_get_error_message( Collator $coll )", "* Get text description for collator's last error code."],
    collator_get_locale: ["string collator_get_locale( Collator $coll, int $type )", "* Gets the locale name of the collator."],
    collator_get_sort_key: ["bool collator_get_sort_key( Collator $coll, string $str )", "* Get a sort key for a string from a Collator. }}}"],
    collator_get_strength: ["int collator_get_strength(Collator coll)", "* Returns the current collation strength."],
    collator_set_attribute: ["bool collator_set_attribute( Collator $coll, int $attr, int $val )", "* Set collation attribute."],
    collator_set_strength: ["bool collator_set_strength(Collator coll, int strength)", "* Set the collation strength."],
    collator_sort: ["bool collator_sort(  Collator $coll, array(string) $arr [, int $sort_flags] )", "* Sort array using specified collator."],
    collator_sort_with_sort_keys: ["bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )", "* Equivalent to standard PHP sort using Collator.  * Uses ICU ucol_getSortKey for performance."],
    com_create_guid: ["string com_create_guid()", "Generate a globally unique identifier (GUID)"],
    com_event_sink: ["bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])", "Connect events from a COM object to a PHP object"],
    com_get_active_object: ["object com_get_active_object(string progid [, int code_page ])", "Returns a handle to an already running instance of a COM object"],
    com_load_typelib: ["bool com_load_typelib(string typelib_name [, int case_insensitive])", "Loads a Typelibrary and registers its constants"],
    com_message_pump: ["bool com_message_pump([int timeoutms])", "Process COM messages, sleeping for up to timeoutms milliseconds"],
    com_print_typeinfo: ["bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)", "Print out a PHP class definition for a dispatchable interface"],
    compact: ["array compact(mixed var_names [, mixed ...])", "Creates a hash containing variables and their values"],
    compose_locale: ["static string compose_locale($array)", "* Creates a locale by combining the parts of locale-ID passed  * }}}"],
    confirm_extname_compiled: ["string confirm_extname_compiled(string arg)", "Return a string to confirm that the module is compiled in"],
    connection_aborted: ["int connection_aborted(void)", "Returns true if client disconnected"],
    connection_status: ["int connection_status(void)", "Returns the connection status bitfield"],
    constant: ["mixed constant(string const_name)", "Given the name of a constant this function will return the constant's associated value"],
    convert_cyr_string: ["string convert_cyr_string(string str, string from, string to)", "Convert from one Cyrillic character set to another"],
    convert_uudecode: ["string convert_uudecode(string data)", "decode a uuencoded string"],
    convert_uuencode: ["string convert_uuencode(string data)", "uuencode a string"],
    copy: ["bool copy(string source_file, string destination_file [, resource context])", "Copy a file"],
    cos: ["float cos(float number)", "Returns the cosine of the number in radians"],
    cosh: ["float cosh(float number)", "Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2"],
    count: ["int count(mixed var [, int mode])", "Count the number of elements in a variable (usually an array)"],
    count_chars: ["mixed count_chars(string input [, int mode])", "Returns info about what characters are used in input"],
    crc32: ["string crc32(string str)", "Calculate the crc32 polynomial of a string"],
    create_function: ["string create_function(string args, string code)", "Creates an anonymous function, and returns its name (funny, eh?)"],
    crypt: ["string crypt(string str [, string salt])", "Hash a string"],
    ctype_alnum: ["bool ctype_alnum(mixed c)", "Checks for alphanumeric character(s)"],
    ctype_alpha: ["bool ctype_alpha(mixed c)", "Checks for alphabetic character(s)"],
    ctype_cntrl: ["bool ctype_cntrl(mixed c)", "Checks for control character(s)"],
    ctype_digit: ["bool ctype_digit(mixed c)", "Checks for numeric character(s)"],
    ctype_graph: ["bool ctype_graph(mixed c)", "Checks for any printable character(s) except space"],
    ctype_lower: ["bool ctype_lower(mixed c)", "Checks for lowercase character(s)"],
    ctype_print: ["bool ctype_print(mixed c)", "Checks for printable character(s)"],
    ctype_punct: ["bool ctype_punct(mixed c)", "Checks for any printable character which is not whitespace or an alphanumeric character"],
    ctype_space: ["bool ctype_space(mixed c)", "Checks for whitespace character(s)"],
    ctype_upper: ["bool ctype_upper(mixed c)", "Checks for uppercase character(s)"],
    ctype_xdigit: ["bool ctype_xdigit(mixed c)", "Checks for character(s) representing a hexadecimal digit"],
    curl_close: ["void curl_close(resource ch)", "Close a cURL session"],
    curl_copy_handle: ["resource curl_copy_handle(resource ch)", "Copy a cURL handle along with all of it's preferences"],
    curl_errno: ["int curl_errno(resource ch)", "Return an integer containing the last error number"],
    curl_error: ["string curl_error(resource ch)", "Return a string contain the last error for the current session"],
    curl_exec: ["bool curl_exec(resource ch)", "Perform a cURL session"],
    curl_getinfo: ["mixed curl_getinfo(resource ch [, int option])", "Get information regarding a specific transfer"],
    curl_init: ["resource curl_init([string url])", "Initialize a cURL session"],
    curl_multi_add_handle: ["int curl_multi_add_handle(resource mh, resource ch)", "Add a normal cURL handle to a cURL multi handle"],
    curl_multi_close: ["void curl_multi_close(resource mh)", "Close a set of cURL handles"],
    curl_multi_exec: ["int curl_multi_exec(resource mh, int &still_running)", "Run the sub-connections of the current cURL handle"],
    curl_multi_getcontent: ["string curl_multi_getcontent(resource ch)", "Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set"],
    curl_multi_info_read: ["array curl_multi_info_read(resource mh [, long msgs_in_queue])", "Get information about the current transfers"],
    curl_multi_init: ["resource curl_multi_init(void)", "Returns a new cURL multi handle"],
    curl_multi_remove_handle: ["int curl_multi_remove_handle(resource mh, resource ch)", "Remove a multi handle from a set of cURL handles"],
    curl_multi_select: ["int curl_multi_select(resource mh[, double timeout])", 'Get all the sockets associated with the cURL extension, which can then be "selected"'],
    curl_setopt: ["bool curl_setopt(resource ch, int option, mixed value)", "Set an option for a cURL transfer"],
    curl_setopt_array: ["bool curl_setopt_array(resource ch, array options)", "Set an array of option for a cURL transfer"],
    curl_version: ["array curl_version([int version])", "Return cURL version information."],
    current: ["mixed current(array array_arg)", "Return the element currently pointed to by the internal array pointer"],
    date: ["string date(string format [, long timestamp])", "Format a local date/time"],
    date_add: ["DateTime date_add(DateTime object, DateInterval interval)", "Adds an interval to the current date in object."],
    date_create: ["DateTime date_create([string time[, DateTimeZone object]])", "Returns new DateTime object"],
    date_create_from_format: ["DateTime date_create_from_format(string format, string time[, DateTimeZone object])", "Returns new DateTime object formatted according to the specified format"],
    date_date_set: ["DateTime date_date_set(DateTime object, long year, long month, long day)", "Sets the date."],
    date_default_timezone_get: ["string date_default_timezone_get()", "Gets the default timezone used by all date/time functions in a script"],
    date_default_timezone_set: ["bool date_default_timezone_set(string timezone_identifier)", "Sets the default timezone used by all date/time functions in a script"],
    date_diff: ["DateInterval date_diff(DateTime object [, bool absolute])", "Returns the difference between two DateTime objects."],
    date_format: ["string date_format(DateTime object, string format)", "Returns date formatted according to given format"],
    date_get_last_errors: ["array date_get_last_errors()", "Returns the warnings and errors found while parsing a date/time string."],
    date_interval_create_from_date_string: ["DateInterval date_interval_create_from_date_string(string time)", "Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string"],
    date_interval_format: ["string date_interval_format(DateInterval object, string format)", "Formats the interval."],
    date_isodate_set: ["DateTime date_isodate_set(DateTime object, long year, long week[, long day])", "Sets the ISO date."],
    date_modify: ["DateTime date_modify(DateTime object, string modify)", "Alters the timestamp."],
    date_offset_get: ["long date_offset_get(DateTime object)", "Returns the DST offset."],
    date_parse: ["array date_parse(string date)", "Returns associative array with detailed info about given date"],
    date_parse_from_format: ["array date_parse_from_format(string format, string date)", "Returns associative array with detailed info about given date"],
    date_sub: ["DateTime date_sub(DateTime object, DateInterval interval)", "Subtracts an interval to the current date in object."],
    date_sun_info: ["array date_sun_info(long time, float latitude, float longitude)", "Returns an array with information about sun set/rise and twilight begin/end"],
    date_sunrise: ["mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", "Returns time of sunrise for a given day and location"],
    date_sunset: ["mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", "Returns time of sunset for a given day and location"],
    date_time_set: ["DateTime date_time_set(DateTime object, long hour, long minute[, long second])", "Sets the time."],
    date_timestamp_get: ["long date_timestamp_get(DateTime object)", "Gets the Unix timestamp."],
    date_timestamp_set: ["DateTime date_timestamp_set(DateTime object, long unixTimestamp)", "Sets the date and time based on an Unix timestamp."],
    date_timezone_get: ["DateTimeZone date_timezone_get(DateTime object)", "Return new DateTimeZone object relative to give DateTime"],
    date_timezone_set: ["DateTime date_timezone_set(DateTime object, DateTimeZone object)", "Sets the timezone for the DateTime object."],
    datefmt_create: ["IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )", "* Create formatter."],
    datefmt_format: ["string datefmt_format( [mixed]int $args or array $args )", "* Format the time value as a string. }}}"],
    datefmt_get_calendar: ["string datefmt_get_calendar( IntlDateFormatter $mf )", "* Get formatter calendar."],
    datefmt_get_datetype: ["string datefmt_get_datetype( IntlDateFormatter $mf )", "* Get formatter datetype."],
    datefmt_get_error_code: ["int datefmt_get_error_code( IntlDateFormatter $nf )", "* Get formatter's last error code."],
    datefmt_get_error_message: ["string datefmt_get_error_message( IntlDateFormatter $coll )", "* Get text description for formatter's last error code."],
    datefmt_get_locale: ["string datefmt_get_locale(IntlDateFormatter $mf)", "* Get formatter locale."],
    datefmt_get_pattern: ["string datefmt_get_pattern( IntlDateFormatter $mf )", "* Get formatter pattern."],
    datefmt_get_timetype: ["string datefmt_get_timetype( IntlDateFormatter $mf )", "* Get formatter timetype."],
    datefmt_get_timezone_id: ["string datefmt_get_timezone_id( IntlDateFormatter $mf )", "* Get formatter timezone_id."],
    datefmt_isLenient: ["string datefmt_isLenient(IntlDateFormatter $mf)", "* Get formatter locale."],
    datefmt_localtime: ["integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])", "* Parse the string $value to a localtime array  }}}"],
    datefmt_parse: ["integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )", "* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}"],
    datefmt_setLenient: ["string datefmt_setLenient(IntlDateFormatter $mf)", "* Set formatter lenient."],
    datefmt_set_calendar: ["bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )", "* Set formatter calendar."],
    datefmt_set_pattern: ["bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )", "* Set formatter pattern."],
    datefmt_set_timezone_id: ["boolean datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)", "* Set formatter timezone_id."],
    dba_close: ["void dba_close(resource handle)", "Closes database"],
    dba_delete: ["bool dba_delete(string key, resource handle)", "Deletes the entry associated with key    If inifile: remove all other key lines"],
    dba_exists: ["bool dba_exists(string key, resource handle)", "Checks, if the specified key exists"],
    dba_fetch: ["string dba_fetch(string key, [int skip ,] resource handle)", "Fetches the data associated with key"],
    dba_firstkey: ["string dba_firstkey(resource handle)", "Resets the internal key pointer and returns the first key"],
    dba_handlers: ["array dba_handlers([bool full_info])", "List configured database handlers"],
    dba_insert: ["bool dba_insert(string key, string value, resource handle)", "If not inifile: Insert value as key, return false, if key exists already     If inifile: Add vakue as key (next instance of key)"],
    dba_key_split: ["array|false dba_key_split(string key)", "Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null"],
    dba_list: ["array dba_list()", "List opened databases"],
    dba_nextkey: ["string dba_nextkey(resource handle)", "Returns the next key"],
    dba_open: ["resource dba_open(string path, string mode [, string handlername, string ...])", "Opens path using the specified handler in mode"],
    dba_optimize: ["bool dba_optimize(resource handle)", "Optimizes (e.g. clean up, vacuum) database"],
    dba_popen: ["resource dba_popen(string path, string mode [, string handlername, string ...])", "Opens path using the specified handler in mode persistently"],
    dba_replace: ["bool dba_replace(string key, string value, resource handle)", "Inserts value as key, replaces key, if key exists already    If inifile: remove all other key lines"],
    dba_sync: ["bool dba_sync(resource handle)", "Synchronizes database"],
    dcgettext: ["string dcgettext(string domain_name, string msgid, long category)", "Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist"],
    dcngettext: ["string dcngettext (string domain, string msgid1, string msgid2, int n, int category)", "Plural version of dcgettext()"],
    debug_backtrace: ["array debug_backtrace([bool provide_object])", "Return backtrace as array"],
    debug_print_backtrace: ["void debug_print_backtrace(void) */", "ZEND_FUNCTION(debug_print_backtrace) {  zend_execute_data *ptr, *skip;  int lineno;  char *function_name;  char *filename;  char *class_name = NULL;  char *call_type;  char *include_filename = NULL;  zval *arg_array = NULL;  int indent = 0;   if (zend_parse_parameters_none() == FAILURE) {   return;  }   ptr = EG(current_execute_data);", "PHP_FUNCTION(dom_document_relaxNG_validate_file) {  _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file"],
    dom_document_relaxNG_validate_xml: ["boolean dom_document_relaxNG_validate_xml(string source); */", "PHP_FUNCTION(dom_document_relaxNG_validate_xml) {  _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml"],
    dom_document_rename_node: ["DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3"],
    dom_document_save: ["int dom_document_save(string file);", "Convenience method to save to file"],
    dom_document_save_html: ["string dom_document_save_html();", "Convenience method to output as html"],
    dom_document_save_html_file: ["int dom_document_save_html_file(string file);", "Convenience method to save to file as html"],
    dom_document_savexml: ["string dom_document_savexml([node n]);", "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3"],
    dom_document_schema_validate: ["boolean dom_document_schema_validate(string source); */", "PHP_FUNCTION(dom_document_schema_validate_xml) {  _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate"],
    dom_document_schema_validate_file: ["boolean dom_document_schema_validate_file(string filename); */", "PHP_FUNCTION(dom_document_schema_validate_file) {  _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file"],
    dom_document_validate: ["boolean dom_document_validate();", "Since: DOM extended"],
    dom_document_xinclude: ["int dom_document_xinclude([int options])", "Substitutues xincludes in a DomDocument"],
    dom_domconfiguration_can_set_parameter: ["boolean dom_domconfiguration_can_set_parameter(string name, domuserdata value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:"],
    dom_domconfiguration_get_parameter: ["domdomuserdata dom_domconfiguration_get_parameter(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:"],
    dom_domconfiguration_set_parameter: ["dom_void dom_domconfiguration_set_parameter(string name, domuserdata value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:"],
    dom_domerrorhandler_handle_error: ["dom_boolean dom_domerrorhandler_handle_error(domerror error);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:"],
    dom_domimplementation_create_document: ["DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2"],
    dom_domimplementation_create_document_type: ["DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2"],
    dom_domimplementation_get_feature: ["DOMNode dom_domimplementation_get_feature(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3"],
    dom_domimplementation_has_feature: ["boolean dom_domimplementation_has_feature(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:"],
    dom_domimplementationlist_item: ["domdomimplementation dom_domimplementationlist_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:"],
    dom_domimplementationsource_get_domimplementation: ["domdomimplementation dom_domimplementationsource_get_domimplementation(string features);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:"],
    dom_domimplementationsource_get_domimplementations: ["domimplementationlist dom_domimplementationsource_get_domimplementations(string features);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:"],
    dom_domstringlist_item: ["domstring dom_domstringlist_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:"],
    dom_element_get_attribute: ["string dom_element_get_attribute(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:"],
    dom_element_get_attribute_node: ["DOMAttr dom_element_get_attribute_node(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:"],
    dom_element_get_attribute_node_ns: ["DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2"],
    dom_element_get_attribute_ns: ["string dom_element_get_attribute_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2"],
    dom_element_get_elements_by_tag_name: ["DOMNodeList dom_element_get_elements_by_tag_name(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:"],
    dom_element_get_elements_by_tag_name_ns: ["DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2"],
    dom_element_has_attribute: ["boolean dom_element_has_attribute(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2"],
    dom_element_has_attribute_ns: ["boolean dom_element_has_attribute_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2"],
    dom_element_remove_attribute: ["void dom_element_remove_attribute(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:"],
    dom_element_remove_attribute_node: ["DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:"],
    dom_element_remove_attribute_ns: ["void dom_element_remove_attribute_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2"],
    dom_element_set_attribute: ["void dom_element_set_attribute(string name, string value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:"],
    dom_element_set_attribute_node: ["DOMAttr dom_element_set_attribute_node(DOMAttr newAttr);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:"],
    dom_element_set_attribute_node_ns: ["DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2"],
    dom_element_set_attribute_ns: ["void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2"],
    dom_element_set_id_attribute: ["void dom_element_set_id_attribute(string name, boolean isId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3"],
    dom_element_set_id_attribute_node: ["void dom_element_set_id_attribute_node(attr idAttr, boolean isId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3"],
    dom_element_set_id_attribute_ns: ["void dom_element_set_id_attribute_ns(string namespaceURI, string localName, boolean isId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3"],
    dom_import_simplexml: ["somNode dom_import_simplexml(sxeobject node)", "Get a simplexml_element object from dom to allow for processing"],
    dom_namednodemap_get_named_item: ["DOMNode dom_namednodemap_get_named_item(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:"],
    dom_namednodemap_get_named_item_ns: ["DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2"],
    dom_namednodemap_item: ["DOMNode dom_namednodemap_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:"],
    dom_namednodemap_remove_named_item: ["DOMNode dom_namednodemap_remove_named_item(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:"],
    dom_namednodemap_remove_named_item_ns: ["DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2"],
    dom_namednodemap_set_named_item: ["DOMNode dom_namednodemap_set_named_item(DOMNode arg);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:"],
    dom_namednodemap_set_named_item_ns: ["DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2"],
    dom_namelist_get_name: ["string dom_namelist_get_name(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:"],
    dom_namelist_get_namespace_uri: ["string dom_namelist_get_namespace_uri(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:"],
    dom_node_append_child: ["DomNode dom_node_append_child(DomNode newChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:"],
    dom_node_clone_node: ["DomNode dom_node_clone_node(boolean deep);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:"],
    dom_node_compare_document_position: ["short dom_node_compare_document_position(DomNode other);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3"],
    dom_node_get_feature: ["DomNode dom_node_get_feature(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3"],
    dom_node_get_user_data: ["mixed dom_node_get_user_data(string key);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3"],
    dom_node_has_attributes: ["boolean dom_node_has_attributes();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2"],
    dom_node_has_child_nodes: ["boolean dom_node_has_child_nodes();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:"],
    dom_node_insert_before: ["domnode dom_node_insert_before(DomNode newChild, DomNode refChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:"],
    dom_node_is_default_namespace: ["boolean dom_node_is_default_namespace(string namespaceURI);", "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3"],
    dom_node_is_equal_node: ["boolean dom_node_is_equal_node(DomNode arg);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3"],
    dom_node_is_same_node: ["boolean dom_node_is_same_node(DomNode other);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3"],
    dom_node_is_supported: ["boolean dom_node_is_supported(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2"],
    dom_node_lookup_namespace_uri: ["string dom_node_lookup_namespace_uri(string prefix);", "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3"],
    dom_node_lookup_prefix: ["string dom_node_lookup_prefix(string namespaceURI);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3"],
    dom_node_normalize: ["void dom_node_normalize();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:"],
    dom_node_remove_child: ["DomNode dom_node_remove_child(DomNode oldChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:"],
    dom_node_replace_child: ["DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:"],
    dom_node_set_user_data: ["mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3"],
    dom_nodelist_item: ["DOMNode dom_nodelist_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:"],
    dom_string_extend_find_offset16: ["int dom_string_extend_find_offset16(int offset32);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:"],
    dom_string_extend_find_offset32: ["int dom_string_extend_find_offset32(int offset16);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:"],
    dom_text_is_whitespace_in_element_content: ["boolean dom_text_is_whitespace_in_element_content();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3"],
    dom_text_replace_whole_text: ["DOMText dom_text_replace_whole_text(string content);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3"],
    dom_text_split_text: ["DOMText dom_text_split_text(int offset);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:"],
    dom_userdatahandler_handle: ["dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:"],
    dom_xpath_evaluate: ["mixed dom_xpath_evaluate(string expr [,DOMNode context]); */", "PHP_FUNCTION(dom_xpath_evaluate) {  php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_EVALUATE); } /* }}} end dom_xpath_evaluate"],
    dom_xpath_query: ["DOMNodeList dom_xpath_query(string expr [,DOMNode context]); */", "PHP_FUNCTION(dom_xpath_query) {  php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_QUERY); } /* }}} end dom_xpath_query"],
    dom_xpath_register_ns: ["boolean dom_xpath_register_ns(string prefix, string uri); */", 'PHP_FUNCTION(dom_xpath_register_ns) {  zval *id;  xmlXPathContextPtr ctxp;  int prefix_len, ns_uri_len;  dom_xpath_object *intern;  unsigned char *prefix, *ns_uri;   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss", &id, dom_xpath_class_entry, &prefix, &prefix_len, &ns_uri, &ns_uri_len) == FAILURE) {   return;  }   intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);   ctxp = (xmlXPathContextPtr) intern->ptr;  if (ctxp == NULL) {   php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid XPath Context");   RETURN_FALSE;  }   if (xmlXPathRegisterNs(ctxp, prefix, ns_uri) != 0) {   RETURN_FALSE  }  RETURN_TRUE; } /* }}}'],
    dom_xpath_register_php_functions: ["void dom_xpath_register_php_functions() */", 'PHP_FUNCTION(dom_xpath_register_php_functions) {  zval *id;  dom_xpath_object *intern;  zval *array_value, **entry, *new_string;  int  name_len = 0;  char *name;   DOM_GET_THIS(id);    if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "a",  &array_value) == SUCCESS) {   intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);   zend_hash_internal_pointer_reset(Z_ARRVAL_P(array_value));    while (zend_hash_get_current_data(Z_ARRVAL_P(array_value), (void **)&entry) == SUCCESS) {    SEPARATE_ZVAL(entry);    convert_to_string_ex(entry);     MAKE_STD_ZVAL(new_string);    ZVAL_LONG(new_string,1);       zend_hash_update(intern->registered_phpfunctions, Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &new_string, sizeof(zval*), NULL);    zend_hash_move_forward(Z_ARRVAL_P(array_value));   }   intern->registerPhpFunctions = 2;   RETURN_TRUE;   } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s",  &name, &name_len) == SUCCESS) {   intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);      MAKE_STD_ZVAL(new_string);   ZVAL_LONG(new_string,1);   zend_hash_update(intern->registered_phpfunctions, name, name_len + 1, &new_string, sizeof(zval*), NULL);   intern->registerPhpFunctions = 2;     } else {   intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);   intern->registerPhpFunctions = 1;  }   } /* }}} end dom_xpath_register_php_functions'],
    each: ["array each(array arr)", "Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element"],
    easter_date: ["int easter_date([int year])", "Return the timestamp of midnight on Easter of a given year (defaults to current year)"],
    easter_days: ["int easter_days([int year, [int method]])", "Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)"],
    echo: ["void echo(string arg1 [, string ...])", "Output one or more strings"],
    empty: ["bool empty( mixed var )", "Determine whether a variable is empty"],
    enchant_broker_describe: ["array enchant_broker_describe(resource broker)", "Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()"],
    enchant_broker_dict_exists: ["bool enchant_broker_dict_exists(resource broker, string tag)", "Whether a dictionary exists or not. Using non-empty tag"],
    enchant_broker_free: ["boolean enchant_broker_free(resource broker)", "Destroys the broker object and its dictionnaries"],
    enchant_broker_free_dict: ["resource enchant_broker_free_dict(resource dict)", "Free the dictionary resource"],
    enchant_broker_get_dict_path: ["string enchant_broker_get_dict_path(resource broker, int dict_type)", "Get the directory path for a given backend, works with ispell and myspell"],
    enchant_broker_get_error: ["string enchant_broker_get_error(resource broker)", "Returns the last error of the broker"],
    enchant_broker_init: ["resource enchant_broker_init()", "create a new broker object capable of requesting"],
    enchant_broker_list_dicts: ["string enchant_broker_list_dicts(resource broker)", "Lists the dictionaries available for the given broker"],
    enchant_broker_request_dict: ["resource enchant_broker_request_dict(resource broker, string tag)", 'create a new dictionary using tag, the non-empty language tag you wish to request  a dictionary for ("en_US", "de_DE", ...)'],
    enchant_broker_request_pwl_dict: ["resource enchant_broker_request_pwl_dict(resource broker, string filename)", "creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call."],
    enchant_broker_set_dict_path: ["bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)", "Set the directory path for a given backend, works with ispell and myspell"],
    enchant_broker_set_ordering: ["bool enchant_broker_set_ordering(resource broker, string tag, string ordering)", "Declares a preference of dictionaries to use for the language  described/referred to by 'tag'. The ordering is a comma delimited  list of provider names. As a special exception, the \"*\" tag can  be used as a language tag to declare a default ordering for any  language that does not explictly declare an ordering."],
    enchant_dict_add_to_personal: ["void enchant_dict_add_to_personal(resource dict, string word)", "add 'word' to personal word list"],
    enchant_dict_add_to_session: ["void enchant_dict_add_to_session(resource dict, string word)", "add 'word' to this spell-checking session"],
    enchant_dict_check: ["bool enchant_dict_check(resource dict, string word)", "If the word is correctly spelled return true, otherwise return false"],
    enchant_dict_describe: ["array enchant_dict_describe(resource dict)", "Describes an individual dictionary 'dict'"],
    enchant_dict_get_error: ["string enchant_dict_get_error(resource dict)", "Returns the last error of the current spelling-session"],
    enchant_dict_is_in_session: ["bool enchant_dict_is_in_session(resource dict, string word)", "whether or not 'word' exists in this spelling-session"],
    enchant_dict_quick_check: ["bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])", "If the word is correctly spelled return true, otherwise return false, if suggestions variable     is provided, fill it with spelling alternatives."],
    enchant_dict_store_replacement: ["void enchant_dict_store_replacement(resource dict, string mis, string cor)", "add a correction for 'mis' using 'cor'.  Notes that you replaced @mis with @cor, so it's possibly more likely  that future occurrences of @mis will be replaced with @cor. So it might  bump @cor up in the suggestion list."],
    enchant_dict_suggest: ["array enchant_dict_suggest(resource dict, string word)", "Will return a list of values if any of those pre-conditions are not met."],
    end: ["mixed end(array array_arg)", "Advances array argument's internal pointer to the last element and return it"],
    ereg: ["int ereg(string pattern, string string [, array registers])", "Regular expression match"],
    ereg_replace: ["string ereg_replace(string pattern, string replacement, string string)", "Replace regular expression"],
    eregi: ["int eregi(string pattern, string string [, array registers])", "Case-insensitive regular expression match"],
    eregi_replace: ["string eregi_replace(string pattern, string replacement, string string)", "Case insensitive replace regular expression"],
    error_get_last: ["array error_get_last()", "Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet."],
    error_log: ["bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])", "Send an error message somewhere"],
    error_reporting: ["int error_reporting([int new_error_level])", "Return the current error_reporting level, and if an argument was passed - change to the new level"],
    escapeshellarg: ["string escapeshellarg(string arg)", "Quote and escape an argument for use in a shell command"],
    escapeshellcmd: ["string escapeshellcmd(string command)", "Escape shell metacharacters"],
    exec: ["string exec(string command [, array &output [, int &return_value]])", "Execute an external program"],
    exif_imagetype: ["int exif_imagetype(string imagefile)", "Get the type of an image"],
    exif_read_data: ["array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])", "Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails"],
    exif_tagname: ["string exif_tagname(index)", "Get headername for index or false if not defined"],
    exif_thumbnail: ["string exif_thumbnail(string filename [, &width, &height [, &imagetype]])", "Reads the embedded thumbnail"],
    exit: ["void exit([mixed status])", "Output a message and terminate the current script"],
    exp: ["float exp(float number)", "Returns e raised to the power of the number"],
    explode: ["array explode(string separator, string str [, int limit])", "Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned."],
    expm1: ["float expm1(float number)", "Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero"],
    extension_loaded: ["bool extension_loaded(string extension_name)", "Returns true if the named extension is loaded"],
    extract: ["int extract(array var_array [, int extract_type [, string prefix]])", "Imports variables into symbol table from an array"],
    ezmlm_hash: ["int ezmlm_hash(string addr)", "Calculate EZMLM list hash value."],
    fclose: ["bool fclose(resource fp)", "Close an open file pointer"],
    feof: ["bool feof(resource fp)", "Test for end-of-file on a file pointer"],
    fflush: ["bool fflush(resource fp)", "Flushes output"],
    fgetc: ["string fgetc(resource fp)", "Get a character from file pointer"],
    fgetcsv: ["array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])", "Get line from file pointer and parse for CSV fields"],
    fgets: ["string fgets(resource fp[, int length])", "Get a line from file pointer"],
    fgetss: ["string fgetss(resource fp [, int length [, string allowable_tags]])", "Get a line from file pointer and strip HTML tags"],
    file: ["array file(string filename [, int flags[, resource context]])", "Read entire file into an array"],
    file_exists: ["bool file_exists(string filename)", "Returns true if filename exists"],
    file_get_contents: ["string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])", "Read the entire file into a string"],
    file_put_contents: ["int file_put_contents(string file, mixed data [, int flags [, resource context]])", "Write/Create a file with contents data and return the number of bytes written"],
    fileatime: ["int fileatime(string filename)", "Get last access time of file"],
    filectime: ["int filectime(string filename)", "Get inode modification time of file"],
    filegroup: ["int filegroup(string filename)", "Get file group"],
    fileinode: ["int fileinode(string filename)", "Get file inode"],
    filemtime: ["int filemtime(string filename)", "Get last modification time of file"],
    fileowner: ["int fileowner(string filename)", "Get file owner"],
    fileperms: ["int fileperms(string filename)", "Get file permissions"],
    filesize: ["int filesize(string filename)", "Get file size"],
    filetype: ["string filetype(string filename)", "Get file type"],
    filter_has_var: ["mixed filter_has_var(constant type, string variable_name)", "* Returns true if the variable with the name 'name' exists in source."],
    filter_input: ["mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])", "* Returns the filtered variable 'name'* from source `type`."],
    filter_input_array: ["mixed filter_input_array(constant type, [, mixed options]])", "* Returns an array with all arguments defined in 'definition'."],
    filter_var: ["mixed filter_var(mixed variable [, long filter [, mixed options]])", "* Returns the filtered version of the vriable."],
    filter_var_array: ["mixed filter_var_array(array data, [, mixed options]])", "* Returns an array with all arguments defined in 'definition'."],
    finfo_buffer: ["string finfo_buffer(resource finfo, char *string [, int options [, resource context]])", "Return infromation about a string buffer."],
    finfo_close: ["resource finfo_close(resource finfo)", "Close fileinfo resource."],
    finfo_file: ["string finfo_file(resource finfo, char *file_name [, int options [, resource context]])", "Return information about a file."],
    finfo_open: ["resource finfo_open([int options [, string arg]])", "Create a new fileinfo resource."],
    finfo_set_flags: ["bool finfo_set_flags(resource finfo, int options)", "Set libmagic configuration options."],
    floatval: ["float floatval(mixed var)", "Get the float value of a variable"],
    flock: ["bool flock(resource fp, int operation [, int &wouldblock])", "Portable file locking"],
    floor: ["float floor(float number)", "Returns the next lowest integer value from the number"],
    flush: ["void flush(void)", "Flush the output buffer"],
    fmod: ["float fmod(float x, float y)", "Returns the remainder of dividing x by y as a float"],
    fnmatch: ["bool fnmatch(string pattern, string filename [, int flags])", "Match filename against pattern"],
    fopen: ["resource fopen(string filename, string mode [, bool use_include_path [, resource context]])", "Open a file or a URL and return a file pointer"],
    forward_static_call: ["mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])", "Call a user function which is the first parameter"],
    fpassthru: ["int fpassthru(resource fp)", "Output all remaining data from a file pointer"],
    fprintf: ["int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])", "Output a formatted string into a stream"],
    fputcsv: ["int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])", "Format line as CSV and write to file pointer"],
    fread: ["string fread(resource fp, int length)", "Binary-safe file read"],
    frenchtojd: ["int frenchtojd(int month, int day, int year)", "Converts a french republic calendar date to julian day count"],
    fscanf: ["mixed fscanf(resource stream, string format [, string ...])", "Implements a mostly ANSI compatible fscanf()"],
    fseek: ["int fseek(resource fp, int offset [, int whence])", "Seek on a file pointer"],
    fsockopen: ["resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", "Open Internet or Unix domain socket connection"],
    fstat: ["array fstat(resource fp)", "Stat() on a filehandle"],
    ftell: ["int ftell(resource fp)", "Get file pointer's read/write position"],
    ftok: ["int ftok(string pathname, string proj)", "Convert a pathname and a project identifier to a System V IPC key"],
    ftp_alloc: ["bool ftp_alloc(resource stream, int size[, &response])", "Attempt to allocate space on the remote FTP server"],
    ftp_cdup: ["bool ftp_cdup(resource stream)", "Changes to the parent directory"],
    ftp_chdir: ["bool ftp_chdir(resource stream, string directory)", "Changes directories"],
    ftp_chmod: ["int ftp_chmod(resource stream, int mode, string filename)", "Sets permissions on a file"],
    ftp_close: ["bool ftp_close(resource stream)", "Closes the FTP stream"],
    ftp_connect: ["resource ftp_connect(string host [, int port [, int timeout]])", "Opens a FTP stream"],
    ftp_delete: ["bool ftp_delete(resource stream, string file)", "Deletes a file"],
    ftp_exec: ["bool ftp_exec(resource stream, string command)", "Requests execution of a program on the FTP server"],
    ftp_fget: ["bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", "Retrieves a file from the FTP server and writes it to an open file"],
    ftp_fput: ["bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", "Stores a file from an open file to the FTP server"],
    ftp_get: ["bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", "Retrieves a file from the FTP server and writes it to a local file"],
    ftp_get_option: ["mixed ftp_get_option(resource stream, int option)", "Gets an FTP option"],
    ftp_login: ["bool ftp_login(resource stream, string username, string password)", "Logs into the FTP server"],
    ftp_mdtm: ["int ftp_mdtm(resource stream, string filename)", "Returns the last modification time of the file, or -1 on error"],
    ftp_mkdir: ["string ftp_mkdir(resource stream, string directory)", "Creates a directory and returns the absolute path for the new directory or false on error"],
    ftp_nb_continue: ["int ftp_nb_continue(resource stream)", "Continues retrieving/sending a file nbronously"],
    ftp_nb_fget: ["int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", "Retrieves a file from the FTP server asynchronly and writes it to an open file"],
    ftp_nb_fput: ["int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", "Stores a file from an open file to the FTP server nbronly"],
    ftp_nb_get: ["int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", "Retrieves a file from the FTP server nbhronly and writes it to a local file"],
    ftp_nb_put: ["int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", "Stores a file on the FTP server"],
    ftp_nlist: ["array ftp_nlist(resource stream, string directory)", "Returns an array of filenames in the given directory"],
    ftp_pasv: ["bool ftp_pasv(resource stream, bool pasv)", "Turns passive mode on or off"],
    ftp_put: ["bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", "Stores a file on the FTP server"],
    ftp_pwd: ["string ftp_pwd(resource stream)", "Returns the present working directory"],
    ftp_raw: ["array ftp_raw(resource stream, string command)", "Sends a literal command to the FTP server"],
    ftp_rawlist: ["array ftp_rawlist(resource stream, string directory [, bool recursive])", "Returns a detailed listing of a directory as an array of output lines"],
    ftp_rename: ["bool ftp_rename(resource stream, string src, string dest)", "Renames the given file to a new path"],
    ftp_rmdir: ["bool ftp_rmdir(resource stream, string directory)", "Removes a directory"],
    ftp_set_option: ["bool ftp_set_option(resource stream, int option, mixed value)", "Sets an FTP option"],
    ftp_site: ["bool ftp_site(resource stream, string cmd)", "Sends a SITE command to the server"],
    ftp_size: ["int ftp_size(resource stream, string filename)", "Returns the size of the file, or -1 on error"],
    ftp_ssl_connect: ["resource ftp_ssl_connect(string host [, int port [, int timeout]])", "Opens a FTP-SSL stream"],
    ftp_systype: ["string ftp_systype(resource stream)", "Returns the system type identifier"],
    ftruncate: ["bool ftruncate(resource fp, int size)", "Truncate file to 'size' length"],
    func_get_arg: ["mixed func_get_arg(int arg_num)", "Get the $arg_num'th argument that was passed to the function"],
    func_get_args: ["array func_get_args()", "Get an array of the arguments that were passed to the function"],
    func_num_args: ["int func_num_args(void)", "Get the number of arguments that were passed to the function"],
    "function ": ["", ""],
    "foreach ": ["", ""],
    function_exists: ["bool function_exists(string function_name)", "Checks if the function exists"],
    fwrite: ["int fwrite(resource fp, string str [, int length])", "Binary-safe file write"],
    gc_collect_cycles: ["int gc_collect_cycles(void)", "Forces collection of any existing garbage cycles.    Returns number of freed zvals"],
    gc_disable: ["void gc_disable(void)", "Deactivates the circular reference collector"],
    gc_enable: ["void gc_enable(void)", "Activates the circular reference collector"],
    gc_enabled: ["void gc_enabled(void)", "Returns status of the circular reference collector"],
    gd_info: ["array gd_info()", ""],
    getKeywords: ["static array getKeywords(string $locale) {", "* return an associative array containing keyword-value  * pairs for this locale. The keys are keys to the array (doh!)  * }}}"],
    get_browser: ["mixed get_browser([string browser_name [, bool return_array]])", "Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array."],
    get_called_class: ["string get_called_class()", 'Retrieves the "Late Static Binding" class name'],
    get_cfg_var: ["mixed get_cfg_var(string option_name)", "Get the value of a PHP configuration option"],
    get_class: ["string get_class([object object])", "Retrieves the class name"],
    get_class_methods: ["array get_class_methods(mixed class)", "Returns an array of method names for class or class instance."],
    get_class_vars: ["array get_class_vars(string class_name)", "Returns an array of default properties of the class."],
    get_current_user: ["string get_current_user(void)", "Get the name of the owner of the current PHP script"],
    get_declared_classes: ["array get_declared_classes()", "Returns an array of all declared classes."],
    get_declared_interfaces: ["array get_declared_interfaces()", "Returns an array of all declared interfaces."],
    get_defined_constants: ["array get_defined_constants([bool categorize])", "Return an array containing the names and values of all defined constants"],
    get_defined_functions: ["array get_defined_functions(void)", "Returns an array of all defined functions"],
    get_defined_vars: ["array get_defined_vars(void)", "Returns an associative array of names and values of all currently defined variable names (variables in the current scope)"],
    get_display_language: ["static string get_display_language($locale[, $in_locale = null])", "* gets the language for the $locale in $in_locale or default_locale"],
    get_display_name: ["static string get_display_name($locale[, $in_locale = null])", "* gets the name for the $locale in $in_locale or default_locale"],
    get_display_region: ["static string get_display_region($locale, $in_locale = null)", "* gets the region for the $locale in $in_locale or default_locale"],
    get_display_script: ["static string get_display_script($locale, $in_locale = null)", "* gets the script for the $locale in $in_locale or default_locale"],
    get_extension_funcs: ["array get_extension_funcs(string extension_name)", "Returns an array with the names of functions belonging to the named extension"],
    get_headers: ["array get_headers(string url[, int format])", "fetches all the headers sent by the server in response to a HTTP request"],
    get_html_translation_table: ["array get_html_translation_table([int table [, int quote_style]])", "Returns the internal translation table used by htmlspecialchars and htmlentities"],
    get_include_path: ["string get_include_path()", "Get the current include_path configuration option"],
    get_included_files: ["array get_included_files(void)", "Returns an array with the file names that were include_once()'d"],
    get_loaded_extensions: ["array get_loaded_extensions([bool zend_extensions])", "Return an array containing names of loaded extensions"],
    get_magic_quotes_gpc: ["int get_magic_quotes_gpc(void)", "Get the current active configuration setting of magic_quotes_gpc"],
    get_magic_quotes_runtime: ["int get_magic_quotes_runtime(void)", "Get the current active configuration setting of magic_quotes_runtime"],
    get_meta_tags: ["array get_meta_tags(string filename [, bool use_include_path])", "Extracts all meta tag content attributes from a file and returns an array"],
    get_object_vars: ["array get_object_vars(object obj)", "Returns an array of object properties"],
    get_parent_class: ["string get_parent_class([mixed object])", "Retrieves the parent class name for object or class or current scope."],
    get_resource_type: ["string get_resource_type(resource res)", "Get the resource type name for a given resource"],
    getallheaders: ["array getallheaders(void)", ""],
    getcwd: ["mixed getcwd(void)", "Gets the current directory"],
    getdate: ["array getdate([int timestamp])", "Get date/time information"],
    getenv: ["string getenv(string varname)", "Get the value of an environment variable"],
    gethostbyaddr: ["string gethostbyaddr(string ip_address)", "Get the Internet host name corresponding to a given IP address"],
    gethostbyname: ["string gethostbyname(string hostname)", "Get the IP address corresponding to a given Internet host name"],
    gethostbynamel: ["array gethostbynamel(string hostname)", "Return a list of IP addresses that a given hostname resolves to."],
    gethostname: ["string gethostname()", "Get the host name of the current machine"],
    getimagesize: ["array getimagesize(string imagefile [, array info])", "Get the size of an image as 4-element array"],
    getlastmod: ["int getlastmod(void)", "Get time of last page modification"],
    getmygid: ["int getmygid(void)", "Get PHP script owner's GID"],
    getmyinode: ["int getmyinode(void)", "Get the inode of the current script being parsed"],
    getmypid: ["int getmypid(void)", "Get current process ID"],
    getmyuid: ["int getmyuid(void)", "Get PHP script owner's UID"],
    getopt: ["array getopt(string options [, array longopts])", "Get options from the command line argument list"],
    getprotobyname: ["int getprotobyname(string name)", "Returns protocol number associated with name as per /etc/protocols"],
    getprotobynumber: ["string getprotobynumber(int proto)", "Returns protocol name associated with protocol number proto"],
    getrandmax: ["int getrandmax(void)", "Returns the maximum value a random number can have"],
    getrusage: ["array getrusage([int who])", "Returns an array of usage statistics"],
    getservbyname: ["int getservbyname(string service, string protocol)", 'Returns port associated with service. Protocol must be "tcp" or "udp"'],
    getservbyport: ["string getservbyport(int port, string protocol)", 'Returns service name associated with port. Protocol must be "tcp" or "udp"'],
    gettext: ["string gettext(string msgid)", "Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist"],
    gettimeofday: ["array gettimeofday([bool get_as_float])", "Returns the current time as array"],
    gettype: ["string gettype(mixed var)", "Returns the type of the variable"],
    glob: ["array glob(string pattern [, int flags])", "Find pathnames matching a pattern"],
    gmdate: ["string gmdate(string format [, long timestamp])", "Format a GMT date/time"],
    gmmktime: ["int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", "Get UNIX timestamp for a GMT date"],
    gmp_abs: ["resource gmp_abs(resource a)", "Calculates absolute value"],
    gmp_add: ["resource gmp_add(resource a, resource b)", "Add a and b"],
    gmp_and: ["resource gmp_and(resource a, resource b)", "Calculates logical AND of a and b"],
    gmp_clrbit: ["void gmp_clrbit(resource &a, int index)", "Clears bit in a"],
    gmp_cmp: ["int gmp_cmp(resource a, resource b)", "Compares two numbers"],
    gmp_com: ["resource gmp_com(resource a)", "Calculates one's complement of a"],
    gmp_div_q: ["resource gmp_div_q(resource a, resource b [, int round])", "Divide a by b, returns quotient only"],
    gmp_div_qr: ["array gmp_div_qr(resource a, resource b [, int round])", "Divide a by b, returns quotient and reminder"],
    gmp_div_r: ["resource gmp_div_r(resource a, resource b [, int round])", "Divide a by b, returns reminder only"],
    gmp_divexact: ["resource gmp_divexact(resource a, resource b)", "Divide a by b using exact division algorithm"],
    gmp_fact: ["resource gmp_fact(int a)", "Calculates factorial function"],
    gmp_gcd: ["resource gmp_gcd(resource a, resource b)", "Computes greatest common denominator (gcd) of a and b"],
    gmp_gcdext: ["array gmp_gcdext(resource a, resource b)", "Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)"],
    gmp_hamdist: ["int gmp_hamdist(resource a, resource b)", "Calculates hamming distance between a and b"],
    gmp_init: ["resource gmp_init(mixed number [, int base])", "Initializes GMP number"],
    gmp_intval: ["int gmp_intval(resource gmpnumber)", "Gets signed long value of GMP number"],
    gmp_invert: ["resource gmp_invert(resource a, resource b)", "Computes the inverse of a modulo b"],
    gmp_jacobi: ["int gmp_jacobi(resource a, resource b)", "Computes Jacobi symbol"],
    gmp_legendre: ["int gmp_legendre(resource a, resource b)", "Computes Legendre symbol"],
    gmp_mod: ["resource gmp_mod(resource a, resource b)", "Computes a modulo b"],
    gmp_mul: ["resource gmp_mul(resource a, resource b)", "Multiply a and b"],
    gmp_neg: ["resource gmp_neg(resource a)", "Negates a number"],
    gmp_nextprime: ["resource gmp_nextprime(resource a)", "Finds next prime of a"],
    gmp_or: ["resource gmp_or(resource a, resource b)", "Calculates logical OR of a and b"],
    gmp_perfect_square: ["bool gmp_perfect_square(resource a)", "Checks if a is an exact square"],
    gmp_popcount: ["int gmp_popcount(resource a)", "Calculates the population count of a"],
    gmp_pow: ["resource gmp_pow(resource base, int exp)", "Raise base to power exp"],
    gmp_powm: ["resource gmp_powm(resource base, resource exp, resource mod)", "Raise base to power exp and take result modulo mod"],
    gmp_prob_prime: ["int gmp_prob_prime(resource a[, int reps])", 'Checks if a is "probably prime"'],
    gmp_random: ["resource gmp_random([int limiter])", "Gets random number"],
    gmp_scan0: ["int gmp_scan0(resource a, int start)", "Finds first zero bit"],
    gmp_scan1: ["int gmp_scan1(resource a, int start)", "Finds first non-zero bit"],
    gmp_setbit: ["void gmp_setbit(resource &a, int index[, bool set_clear])", "Sets or clear bit in a"],
    gmp_sign: ["int gmp_sign(resource a)", "Gets the sign of the number"],
    gmp_sqrt: ["resource gmp_sqrt(resource a)", "Takes integer part of square root of a"],
    gmp_sqrtrem: ["array gmp_sqrtrem(resource a)", "Square root with remainder"],
    gmp_strval: ["string gmp_strval(resource gmpnumber [, int base])", "Gets string representation of GMP number"],
    gmp_sub: ["resource gmp_sub(resource a, resource b)", "Subtract b from a"],
    gmp_testbit: ["bool gmp_testbit(resource a, int index)", "Tests if bit is set in a"],
    gmp_xor: ["resource gmp_xor(resource a, resource b)", "Calculates logical exclusive OR of a and b"],
    gmstrftime: ["string gmstrftime(string format [, int timestamp])", "Format a GMT/UCT time/date according to locale settings"],
    grapheme_extract: ["string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])", "Function to extract a sequence of default grapheme clusters"],
    grapheme_stripos: ["int grapheme_stripos(string haystack, string needle [, int offset ])", "Find position of first occurrence of a string within another, ignoring case differences"],
    grapheme_stristr: ["string grapheme_stristr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another"],
    grapheme_strlen: ["int grapheme_strlen(string str)", "Get number of graphemes in a string"],
    grapheme_strpos: ["int grapheme_strpos(string haystack, string needle [, int offset ])", "Find position of first occurrence of a string within another"],
    grapheme_strripos: ["int grapheme_strripos(string haystack, string needle [, int offset])", "Find position of last occurrence of a string within another, ignoring case"],
    grapheme_strrpos: ["int grapheme_strrpos(string haystack, string needle [, int offset])", "Find position of last occurrence of a string within another"],
    grapheme_strstr: ["string grapheme_strstr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another"],
    grapheme_substr: ["string grapheme_substr(string str, int start [, int length])", "Returns part of a string"],
    gregoriantojd: ["int gregoriantojd(int month, int day, int year)", "Converts a gregorian calendar date to julian day count"],
    gzcompress: ["string gzcompress(string data [, int level])", "Gzip-compress a string"],
    gzdeflate: ["string gzdeflate(string data [, int level])", "Gzip-compress a string"],
    gzencode: ["string gzencode(string data [, int level [, int encoding_mode]])", "GZ encode a string"],
    gzfile: ["array gzfile(string filename [, int use_include_path])", "Read und uncompress entire .gz-file into an array"],
    gzinflate: ["string gzinflate(string data [, int length])", "Unzip a gzip-compressed string"],
    gzopen: ["resource gzopen(string filename, string mode [, int use_include_path])", "Open a .gz-file and return a .gz-file pointer"],
    gzuncompress: ["string gzuncompress(string data [, int length])", "Unzip a gzip-compressed string"],
    hash: ["string hash(string algo, string data[, bool raw_output = false])", "Generate a hash of a given input string Returns lowercase hexits by default"],
    hash_algos: ["array hash_algos(void)", "Return a list of registered hashing algorithms"],
    hash_copy: ["resource hash_copy(resource context)", "Copy hash resource"],
    hash_file: ["string hash_file(string algo, string filename[, bool raw_output = false])", "Generate a hash of a given file Returns lowercase hexits by default"],
    hash_final: ["string hash_final(resource context[, bool raw_output=false])", "Output resulting digest"],
    hash_hmac: ["string hash_hmac(string algo, string data, string key[, bool raw_output = false])", "Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default"],
    hash_hmac_file: ["string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])", "Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default"],
    hash_init: ["resource hash_init(string algo[, int options, string key])", "Initialize a hashing context"],
    hash_update: ["bool hash_update(resource context, string data)", "Pump data into the hashing algorithm"],
    hash_update_file: ["bool hash_update_file(resource context, string filename[, resource context])", "Pump data into the hashing algorithm from a file"],
    hash_update_stream: ["int hash_update_stream(resource context, resource handle[, integer length])", "Pump data into the hashing algorithm from an open stream"],
    header: ["void header(string header [, bool replace, [int http_response_code]])", "Sends a raw HTTP header"],
    header_remove: ["void header_remove([string name])", "Removes an HTTP header previously set using header()"],
    headers_list: ["array headers_list(void)", "Return list of headers to be sent / already sent"],
    headers_sent: ["bool headers_sent([string &$file [, int &$line]])", "Returns true if headers have already been sent, false otherwise"],
    hebrev: ["string hebrev(string str [, int max_chars_per_line])", "Converts logical Hebrew text to visual text"],
    hebrevc: ["string hebrevc(string str [, int max_chars_per_line])", "Converts logical Hebrew text to visual text with newline conversion"],
    hexdec: ["int hexdec(string hexadecimal_number)", "Returns the decimal equivalent of the hexadecimal number"],
    highlight_file: ["bool highlight_file(string file_name [, bool return] )", "Syntax highlight a source file"],
    highlight_string: ["bool highlight_string(string string [, bool return] )", "Syntax highlight a string or optionally return it"],
    html_entity_decode: ["string html_entity_decode(string string [, int quote_style][, string charset])", "Convert all HTML entities to their applicable characters"],
    htmlentities: ["string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])", "Convert all applicable characters to HTML entities"],
    htmlspecialchars: ["string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])", "Convert special characters to HTML entities"],
    htmlspecialchars_decode: ["string htmlspecialchars_decode(string string [, int quote_style])", "Convert special HTML entities back to characters"],
    http_build_query: ["string http_build_query(mixed formdata [, string prefix [, string arg_separator]])", "Generates a form-encoded query string from an associative array or object."],
    hypot: ["float hypot(float num1, float num2)", "Returns sqrt(num1*num1 + num2*num2)"],
    ibase_add_user: ["bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", "Add a user to security database"],
    ibase_affected_rows: ["int ibase_affected_rows( [ resource link_identifier ] )", "Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement"],
    ibase_backup: ["mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])", "Initiates a backup task in the service manager and returns immediately"],
    ibase_blob_add: ["bool ibase_blob_add(resource blob_handle, string data)", "Add data into created blob"],
    ibase_blob_cancel: ["bool ibase_blob_cancel(resource blob_handle)", "Cancel creating blob"],
    ibase_blob_close: ["string ibase_blob_close(resource blob_handle)", "Close blob"],
    ibase_blob_create: ["resource ibase_blob_create([resource link_identifier])", "Create blob for adding data"],
    ibase_blob_echo: ["bool ibase_blob_echo([ resource link_identifier, ] string blob_id)", "Output blob contents to browser"],
    ibase_blob_get: ["string ibase_blob_get(resource blob_handle, int len)", "Get len bytes data from open blob"],
    ibase_blob_import: ["string ibase_blob_import([ resource link_identifier, ] resource file)", "Create blob, copy file in it, and close it"],
    ibase_blob_info: ["array ibase_blob_info([ resource link_identifier, ] string blob_id)", "Return blob length and other useful info"],
    ibase_blob_open: ["resource ibase_blob_open([ resource link_identifier, ] string blob_id)", "Open blob for retrieving data parts"],
    ibase_close: ["bool ibase_close([resource link_identifier])", "Close an InterBase connection"],
    ibase_commit: ["bool ibase_commit( resource link_identifier )", "Commit transaction"],
    ibase_commit_ret: ["bool ibase_commit_ret( resource link_identifier )", "Commit transaction and retain the transaction context"],
    ibase_connect: ["resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", "Open a connection to an InterBase database"],
    ibase_db_info: ["string ibase_db_info(resource service_handle, string db, int action [, int argument])", "Request statistics about a database"],
    ibase_delete_user: ["bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", "Delete a user from security database"],
    ibase_drop_db: ["bool ibase_drop_db([resource link_identifier])", "Drop an InterBase database"],
    ibase_errcode: ["int ibase_errcode(void)", "Return error code"],
    ibase_errmsg: ["string ibase_errmsg(void)", "Return error message"],
    ibase_execute: ["mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])", "Execute a previously prepared query"],
    ibase_fetch_assoc: ["array ibase_fetch_assoc(resource result [, int fetch_flags])", "Fetch a row  from the results of a query"],
    ibase_fetch_object: ["object ibase_fetch_object(resource result [, int fetch_flags])", "Fetch a object from the results of a query"],
    ibase_fetch_row: ["array ibase_fetch_row(resource result [, int fetch_flags])", "Fetch a row  from the results of a query"],
    ibase_field_info: ["array ibase_field_info(resource query_result, int field_number)", "Get information about a field"],
    ibase_free_event_handler: ["bool ibase_free_event_handler(resource event)", "Frees the event handler set by ibase_set_event_handler()"],
    ibase_free_query: ["bool ibase_free_query(resource query)", "Free memory used by a query"],
    ibase_free_result: ["bool ibase_free_result(resource result)", "Free the memory used by a result"],
    ibase_gen_id: ["int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])", "Increments the named generator and returns its new value"],
    ibase_maintain_db: ["bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])", "Execute a maintenance command on the database server"],
    ibase_modify_user: ["bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", "Modify a user in security database"],
    ibase_name_result: ["bool ibase_name_result(resource result, string name)", "Assign a name to a result for use with ... WHERE CURRENT OF <name> statements"],
    ibase_num_fields: ["int ibase_num_fields(resource query_result)", "Get the number of fields in result"],
    ibase_num_params: ["int ibase_num_params(resource query)", "Get the number of params in a prepared query"],
    ibase_num_rows: ["int ibase_num_rows( resource result_identifier )", "Return the number of rows that are available in a result"],
    ibase_param_info: ["array ibase_param_info(resource query, int field_number)", "Get information about a parameter"],
    ibase_pconnect: ["resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", "Open a persistent connection to an InterBase database"],
    ibase_prepare: ["resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])", "Prepare a query for later execution"],
    ibase_query: ["mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])", "Execute a query"],
    ibase_restore: ["mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])", "Initiates a restore task in the service manager and returns immediately"],
    ibase_rollback: ["bool ibase_rollback( resource link_identifier )", "Rollback transaction"],
    ibase_rollback_ret: ["bool ibase_rollback_ret( resource link_identifier )", "Rollback transaction and retain the transaction context"],
    ibase_server_info: ["string ibase_server_info(resource service_handle, int action)", "Request information about a database server"],
    ibase_service_attach: ["resource ibase_service_attach(string host, string dba_username, string dba_password)", "Connect to the service manager"],
    ibase_service_detach: ["bool ibase_service_detach(resource service_handle)", "Disconnect from the service manager"],
    ibase_set_event_handler: ["resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])", "Register the callback for handling each of the named events"],
    ibase_trans: ["resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])", "Start a transaction over one or several databases"],
    ibase_wait_event: ["string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])", "Waits for any one of the passed Interbase events to be posted by the database, and returns its name"],
    iconv: ["string iconv(string in_charset, string out_charset, string str)", "Returns str converted to the out_charset character set"],
    iconv_get_encoding: ["mixed iconv_get_encoding([string type])", "Get internal encoding and output encoding for ob_iconv_handler()"],
    iconv_mime_decode: ["string iconv_mime_decode(string encoded_string [, int mode, string charset])", "Decodes a mime header field"],
    iconv_mime_decode_headers: ["array iconv_mime_decode_headers(string headers [, int mode, string charset])", "Decodes multiple mime header fields"],
    iconv_mime_encode: ["string iconv_mime_encode(string field_name, string field_value [, array preference])", "Composes a mime header field with field_name and field_value in a specified scheme"],
    iconv_set_encoding: ["bool iconv_set_encoding(string type, string charset)", "Sets internal encoding and output encoding for ob_iconv_handler()"],
    iconv_strlen: ["int iconv_strlen(string str [, string charset])", "Returns the character count of str"],
    iconv_strpos: ["int iconv_strpos(string haystack, string needle [, int offset [, string charset]])", "Finds position of first occurrence of needle within part of haystack beginning with offset"],
    iconv_strrpos: ["int iconv_strrpos(string haystack, string needle [, string charset])", "Finds position of last occurrence of needle within part of haystack beginning with offset"],
    iconv_substr: ["string iconv_substr(string str, int offset, [int length, string charset])", "Returns specified part of a string"],
    idate: ["int idate(string format [, int timestamp])", "Format a local time/date as integer"],
    idn_to_ascii: ["int idn_to_ascii(string domain[, int options])", "Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC"],
    idn_to_utf8: ["int idn_to_utf8(string domain[, int options])", "Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC"],
    ignore_user_abort: ["int ignore_user_abort([string value])", "Set whether we want to ignore a user abort event or not"],
    image2wbmp: ["bool image2wbmp(resource im [, string filename [, int threshold]])", "Output WBMP image to browser or file"],
    image_type_to_extension: ["string image_type_to_extension(int imagetype [, bool include_dot])", "Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype"],
    image_type_to_mime_type: ["string image_type_to_mime_type(int imagetype)", "Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype"],
    imagealphablending: ["bool imagealphablending(resource im, bool on)", "Turn alpha blending mode on or off for the given image"],
    imageantialias: ["bool imageantialias(resource im, bool on)", "Should antialiased functions used or not"],
    imagearc: ["bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)", "Draw a partial ellipse"],
    imagechar: ["bool imagechar(resource im, int font, int x, int y, string c, int col)", "Draw a character"],
    imagecharup: ["bool imagecharup(resource im, int font, int x, int y, string c, int col)", "Draw a character rotated 90 degrees counter-clockwise"],
    imagecolorallocate: ["int imagecolorallocate(resource im, int red, int green, int blue)", "Allocate a color for an image"],
    imagecolorallocatealpha: ["int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)", "Allocate a color with an alpha level.  Works for true color and palette based images"],
    imagecolorat: ["int imagecolorat(resource im, int x, int y)", "Get the index of the color of a pixel"],
    imagecolorclosest: ["int imagecolorclosest(resource im, int red, int green, int blue)", "Get the index of the closest color to the specified color"],
    imagecolorclosestalpha: ["int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)", "Find the closest matching colour with alpha transparency"],
    imagecolorclosesthwb: ["int imagecolorclosesthwb(resource im, int red, int green, int blue)", "Get the index of the color which has the hue, white and blackness nearest to the given color"],
    imagecolordeallocate: ["bool imagecolordeallocate(resource im, int index)", "De-allocate a color for an image"],
    imagecolorexact: ["int imagecolorexact(resource im, int red, int green, int blue)", "Get the index of the specified color"],
    imagecolorexactalpha: ["int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)", "Find exact match for colour with transparency"],
    imagecolormatch: ["bool imagecolormatch(resource im1, resource im2)", "Makes the colors of the palette version of an image more closely match the true color version"],
    imagecolorresolve: ["int imagecolorresolve(resource im, int red, int green, int blue)", "Get the index of the specified color or its closest possible alternative"],
    imagecolorresolvealpha: ["int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)", "Resolve/Allocate a colour with an alpha level.  Works for true colour and palette based images"],
    imagecolorset: ["void imagecolorset(resource im, int col, int red, int green, int blue)", "Set the color for the specified palette index"],
    imagecolorsforindex: ["array imagecolorsforindex(resource im, int col)", "Get the colors for an index"],
    imagecolorstotal: ["int imagecolorstotal(resource im)", "Find out the number of colors in an image's palette"],
    imagecolortransparent: ["int imagecolortransparent(resource im [, int col])", "Define a color as transparent"],
    imageconvolution: ["resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)", "Apply a 3x3 convolution matrix, using coefficient div and offset"],
    imagecopy: ["bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)", "Copy part of an image"],
    imagecopymerge: ["bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", "Merge one part of an image with another"],
    imagecopymergegray: ["bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", "Merge one part of an image with another"],
    imagecopyresampled: ["bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", "Copy and resize part of an image using resampling to help ensure clarity"],
    imagecopyresized: ["bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", "Copy and resize part of an image"],
    imagecreate: ["resource imagecreate(int x_size, int y_size)", "Create a new image"],
    imagecreatefromgd: ["resource imagecreatefromgd(string filename)", "Create a new image from GD file or URL"],
    imagecreatefromgd2: ["resource imagecreatefromgd2(string filename)", "Create a new image from GD2 file or URL"],
    imagecreatefromgd2part: ["resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)", "Create a new image from a given part of GD2 file or URL"],
    imagecreatefromgif: ["resource imagecreatefromgif(string filename)", "Create a new image from GIF file or URL"],
    imagecreatefromjpeg: ["resource imagecreatefromjpeg(string filename)", "Create a new image from JPEG file or URL"],
    imagecreatefrompng: ["resource imagecreatefrompng(string filename)", "Create a new image from PNG file or URL"],
    imagecreatefromstring: ["resource imagecreatefromstring(string image)", "Create a new image from the image stream in the string"],
    imagecreatefromwbmp: ["resource imagecreatefromwbmp(string filename)", "Create a new image from WBMP file or URL"],
    imagecreatefromxbm: ["resource imagecreatefromxbm(string filename)", "Create a new image from XBM file or URL"],
    imagecreatefromxpm: ["resource imagecreatefromxpm(string filename)", "Create a new image from XPM file or URL"],
    imagecreatetruecolor: ["resource imagecreatetruecolor(int x_size, int y_size)", "Create a new true color image"],
    imagedashedline: ["bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a dashed line"],
    imagedestroy: ["bool imagedestroy(resource im)", "Destroy an image"],
    imageellipse: ["bool imageellipse(resource im, int cx, int cy, int w, int h, int color)", "Draw an ellipse"],
    imagefill: ["bool imagefill(resource im, int x, int y, int col)", "Flood fill"],
    imagefilledarc: ["bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)", "Draw a filled partial ellipse"],
    imagefilledellipse: ["bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)", "Draw an ellipse"],
    imagefilledpolygon: ["bool imagefilledpolygon(resource im, array point, int num_points, int col)", "Draw a filled polygon"],
    imagefilledrectangle: ["bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a filled rectangle"],
    imagefilltoborder: ["bool imagefilltoborder(resource im, int x, int y, int border, int col)", "Flood fill to specific color"],
    imagefilter: ["bool imagefilter(resource src_im, int filtertype, [args] )", "Applies Filter an image using a custom angle"],
    imagefontheight: ["int imagefontheight(int font)", "Get font height"],
    imagefontwidth: ["int imagefontwidth(int font)", "Get font width"],
    imageftbbox: ["array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])", "Give the bounding box of a text using fonts via freetype2"],
    imagefttext: ["array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])", "Write text to the image using fonts via freetype2"],
    imagegammacorrect: ["bool imagegammacorrect(resource im, float inputgamma, float outputgamma)", "Apply a gamma correction to a GD image"],
    imagegd: ["bool imagegd(resource im [, string filename])", "Output GD image to browser or file"],
    imagegd2: ["bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])", "Output GD2 image to browser or file"],
    imagegif: ["bool imagegif(resource im [, string filename])", "Output GIF image to browser or file"],
    imagegrabscreen: ["resource imagegrabscreen()", "Grab a screenshot"],
    imagegrabwindow: ["resource imagegrabwindow(int window_handle [, int client_area])", "Grab a window or its client area using a windows handle (HWND property in COM instance)"],
    imageinterlace: ["int imageinterlace(resource im [, int interlace])", "Enable or disable interlace"],
    imageistruecolor: ["bool imageistruecolor(resource im)", "return true if the image uses truecolor"],
    imagejpeg: ["bool imagejpeg(resource im [, string filename [, int quality]])", "Output JPEG image to browser or file"],
    imagelayereffect: ["bool imagelayereffect(resource im, int effect)", "Set the alpha blending flag to use the bundled libgd layering effects"],
    imageline: ["bool imageline(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a line"],
    imageloadfont: ["int imageloadfont(string filename)", "Load a new font"],
    imagepalettecopy: ["void imagepalettecopy(resource dst, resource src)", "Copy the palette from the src image onto the dst image"],
    imagepng: ["bool imagepng(resource im [, string filename])", "Output PNG image to browser or file"],
    imagepolygon: ["bool imagepolygon(resource im, array point, int num_points, int col)", "Draw a polygon"],
    imagepsbbox: ["array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])", "Return the bounding box needed by a string if rasterized"],
    imagepscopyfont: ["int imagepscopyfont(int font_index)", "Make a copy of a font for purposes like extending or reenconding"],
    imagepsencodefont: ["bool imagepsencodefont(resource font_index, string filename)", "To change a fonts character encoding vector"],
    imagepsextendfont: ["bool imagepsextendfont(resource font_index, float extend)", "Extend or or condense (if extend < 1) a font"],
    imagepsfreefont: ["bool imagepsfreefont(resource font_index)", "Free memory used by a font"],
    imagepsloadfont: ["resource imagepsloadfont(string pathname)", "Load a new font from specified file"],
    imagepsslantfont: ["bool imagepsslantfont(resource font_index, float slant)", "Slant a font"],
    imagepstext: ["array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])", "Rasterize a string over an image"],
    imagerectangle: ["bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a rectangle"],
    imagerotate: ["resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])", "Rotate an image using a custom angle"],
    imagesavealpha: ["bool imagesavealpha(resource im, bool on)", "Include alpha channel to a saved image"],
    imagesetbrush: ["bool imagesetbrush(resource image, resource brush)", 'Set the brush image to $brush when filling $image with the "IMG_COLOR_BRUSHED" color'],
    imagesetpixel: ["bool imagesetpixel(resource im, int x, int y, int col)", "Set a single pixel"],
    imagesetstyle: ["bool imagesetstyle(resource im, array styles)", "Set the line drawing styles for use with imageline and IMG_COLOR_STYLED."],
    imagesetthickness: ["bool imagesetthickness(resource im, int thickness)", "Set line thickness for drawing lines, ellipses, rectangles, polygons etc."],
    imagesettile: ["bool imagesettile(resource image, resource tile)", 'Set the tile image to $tile when filling $image with the "IMG_COLOR_TILED" color'],
    imagestring: ["bool imagestring(resource im, int font, int x, int y, string str, int col)", "Draw a string horizontally"],
    imagestringup: ["bool imagestringup(resource im, int font, int x, int y, string str, int col)", "Draw a string vertically - rotated 90 degrees counter-clockwise"],
    imagesx: ["int imagesx(resource im)", "Get image width"],
    imagesy: ["int imagesy(resource im)", "Get image height"],
    imagetruecolortopalette: ["void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)", "Convert a true colour image to a palette based image with a number of colours, optionally using dithering."],
    imagettfbbox: ["array imagettfbbox(float size, float angle, string font_file, string text)", "Give the bounding box of a text using TrueType fonts"],
    imagettftext: ["array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)", "Write text to the image using a TrueType font"],
    imagetypes: ["int imagetypes(void)", "Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM"],
    imagewbmp: ["bool imagewbmp(resource im [, string filename, [, int foreground]])", "Output WBMP image to browser or file"],
    imagexbm: ["int imagexbm(int im, string filename [, int foreground])", "Output XBM image to browser or file"],
    imap_8bit: ["string imap_8bit(string text)", "Convert an 8-bit string to a quoted-printable string"],
    imap_alerts: ["array imap_alerts(void)", "Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called."],
    imap_append: ["bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])", "Append a new message to a specified mailbox"],
    imap_base64: ["string imap_base64(string text)", "Decode BASE64 encoded text"],
    imap_binary: ["string imap_binary(string text)", "Convert an 8bit string to a base64 string"],
    imap_body: ["string imap_body(resource stream_id, int msg_no [, int options])", "Read the message body"],
    imap_bodystruct: ["object imap_bodystruct(resource stream_id, int msg_no, string section)", "Read the structure of a specified body section of a specific message"],
    imap_check: ["object imap_check(resource stream_id)", "Get mailbox properties"],
    imap_clearflag_full: ["bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])", "Clears flags on messages"],
    imap_close: ["bool imap_close(resource stream_id [, int options])", "Close an IMAP stream"],
    imap_createmailbox: ["bool imap_createmailbox(resource stream_id, string mailbox)", "Create a new mailbox"],
    imap_delete: ["bool imap_delete(resource stream_id, int msg_no [, int options])", "Mark a message for deletion"],
    imap_deletemailbox: ["bool imap_deletemailbox(resource stream_id, string mailbox)", "Delete a mailbox"],
    imap_errors: ["array imap_errors(void)", "Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called."],
    imap_expunge: ["bool imap_expunge(resource stream_id)", "Permanently delete all messages marked for deletion"],
    imap_fetch_overview: ["array imap_fetch_overview(resource stream_id, string sequence [, int options])", "Read an overview of the information in the headers of the given message sequence"],
    imap_fetchbody: ["string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])", "Get a specific body section"],
    imap_fetchheader: ["string imap_fetchheader(resource stream_id, int msg_no [, int options])", "Get the full unfiltered header for a message"],
    imap_fetchstructure: ["object imap_fetchstructure(resource stream_id, int msg_no [, int options])", "Read the full structure of a message"],
    imap_gc: ["bool imap_gc(resource stream_id, int flags)", "This function garbage collects (purges) the cache of entries of a specific type."],
    imap_get_quota: ["array imap_get_quota(resource stream_id, string qroot)", "Returns the quota set to the mailbox account qroot"],
    imap_get_quotaroot: ["array imap_get_quotaroot(resource stream_id, string mbox)", "Returns the quota set to the mailbox account mbox"],
    imap_getacl: ["array imap_getacl(resource stream_id, string mailbox)", "Gets the ACL for a given mailbox"],
    imap_getmailboxes: ["array imap_getmailboxes(resource stream_id, string ref, string pattern)", "Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter"],
    imap_getsubscribed: ["array imap_getsubscribed(resource stream_id, string ref, string pattern)", "Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()"],
    imap_headerinfo: ["object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])", "Read the headers of the message"],
    imap_headers: ["array imap_headers(resource stream_id)", "Returns headers for all messages in a mailbox"],
    imap_last_error: ["string imap_last_error(void)", "Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call."],
    imap_list: ["array imap_list(resource stream_id, string ref, string pattern)", "Read the list of mailboxes"],
    imap_listscan: ["array imap_listscan(resource stream_id, string ref, string pattern, string content)", "Read list of mailboxes containing a certain string"],
    imap_lsub: ["array imap_lsub(resource stream_id, string ref, string pattern)", "Return a list of subscribed mailboxes"],
    imap_mail: ["bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])", "Send an email message"],
    imap_mail_compose: ["string imap_mail_compose(array envelope, array body)", "Create a MIME message based on given envelope and body sections"],
    imap_mail_copy: ["bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])", "Copy specified message to a mailbox"],
    imap_mail_move: ["bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])", "Move specified message to a mailbox"],
    imap_mailboxmsginfo: ["object imap_mailboxmsginfo(resource stream_id)", "Returns info about the current mailbox"],
    imap_mime_header_decode: ["array imap_mime_header_decode(string str)", "Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'"],
    imap_msgno: ["int imap_msgno(resource stream_id, int unique_msg_id)", "Get the sequence number associated with a UID"],
    imap_mutf7_to_utf8: ["string imap_mutf7_to_utf8(string in)", "Decode a modified UTF-7 string to UTF-8"],
    imap_num_msg: ["int imap_num_msg(resource stream_id)", "Gives the number of messages in the current mailbox"],
    imap_num_recent: ["int imap_num_recent(resource stream_id)", "Gives the number of recent messages in current mailbox"],
    imap_open: ["resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])", "Open an IMAP stream to a mailbox"],
    imap_ping: ["bool imap_ping(resource stream_id)", "Check if the IMAP stream is still active"],
    imap_qprint: ["string imap_qprint(string text)", "Convert a quoted-printable string to an 8-bit string"],
    imap_renamemailbox: ["bool imap_renamemailbox(resource stream_id, string old_name, string new_name)", "Rename a mailbox"],
    imap_reopen: ["bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])", "Reopen an IMAP stream to a new mailbox"],
    imap_rfc822_parse_adrlist: ["array imap_rfc822_parse_adrlist(string address_string, string default_host)", "Parses an address string"],
    imap_rfc822_parse_headers: ["object imap_rfc822_parse_headers(string headers [, string default_host])", "Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()"],
    imap_rfc822_write_address: ["string imap_rfc822_write_address(string mailbox, string host, string personal)", "Returns a properly formatted email address given the mailbox, host, and personal info"],
    imap_savebody: ['bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = ""[, int options = 0]])', "Save a specific body section to a file"],
    imap_search: ["array imap_search(resource stream_id, string criteria [, int options [, string charset]])", "Return a list of messages matching the given criteria"],
    imap_set_quota: ["bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)", "Will set the quota for qroot mailbox"],
    imap_setacl: ["bool imap_setacl(resource stream_id, string mailbox, string id, string rights)", "Sets the ACL for a given mailbox"],
    imap_setflag_full: ["bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])", "Sets flags on messages"],
    imap_sort: ["array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])", "Sort an array of message headers, optionally including only messages that meet specified criteria."],
    imap_status: ["object imap_status(resource stream_id, string mailbox, int options)", "Get status info from a mailbox"],
    imap_subscribe: ["bool imap_subscribe(resource stream_id, string mailbox)", "Subscribe to a mailbox"],
    imap_thread: ["array imap_thread(resource stream_id [, int options])", "Return threaded by REFERENCES tree"],
    imap_timeout: ["mixed imap_timeout(int timeout_type [, int timeout])", "Set or fetch imap timeout"],
    imap_uid: ["int imap_uid(resource stream_id, int msg_no)", "Get the unique message id associated with a standard sequential message number"],
    imap_undelete: ["bool imap_undelete(resource stream_id, int msg_no [, int flags])", "Remove the delete flag from a message"],
    imap_unsubscribe: ["bool imap_unsubscribe(resource stream_id, string mailbox)", "Unsubscribe from a mailbox"],
    imap_utf7_decode: ["string imap_utf7_decode(string buf)", "Decode a modified UTF-7 string"],
    imap_utf7_encode: ["string imap_utf7_encode(string buf)", "Encode a string in modified UTF-7"],
    imap_utf8: ["string imap_utf8(string mime_encoded_text)", "Convert a mime-encoded text to UTF-8"],
    imap_utf8_to_mutf7: ["string imap_utf8_to_mutf7(string in)", "Encode a UTF-8 string to modified UTF-7"],
    implode: ["string implode([string glue,] array pieces)", "Joins array elements placing glue string between items and return one string"],
    import_request_variables: ["bool import_request_variables(string types [, string prefix])", "Import GET/POST/Cookie variables into the global scope"],
    in_array: ["bool in_array(mixed needle, array haystack [, bool strict])", "Checks if the given value exists in the array"],
    include: ["bool include(string path)", "Includes and evaluates the specified file"],
    include_once: ["bool include_once(string path)", "Includes and evaluates the specified file"],
    inet_ntop: ["string inet_ntop(string in_addr)", "Converts a packed inet address to a human readable IP address string"],
    inet_pton: ["string inet_pton(string ip_address)", "Converts a human readable IP address to a packed binary string"],
    ini_get: ["string ini_get(string varname)", "Get a configuration option"],
    ini_get_all: ["array ini_get_all([string extension[, bool details = true]])", "Get all configuration options"],
    ini_restore: ["void ini_restore(string varname)", "Restore the value of a configuration option specified by varname"],
    ini_set: ["string ini_set(string varname, string newvalue)", "Set a configuration option, returns false on error and the old value of the configuration option on success"],
    interface_exists: ["bool interface_exists(string classname [, bool autoload])", "Checks if the class exists"],
    intl_error_name: ["string intl_error_name()", "* Return a string for a given error code.  * The string will be the same as the name of the error code constant."],
    intl_get_error_code: ["int intl_get_error_code()", "* Get code of the last occured error."],
    intl_get_error_message: ["string intl_get_error_message()", "* Get text description of the last occured error."],
    intl_is_failure: ["bool intl_is_failure()", "* Check whether the given error code indicates a failure.  * Returns true if it does, and false if the code  * indicates success or a warning."],
    intval: ["int intval(mixed var [, int base])", "Get the integer value of a variable using the optional base for the conversion"],
    ip2long: ["int ip2long(string ip_address)", "Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address"],
    iptcembed: ["array iptcembed(string iptcdata, string jpeg_file_name [, int spool])", "Embed binary IPTC data into a JPEG image."],
    iptcparse: ["array iptcparse(string iptcdata)", "Parse binary IPTC-data into associative array"],
    is_a: ["bool is_a(object object, string class_name)", "Returns true if the object is of this class or has this class as one of its parents"],
    is_array: ["bool is_array(mixed var)", "Returns true if variable is an array"],
    is_bool: ["bool is_bool(mixed var)", "Returns true if variable is a boolean"],
    is_callable: ["bool is_callable(mixed var [, bool syntax_only [, string callable_name]])", "Returns true if var is callable."],
    is_dir: ["bool is_dir(string filename)", "Returns true if file is directory"],
    is_executable: ["bool is_executable(string filename)", "Returns true if file is executable"],
    is_file: ["bool is_file(string filename)", "Returns true if file is a regular file"],
    is_finite: ["bool is_finite(float val)", "Returns whether argument is finite"],
    is_float: ["bool is_float(mixed var)", "Returns true if variable is float point"],
    is_infinite: ["bool is_infinite(float val)", "Returns whether argument is infinite"],
    is_link: ["bool is_link(string filename)", "Returns true if file is symbolic link"],
    is_long: ["bool is_long(mixed var)", "Returns true if variable is a long (integer)"],
    is_nan: ["bool is_nan(float val)", "Returns whether argument is not a number"],
    is_null: ["bool is_null(mixed var)", "Returns true if variable is null"],
    is_numeric: ["bool is_numeric(mixed value)", "Returns true if value is a number or a numeric string"],
    is_object: ["bool is_object(mixed var)", "Returns true if variable is an object"],
    is_readable: ["bool is_readable(string filename)", "Returns true if file can be read"],
    is_resource: ["bool is_resource(mixed var)", "Returns true if variable is a resource"],
    is_scalar: ["bool is_scalar(mixed value)", "Returns true if value is a scalar"],
    is_string: ["bool is_string(mixed var)", "Returns true if variable is a string"],
    is_subclass_of: ["bool is_subclass_of(object object, string class_name)", "Returns true if the object has this class as one of its parents"],
    is_uploaded_file: ["bool is_uploaded_file(string path)", "Check if file was created by rfc1867 upload"],
    is_writable: ["bool is_writable(string filename)", "Returns true if file can be written"],
    isset: ["bool isset(mixed var [, mixed var])", "Determine whether a variable is set"],
    iterator_apply: ["int iterator_apply(Traversable it, mixed function [, mixed params])", "Calls a function for every element in an iterator"],
    iterator_count: ["int iterator_count(Traversable it)", "Count the elements in an iterator"],
    iterator_to_array: ["array iterator_to_array(Traversable it [, bool use_keys = true])", "Copy the iterator into an array"],
    jddayofweek: ["mixed jddayofweek(int juliandaycount [, int mode])", "Returns name or number of day of week from julian day count"],
    jdmonthname: ["string jdmonthname(int juliandaycount, int mode)", "Returns name of month for julian day count"],
    jdtofrench: ["string jdtofrench(int juliandaycount)", "Converts a julian day count to a french republic calendar date"],
    jdtogregorian: ["string jdtogregorian(int juliandaycount)", "Converts a julian day count to a gregorian calendar date"],
    jdtojewish: ["string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])", "Converts a julian day count to a jewish calendar date"],
    jdtojulian: ["string jdtojulian(int juliandaycount)", "Convert a julian day count to a julian calendar date"],
    jdtounix: ["int jdtounix(int jday)", "Convert Julian Day to UNIX timestamp"],
    jewishtojd: ["int jewishtojd(int month, int day, int year)", "Converts a jewish calendar date to a julian day count"],
    join: ["string join(array src, string glue)", "An alias for implode"],
    jpeg2wbmp: ["bool jpeg2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)", "Convert JPEG image to WBMP image"],
    json_decode: ["mixed json_decode(string json [, bool assoc [, long depth]])", "Decodes the JSON representation into a PHP value"],
    json_encode: ["string json_encode(mixed data [, int options])", "Returns the JSON representation of a value"],
    json_last_error: ["int json_last_error()", "Returns the error code of the last json_decode()."],
    juliantojd: ["int juliantojd(int month, int day, int year)", "Converts a julian calendar date to julian day count"],
    key: ["mixed key(array array_arg)", "Return the key of the element currently pointed to by the internal array pointer"],
    krsort: ["bool krsort(array &array_arg [, int sort_flags])", "Sort an array by key value in reverse order"],
    ksort: ["bool ksort(array &array_arg [, int sort_flags])", "Sort an array by key"],
    lcfirst: ["string lcfirst(string str)", "Make a string's first character lowercase"],
    lcg_value: ["float lcg_value()", "Returns a value from the combined linear congruential generator"],
    lchgrp: ["bool lchgrp(string filename, mixed group)", "Change symlink group"],
    ldap_8859_to_t61: ["string ldap_8859_to_t61(string value)", "Translate 8859 characters to t61 characters"],
    ldap_add: ["bool ldap_add(resource link, string dn, array entry)", "Add entries to LDAP directory"],
    ldap_bind: ["bool ldap_bind(resource link [, string dn [, string password]])", "Bind to LDAP directory"],
    ldap_compare: ["bool ldap_compare(resource link, string dn, string attr, string value)", "Determine if an entry has a specific value for one of its attributes"],
    ldap_connect: ["resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])", "Connect to an LDAP server"],
    ldap_count_entries: ["int ldap_count_entries(resource link, resource result)", "Count the number of entries in a search result"],
    ldap_delete: ["bool ldap_delete(resource link, string dn)", "Delete an entry from a directory"],
    ldap_dn2ufn: ["string ldap_dn2ufn(string dn)", "Convert DN to User Friendly Naming format"],
    ldap_err2str: ["string ldap_err2str(int errno)", "Convert error number to error string"],
    ldap_errno: ["int ldap_errno(resource link)", "Get the current ldap error number"],
    ldap_error: ["string ldap_error(resource link)", "Get the current ldap error string"],
    ldap_explode_dn: ["array ldap_explode_dn(string dn, int with_attrib)", "Splits DN into its component parts"],
    ldap_first_attribute: ["string ldap_first_attribute(resource link, resource result_entry)", "Return first attribute"],
    ldap_first_entry: ["resource ldap_first_entry(resource link, resource result)", "Return first result id"],
    ldap_first_reference: ["resource ldap_first_reference(resource link, resource result)", "Return first reference"],
    ldap_free_result: ["bool ldap_free_result(resource result)", "Free result memory"],
    ldap_get_attributes: ["array ldap_get_attributes(resource link, resource result_entry)", "Get attributes from a search result entry"],
    ldap_get_dn: ["string ldap_get_dn(resource link, resource result_entry)", "Get the DN of a result entry"],
    ldap_get_entries: ["array ldap_get_entries(resource link, resource result)", "Get all result entries"],
    ldap_get_option: ["bool ldap_get_option(resource link, int option, mixed retval)", "Get the current value of various session-wide parameters"],
    ldap_get_values_len: ["array ldap_get_values_len(resource link, resource result_entry, string attribute)", "Get all values with lengths from a result entry"],
    ldap_list: ["resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", "Single-level search"],
    ldap_mod_add: ["bool ldap_mod_add(resource link, string dn, array entry)", "Add attribute values to current"],
    ldap_mod_del: ["bool ldap_mod_del(resource link, string dn, array entry)", "Delete attribute values"],
    ldap_mod_replace: ["bool ldap_mod_replace(resource link, string dn, array entry)", "Replace attribute values with new ones"],
    ldap_next_attribute: ["string ldap_next_attribute(resource link, resource result_entry)", "Get the next attribute in result"],
    ldap_next_entry: ["resource ldap_next_entry(resource link, resource result_entry)", "Get next result entry"],
    ldap_next_reference: ["resource ldap_next_reference(resource link, resource reference_entry)", "Get next reference"],
    ldap_parse_reference: ["bool ldap_parse_reference(resource link, resource reference_entry, array referrals)", "Extract information from reference entry"],
    ldap_parse_result: ["bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)", "Extract information from result"],
    ldap_read: ["resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", "Read an entry"],
    ldap_rename: ["bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn);", "Modify the name of an entry"],
    ldap_sasl_bind: ["bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])", "Bind to LDAP directory using SASL"],
    ldap_search: ["resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", "Search LDAP tree under base_dn"],
    ldap_set_option: ["bool ldap_set_option(resource link, int option, mixed newval)", "Set the value of various session-wide parameters"],
    ldap_set_rebind_proc: ["bool ldap_set_rebind_proc(resource link, string callback)", "Set a callback function to do re-binds on referral chasing."],
    ldap_sort: ["bool ldap_sort(resource link, resource result, string sortfilter)", "Sort LDAP result entries"],
    ldap_start_tls: ["bool ldap_start_tls(resource link)", "Start TLS"],
    ldap_t61_to_8859: ["string ldap_t61_to_8859(string value)", "Translate t61 characters to 8859 characters"],
    ldap_unbind: ["bool ldap_unbind(resource link)", "Unbind from LDAP directory"],
    leak: ["void leak(int num_bytes=3)", "Cause an intentional memory leak, for testing/debugging purposes"],
    levenshtein: ["int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])", "Calculate Levenshtein distance between two strings"],
    libxml_clear_errors: ["void libxml_clear_errors()", "Clear last error from libxml"],
    libxml_disable_entity_loader: ["bool libxml_disable_entity_loader([boolean disable])", "Disable/Enable ability to load external entities"],
    libxml_get_errors: ["object libxml_get_errors()", "Retrieve array of errors"],
    libxml_get_last_error: ["object libxml_get_last_error()", "Retrieve last error from libxml"],
    libxml_set_streams_context: ["void libxml_set_streams_context(resource streams_context)", "Set the streams context for the next libxml document load or write"],
    libxml_use_internal_errors: ["bool libxml_use_internal_errors([boolean use_errors])", "Disable libxml errors and allow user to fetch error information as needed"],
    link: ["int link(string target, string link)", "Create a hard link"],
    linkinfo: ["int linkinfo(string filename)", "Returns the st_dev field of the UNIX C stat structure describing the link"],
    litespeed_request_headers: ["array litespeed_request_headers(void)", "Fetch all HTTP request headers"],
    litespeed_response_headers: ["array litespeed_response_headers(void)", "Fetch all HTTP response headers"],
    locale_accept_from_http: ["string locale_accept_from_http(string $http_accept)", null],
    locale_canonicalize: ["static string locale_canonicalize(Locale $loc, string $locale)", "* @param string $locale The locale string to canonicalize"],
    locale_filter_matches: ["boolean locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])", "* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm"],
    locale_get_all_variants: ["static array locale_get_all_variants($locale)", "* gets an array containing the list of variants, or null"],
    locale_get_default: ["static string locale_get_default( )", "Get default locale"],
    locale_get_keywords: ["static array locale_get_keywords(string $locale) {", "* return an associative array containing keyword-value  * pairs for this locale. The keys are keys to the array (doh!)"],
    locale_get_primary_language: ["static string locale_get_primary_language($locale)", "* gets the primary language for the $locale"],
    locale_get_region: ["static string locale_get_region($locale)", "* gets the region for the $locale"],
    locale_get_script: ["static string locale_get_script($locale)", "* gets the script for the $locale"],
    locale_lookup: ["string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])", "* Searchs the items in $langtag for the best match to the language * range"],
    locale_set_default: ["static string locale_set_default( string $locale )", "Set default locale"],
    localeconv: ["array localeconv(void)", "Returns numeric formatting information based on the current locale"],
    localtime: ["array localtime([int timestamp [, bool associative_array]])", "Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array"],
    log: ["float log(float number, [float base])", "Returns the natural logarithm of the number, or the base log if base is specified"],
    log10: ["float log10(float number)", "Returns the base-10 logarithm of the number"],
    log1p: ["float log1p(float number)", "Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero"],
    long2ip: ["string long2ip(int proper_address)", "Converts an (IPv4) Internet network address into a string in Internet standard dotted format"],
    lstat: ["array lstat(string filename)", "Give information about a file or symbolic link"],
    ltrim: ["string ltrim(string str [, string character_mask])", "Strips whitespace from the beginning of a string"],
    mail: ["int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", "Send an email message"],
    max: ["mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])", "Return the highest value in an array or a series of arguments"],
    mb_check_encoding: ["bool mb_check_encoding([string var[, string encoding]])", "Check if the string is valid for the specified encoding"],
    mb_convert_case: ["string mb_convert_case(string sourcestring, int mode [, string encoding])", "Returns a case-folded version of sourcestring"],
    mb_convert_encoding: ["string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])", "Returns converted string in desired encoding"],
    mb_convert_kana: ["string mb_convert_kana(string str [, string option] [, string encoding])", "Conversion between full-width character and half-width character (Japanese)"],
    mb_convert_variables: ["string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])", "Converts the string resource in variables to desired encoding"],
    mb_decode_mimeheader: ["string mb_decode_mimeheader(string string)", 'Decodes the MIME "encoded-word" in the string'],
    mb_decode_numericentity: ["string mb_decode_numericentity(string string, array convmap [, string encoding])", "Converts HTML numeric entities to character code"],
    mb_detect_encoding: ["string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])", "Encodings of the given string is returned (as a string)"],
    mb_detect_order: ["bool|array mb_detect_order([mixed encoding-list])", "Sets the current detect_order or Return the current detect_order as a array"],
    mb_encode_mimeheader: ["string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])", 'Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?='],
    mb_encode_numericentity: ["string mb_encode_numericentity(string string, array convmap [, string encoding])", "Converts specified characters to HTML numeric entities"],
    mb_encoding_aliases: ["array mb_encoding_aliases(string encoding)", "Returns an array of the aliases of a given encoding name"],
    mb_ereg: ["int mb_ereg(string pattern, string string [, array registers])", "Regular expression match for multibyte string"],
    mb_ereg_match: ["bool mb_ereg_match(string pattern, string string [,string option])", "Regular expression match for multibyte string"],
    mb_ereg_replace: ["string mb_ereg_replace(string pattern, string replacement, string string [, string option])", "Replace regular expression for multibyte string"],
    mb_ereg_search: ["bool mb_ereg_search([string pattern[, string option]])", "Regular expression search for multibyte string"],
    mb_ereg_search_getpos: ["int mb_ereg_search_getpos(void)", "Get search start position"],
    mb_ereg_search_getregs: ["array mb_ereg_search_getregs(void)", "Get matched substring of the last time"],
    mb_ereg_search_init: ["bool mb_ereg_search_init(string string [, string pattern[, string option]])", "Initialize string and regular expression for search."],
    mb_ereg_search_pos: ["array mb_ereg_search_pos([string pattern[, string option]])", "Regular expression search for multibyte string"],
    mb_ereg_search_regs: ["array mb_ereg_search_regs([string pattern[, string option]])", "Regular expression search for multibyte string"],
    mb_ereg_search_setpos: ["bool mb_ereg_search_setpos(int position)", "Set search start position"],
    mb_eregi: ["int mb_eregi(string pattern, string string [, array registers])", "Case-insensitive regular expression match for multibyte string"],
    mb_eregi_replace: ["string mb_eregi_replace(string pattern, string replacement, string string)", "Case insensitive replace regular expression for multibyte string"],
    mb_get_info: ["mixed mb_get_info([string type])", "Returns the current settings of mbstring"],
    mb_http_input: ["mixed mb_http_input([string type])", "Returns the input encoding"],
    mb_http_output: ["string mb_http_output([string encoding])", "Sets the current output_encoding or returns the current output_encoding as a string"],
    mb_internal_encoding: ["string mb_internal_encoding([string encoding])", "Sets the current internal encoding or Returns the current internal encoding as a string"],
    mb_language: ["string mb_language([string language])", "Sets the current language or Returns the current language as a string"],
    mb_list_encodings: ["mixed mb_list_encodings()", "Returns an array of all supported entity encodings"],
    mb_output_handler: ["string mb_output_handler(string contents, int status)", "Returns string in output buffer converted to the http_output encoding"],
    mb_parse_str: ["bool mb_parse_str(string encoded_string [, array result])", "Parses GET/POST/COOKIE data and sets global variables"],
    mb_preferred_mime_name: ["string mb_preferred_mime_name(string encoding)", "Return the preferred MIME name (charset) as a string"],
    mb_regex_encoding: ["string mb_regex_encoding([string encoding])", "Returns the current encoding for regex as a string."],
    mb_regex_set_options: ["string mb_regex_set_options([string options])", "Set or get the default options for mbregex functions"],
    mb_send_mail: ["int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", "*  Sends an email message with MIME scheme"],
    mb_split: ["array mb_split(string pattern, string string [, int limit])", "split multibyte string into array by regular expression"],
    mb_strcut: ["string mb_strcut(string str, int start [, int length [, string encoding]])", "Returns part of a string"],
    mb_strimwidth: ["string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])", "Trim the string in terminal width"],
    mb_stripos: ["int mb_stripos(string haystack, string needle [, int offset [, string encoding]])", "Finds position of first occurrence of a string within another, case insensitive"],
    mb_stristr: ["string mb_stristr(string haystack, string needle[, bool part[, string encoding]])", "Finds first occurrence of a string within another, case insensitive"],
    mb_strlen: ["int mb_strlen(string str [, string encoding])", "Get character numbers of a string"],
    mb_strpos: ["int mb_strpos(string haystack, string needle [, int offset [, string encoding]])", "Find position of first occurrence of a string within another"],
    mb_strrchr: ["string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])", "Finds the last occurrence of a character in a string within another"],
    mb_strrichr: ["string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])", "Finds the last occurrence of a character in a string within another, case insensitive"],
    mb_strripos: ["int mb_strripos(string haystack, string needle [, int offset [, string encoding]])", "Finds position of last occurrence of a string within another, case insensitive"],
    mb_strrpos: ["int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])", "Find position of last occurrence of a string within another"],
    mb_strstr: ["string mb_strstr(string haystack, string needle[, bool part[, string encoding]])", "Finds first occurrence of a string within another"],
    mb_strtolower: ["string mb_strtolower(string sourcestring [, string encoding])", "*  Returns a lowercased version of sourcestring"],
    mb_strtoupper: ["string mb_strtoupper(string sourcestring [, string encoding])", "*  Returns a uppercased version of sourcestring"],
    mb_strwidth: ["int mb_strwidth(string str [, string encoding])", "Gets terminal width of a string"],
    mb_substitute_character: ["mixed mb_substitute_character([mixed substchar])", "Sets the current substitute_character or returns the current substitute_character"],
    mb_substr: ["string mb_substr(string str, int start [, int length [, string encoding]])", "Returns part of a string"],
    mb_substr_count: ["int mb_substr_count(string haystack, string needle [, string encoding])", "Count the number of substring occurrences"],
    mcrypt_cbc: ["string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)", "CBC crypt/decrypt data using key key with cipher cipher starting with iv"],
    mcrypt_cfb: ["string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)", "CFB crypt/decrypt data using key key with cipher cipher starting with iv"],
    mcrypt_create_iv: ["string mcrypt_create_iv(int size, int source)", "Create an initialization vector (IV)"],
    mcrypt_decrypt: ["string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)", "OFB crypt/decrypt data using key key with cipher cipher starting with iv"],
    mcrypt_ecb: ["string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)", "ECB crypt/decrypt data using key key with cipher cipher starting with iv"],
    mcrypt_enc_get_algorithms_name: ["string mcrypt_enc_get_algorithms_name(resource td)", "Returns the name of the algorithm specified by the descriptor td"],
    mcrypt_enc_get_block_size: ["int mcrypt_enc_get_block_size(resource td)", "Returns the block size of the cipher specified by the descriptor td"],
    mcrypt_enc_get_iv_size: ["int mcrypt_enc_get_iv_size(resource td)", "Returns the size of the IV in bytes of the algorithm specified by the descriptor td"],
    mcrypt_enc_get_key_size: ["int mcrypt_enc_get_key_size(resource td)", "Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td"],
    mcrypt_enc_get_modes_name: ["string mcrypt_enc_get_modes_name(resource td)", "Returns the name of the mode specified by the descriptor td"],
    mcrypt_enc_get_supported_key_sizes: ["array mcrypt_enc_get_supported_key_sizes(resource td)", "This function decrypts the crypttext"],
    mcrypt_enc_is_block_algorithm: ["bool mcrypt_enc_is_block_algorithm(resource td)", "Returns TRUE if the alrogithm is a block algorithms"],
    mcrypt_enc_is_block_algorithm_mode: ["bool mcrypt_enc_is_block_algorithm_mode(resource td)", "Returns TRUE if the mode is for use with block algorithms"],
    mcrypt_enc_is_block_mode: ["bool mcrypt_enc_is_block_mode(resource td)", "Returns TRUE if the mode outputs blocks"],
    mcrypt_enc_self_test: ["int mcrypt_enc_self_test(resource td)", "This function runs the self test on the algorithm specified by the descriptor td"],
    mcrypt_encrypt: ["string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)", "OFB crypt/decrypt data using key key with cipher cipher starting with iv"],
    mcrypt_generic: ["string mcrypt_generic(resource td, string data)", "This function encrypts the plaintext"],
    mcrypt_generic_deinit: ["bool mcrypt_generic_deinit(resource td)", "This function terminates encrypt specified by the descriptor td"],
    mcrypt_generic_init: ["int mcrypt_generic_init(resource td, string key, string iv)", "This function initializes all buffers for the specific module"],
    mcrypt_get_block_size: ["int mcrypt_get_block_size(string cipher, string module)", "Get the key size of cipher"],
    mcrypt_get_cipher_name: ["string mcrypt_get_cipher_name(string cipher)", "Get the key size of cipher"],
    mcrypt_get_iv_size: ["int mcrypt_get_iv_size(string cipher, string module)", "Get the IV size of cipher (Usually the same as the blocksize)"],
    mcrypt_get_key_size: ["int mcrypt_get_key_size(string cipher, string module)", "Get the key size of cipher"],
    mcrypt_list_algorithms: ["array mcrypt_list_algorithms([string lib_dir])", 'List all algorithms in "module_dir"'],
    mcrypt_list_modes: ["array mcrypt_list_modes([string lib_dir])", 'List all modes "module_dir"'],
    mcrypt_module_close: ["bool mcrypt_module_close(resource td)", "Free the descriptor td"],
    mcrypt_module_get_algo_block_size: ["int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])", "Returns the block size of the algorithm"],
    mcrypt_module_get_algo_key_size: ["int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])", "Returns the maximum supported key size of the algorithm"],
    mcrypt_module_get_supported_key_sizes: ["array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])", "This function decrypts the crypttext"],
    mcrypt_module_is_block_algorithm: ["bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])", "Returns TRUE if the algorithm is a block algorithm"],
    mcrypt_module_is_block_algorithm_mode: ["bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])", "Returns TRUE if the mode is for use with block algorithms"],
    mcrypt_module_is_block_mode: ["bool mcrypt_module_is_block_mode(string mode [, string lib_dir])", "Returns TRUE if the mode outputs blocks of bytes"],
    mcrypt_module_open: ["resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)", "Opens the module of the algorithm and the mode to be used"],
    mcrypt_module_self_test: ["bool mcrypt_module_self_test(string algorithm [, string lib_dir])", 'Does a self test of the module "module"'],
    mcrypt_ofb: ["string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)", "OFB crypt/decrypt data using key key with cipher cipher starting with iv"],
    md5: ["string md5(string str, [ bool raw_output])", "Calculate the md5 hash of a string"],
    md5_file: ["string md5_file(string filename [, bool raw_output])", "Calculate the md5 hash of given filename"],
    mdecrypt_generic: ["string mdecrypt_generic(resource td, string data)", "This function decrypts the plaintext"],
    memory_get_peak_usage: ["int memory_get_peak_usage([real_usage])", "Returns the peak allocated by PHP memory"],
    memory_get_usage: ["int memory_get_usage([real_usage])", "Returns the allocated by PHP memory"],
    metaphone: ["string metaphone(string text[, int phones])", "Break english phrases down into their phonemes"],
    method_exists: ["bool method_exists(object object, string method)", "Checks if the class method exists"],
    mhash: ["string mhash(int hash, string data [, string key])", "Hash data with hash"],
    mhash_count: ["int mhash_count(void)", "Gets the number of available hashes"],
    mhash_get_block_size: ["int mhash_get_block_size(int hash)", "Gets the block size of hash"],
    mhash_get_hash_name: ["string mhash_get_hash_name(int hash)", "Gets the name of hash"],
    mhash_keygen_s2k: ["string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)", "Generates a key using hash functions"],
    microtime: ["mixed microtime([bool get_as_float])", "Returns either a string or a float containing the current time in seconds and microseconds"],
    mime_content_type: ["string mime_content_type(string filename|resource stream)", "Return content-type for file"],
    min: ["mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])", "Return the lowest value in an array or a series of arguments"],
    mkdir: ["bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])", "Create a directory"],
    mktime: ["int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", "Get UNIX timestamp for a date"],
    money_format: ["string money_format(string format , float value)", "Convert monetary value(s) to string"],
    move_uploaded_file: ["bool move_uploaded_file(string path, string new_path)", "Move a file if and only if it was created by an upload"],
    msg_get_queue: ["resource msg_get_queue(int key [, int perms])", "Attach to a message queue"],
    msg_queue_exists: ["bool msg_queue_exists(int key)", "Check whether a message queue exists"],
    msg_receive: ["mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])", "Send a message of type msgtype (must be > 0) to a message queue"],
    msg_remove_queue: ["bool msg_remove_queue(resource queue)", "Destroy the queue"],
    msg_send: ["bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])", "Send a message of type msgtype (must be > 0) to a message queue"],
    msg_set_queue: ["bool msg_set_queue(resource queue, array data)", "Set information for a message queue"],
    msg_stat_queue: ["array msg_stat_queue(resource queue)", "Returns information about a message queue"],
    msgfmt_create: ["MessageFormatter msgfmt_create( string $locale, string $pattern )", "* Create formatter."],
    msgfmt_format: ["mixed msgfmt_format( MessageFormatter $nf, array $args )", "* Format a message."],
    msgfmt_format_message: ["mixed msgfmt_format_message( string $locale, string $pattern, array $args )", "* Format a message."],
    msgfmt_get_error_code: ["int msgfmt_get_error_code( MessageFormatter $nf )", "* Get formatter's last error code."],
    msgfmt_get_error_message: ["string msgfmt_get_error_message( MessageFormatter $coll )", "* Get text description for formatter's last error code."],
    msgfmt_get_locale: ["string msgfmt_get_locale(MessageFormatter $mf)", "* Get formatter locale."],
    msgfmt_get_pattern: ["string msgfmt_get_pattern( MessageFormatter $mf )", "* Get formatter pattern."],
    msgfmt_parse: ["array msgfmt_parse( MessageFormatter $nf, string $source )", "* Parse a message."],
    msgfmt_set_pattern: ["bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )", "* Set formatter pattern."],
    mssql_bind: ["bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])", "Adds a parameter to a stored procedure or a remote stored procedure"],
    mssql_close: ["bool mssql_close([resource conn_id])", "Closes a connection to a MS-SQL server"],
    mssql_connect: ["int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])", "Establishes a connection to a MS-SQL server"],
    mssql_data_seek: ["bool mssql_data_seek(resource result_id, int offset)", "Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number"],
    mssql_execute: ["mixed mssql_execute(resource stmt [, bool skip_results = false])", "Executes a stored procedure on a MS-SQL server database"],
    mssql_fetch_array: ["array mssql_fetch_array(resource result_id [, int result_type])", "Returns an associative array of the current row in the result set specified by result_id"],
    mssql_fetch_assoc: ["array mssql_fetch_assoc(resource result_id)", "Returns an associative array of the current row in the result set specified by result_id"],
    mssql_fetch_batch: ["int mssql_fetch_batch(resource result_index)", "Returns the next batch of records"],
    mssql_fetch_field: ["object mssql_fetch_field(resource result_id [, int offset])", "Gets information about certain fields in a query result"],
    mssql_fetch_object: ["object mssql_fetch_object(resource result_id)", "Returns a pseudo-object of the current row in the result set specified by result_id"],
    mssql_fetch_row: ["array mssql_fetch_row(resource result_id)", "Returns an array of the current row in the result set specified by result_id"],
    mssql_field_length: ["int mssql_field_length(resource result_id [, int offset])", "Get the length of a MS-SQL field"],
    mssql_field_name: ["string mssql_field_name(resource result_id [, int offset])", "Returns the name of the field given by offset in the result set given by result_id"],
    mssql_field_seek: ["bool mssql_field_seek(resource result_id, int offset)", "Seeks to the specified field offset"],
    mssql_field_type: ["string mssql_field_type(resource result_id [, int offset])", "Returns the type of a field"],
    mssql_free_result: ["bool mssql_free_result(resource result_index)", "Free a MS-SQL result index"],
    mssql_free_statement: ["bool mssql_free_statement(resource result_index)", "Free a MS-SQL statement index"],
    mssql_get_last_message: ["string mssql_get_last_message(void)", "Gets the last message from the MS-SQL server"],
    mssql_guid_string: ["string mssql_guid_string(string binary [,bool short_format])", "Converts a 16 byte binary GUID to a string"],
    mssql_init: ["int mssql_init(string sp_name [, resource conn_id])", "Initializes a stored procedure or a remote stored procedure"],
    mssql_min_error_severity: ["void mssql_min_error_severity(int severity)", "Sets the lower error severity"],
    mssql_min_message_severity: ["void mssql_min_message_severity(int severity)", "Sets the lower message severity"],
    mssql_next_result: ["bool mssql_next_result(resource result_id)", "Move the internal result pointer to the next result"],
    mssql_num_fields: ["int mssql_num_fields(resource mssql_result_index)", "Returns the number of fields fetched in from the result id specified"],
    mssql_num_rows: ["int mssql_num_rows(resource mssql_result_index)", "Returns the number of rows fetched in from the result id specified"],
    mssql_pconnect: ["int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])", "Establishes a persistent connection to a MS-SQL server"],
    mssql_query: ["resource mssql_query(string query [, resource conn_id [, int batch_size]])", "Perform an SQL query on a MS-SQL server database"],
    mssql_result: ["string mssql_result(resource result_id, int row, mixed field)", "Returns the contents of one cell from a MS-SQL result set"],
    mssql_rows_affected: ["int mssql_rows_affected(resource conn_id)", "Returns the number of records affected by the query"],
    mssql_select_db: ["bool mssql_select_db(string database_name [, resource conn_id])", "Select a MS-SQL database"],
    mt_getrandmax: ["int mt_getrandmax(void)", "Returns the maximum value a random number from Mersenne Twister can have"],
    mt_rand: ["int mt_rand([int min, int max])", "Returns a random number from Mersenne Twister"],
    mt_srand: ["void mt_srand([int seed])", "Seeds Mersenne Twister random number generator"],
    mysql_affected_rows: ["int mysql_affected_rows([int link_identifier])", "Gets number of affected rows in previous MySQL operation"],
    mysql_client_encoding: ["string mysql_client_encoding([int link_identifier])", "Returns the default character set for the current connection"],
    mysql_close: ["bool mysql_close([int link_identifier])", "Close a MySQL connection"],
    mysql_connect: ["resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])", "Opens a connection to a MySQL Server"],
    mysql_create_db: ["bool mysql_create_db(string database_name [, int link_identifier])", "Create a MySQL database"],
    mysql_data_seek: ["bool mysql_data_seek(resource result, int row_number)", "Move internal result pointer"],
    mysql_db_query: ["resource mysql_db_query(string database_name, string query [, int link_identifier])", "Sends an SQL query to MySQL"],
    mysql_drop_db: ["bool mysql_drop_db(string database_name [, int link_identifier])", "Drops (delete) a MySQL database"],
    mysql_errno: ["int mysql_errno([int link_identifier])", "Returns the number of the error message from previous MySQL operation"],
    mysql_error: ["string mysql_error([int link_identifier])", "Returns the text of the error message from previous MySQL operation"],
    mysql_escape_string: ["string mysql_escape_string(string to_be_escaped)", "Escape string for mysql query"],
    mysql_fetch_array: ["array mysql_fetch_array(resource result [, int result_type])", "Fetch a result row as an array (associative, numeric or both)"],
    mysql_fetch_assoc: ["array mysql_fetch_assoc(resource result)", "Fetch a result row as an associative array"],
    mysql_fetch_field: ["object mysql_fetch_field(resource result [, int field_offset])", "Gets column information from a result and return as an object"],
    mysql_fetch_lengths: ["array mysql_fetch_lengths(resource result)", "Gets max data size of each column in a result"],
    mysql_fetch_object: ["object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])", "Fetch a result row as an object"],
    mysql_fetch_row: ["array mysql_fetch_row(resource result)", "Gets a result row as an enumerated array"],
    mysql_field_flags: ["string mysql_field_flags(resource result, int field_offset)", "Gets the flags associated with the specified field in a result"],
    mysql_field_len: ["int mysql_field_len(resource result, int field_offset)", "Returns the length of the specified field"],
    mysql_field_name: ["string mysql_field_name(resource result, int field_index)", "Gets the name of the specified field in a result"],
    mysql_field_seek: ["bool mysql_field_seek(resource result, int field_offset)", "Sets result pointer to a specific field offset"],
    mysql_field_table: ["string mysql_field_table(resource result, int field_offset)", "Gets name of the table the specified field is in"],
    mysql_field_type: ["string mysql_field_type(resource result, int field_offset)", "Gets the type of the specified field in a result"],
    mysql_free_result: ["bool mysql_free_result(resource result)", "Free result memory"],
    mysql_get_client_info: ["string mysql_get_client_info(void)", "Returns a string that represents the client library version"],
    mysql_get_host_info: ["string mysql_get_host_info([int link_identifier])", "Returns a string describing the type of connection in use, including the server host name"],
    mysql_get_proto_info: ["int mysql_get_proto_info([int link_identifier])", "Returns the protocol version used by current connection"],
    mysql_get_server_info: ["string mysql_get_server_info([int link_identifier])", "Returns a string that represents the server version number"],
    mysql_info: ["string mysql_info([int link_identifier])", "Returns a string containing information about the most recent query"],
    mysql_insert_id: ["int mysql_insert_id([int link_identifier])", "Gets the ID generated from the previous INSERT operation"],
    mysql_list_dbs: ["resource mysql_list_dbs([int link_identifier])", "List databases available on a MySQL server"],
    mysql_list_fields: ["resource mysql_list_fields(string database_name, string table_name [, int link_identifier])", "List MySQL result fields"],
    mysql_list_processes: ["resource mysql_list_processes([int link_identifier])", "Returns a result set describing the current server threads"],
    mysql_list_tables: ["resource mysql_list_tables(string database_name [, int link_identifier])", "List tables in a MySQL database"],
    mysql_num_fields: ["int mysql_num_fields(resource result)", "Gets number of fields in a result"],
    mysql_num_rows: ["int mysql_num_rows(resource result)", "Gets number of rows in a result"],
    mysql_pconnect: ["resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])", "Opens a persistent connection to a MySQL Server"],
    mysql_ping: ["bool mysql_ping([int link_identifier])", "Ping a server connection. If no connection then reconnect."],
    mysql_query: ["resource mysql_query(string query [, int link_identifier])", "Sends an SQL query to MySQL"],
    mysql_real_escape_string: ["string mysql_real_escape_string(string to_be_escaped [, int link_identifier])", "Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection"],
    mysql_result: ["mixed mysql_result(resource result, int row [, mixed field])", "Gets result data"],
    mysql_select_db: ["bool mysql_select_db(string database_name [, int link_identifier])", "Selects a MySQL database"],
    mysql_set_charset: ["bool mysql_set_charset(string csname [, int link_identifier])", "sets client character set"],
    mysql_stat: ["string mysql_stat([int link_identifier])", "Returns a string containing status information"],
    mysql_thread_id: ["int mysql_thread_id([int link_identifier])", "Returns the thread id of current connection"],
    mysql_unbuffered_query: ["resource mysql_unbuffered_query(string query [, int link_identifier])", "Sends an SQL query to MySQL, without fetching and buffering the result rows"],
    mysqli_affected_rows: ["mixed mysqli_affected_rows(object link)", "Get number of affected rows in previous MySQL operation"],
    mysqli_autocommit: ["bool mysqli_autocommit(object link, bool mode)", "Turn auto commit on or of"],
    mysqli_cache_stats: ["array mysqli_cache_stats(void)", "Returns statistics about the zval cache"],
    mysqli_change_user: ["bool mysqli_change_user(object link, string user, string password, string database)", "Change logged-in user of the active connection"],
    mysqli_character_set_name: ["string mysqli_character_set_name(object link)", "Returns the name of the character set used for this connection"],
    mysqli_close: ["bool mysqli_close(object link)", "Close connection"],
    mysqli_commit: ["bool mysqli_commit(object link)", "Commit outstanding actions and close transaction"],
    mysqli_connect: ["object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])", "Open a connection to a mysql server"],
    mysqli_connect_errno: ["int mysqli_connect_errno(void)", "Returns the numerical value of the error message from last connect command"],
    mysqli_connect_error: ["string mysqli_connect_error(void)", "Returns the text of the error message from previous MySQL operation"],
    mysqli_data_seek: ["bool mysqli_data_seek(object result, int offset)", "Move internal result pointer"],
    mysqli_debug: ["void mysqli_debug(string debug)", ""],
    mysqli_dump_debug_info: ["bool mysqli_dump_debug_info(object link)", ""],
    mysqli_embedded_server_end: ["void mysqli_embedded_server_end(void)", ""],
    mysqli_embedded_server_start: ["bool mysqli_embedded_server_start(bool start, array arguments, array groups)", "initialize and start embedded server"],
    mysqli_errno: ["int mysqli_errno(object link)", "Returns the numerical value of the error message from previous MySQL operation"],
    mysqli_error: ["string mysqli_error(object link)", "Returns the text of the error message from previous MySQL operation"],
    mysqli_fetch_all: ["mixed mysqli_fetch_all (object result [,int resulttype])", "Fetches all result rows as an associative array, a numeric array, or both"],
    mysqli_fetch_array: ["mixed mysqli_fetch_array (object result [,int resulttype])", "Fetch a result row as an associative array, a numeric array, or both"],
    mysqli_fetch_assoc: ["mixed mysqli_fetch_assoc (object result)", "Fetch a result row as an associative array"],
    mysqli_fetch_field: ["mixed mysqli_fetch_field (object result)", "Get column information from a result and return as an object"],
    mysqli_fetch_field_direct: ["mixed mysqli_fetch_field_direct (object result, int offset)", "Fetch meta-data for a single field"],
    mysqli_fetch_fields: ["mixed mysqli_fetch_fields (object result)", "Return array of objects containing field meta-data"],
    mysqli_fetch_lengths: ["mixed mysqli_fetch_lengths (object result)", "Get the length of each output in a result"],
    mysqli_fetch_object: ["mixed mysqli_fetch_object (object result [, string class_name [, NULL|array ctor_params]])", "Fetch a result row as an object"],
    mysqli_fetch_row: ["array mysqli_fetch_row (object result)", "Get a result row as an enumerated array"],
    mysqli_field_count: ["int mysqli_field_count(object link)", "Fetch the number of fields returned by the last query for the given link"],
    mysqli_field_seek: ["int mysqli_field_seek(object result, int fieldnr)", "Set result pointer to a specified field offset"],
    mysqli_field_tell: ["int mysqli_field_tell(object result)", "Get current field offset of result pointer"],
    mysqli_free_result: ["void mysqli_free_result(object result)", "Free query result memory for the given result handle"],
    mysqli_get_charset: ["object mysqli_get_charset(object link)", "returns a character set object"],
    mysqli_get_client_info: ["string mysqli_get_client_info(void)", "Get MySQL client info"],
    mysqli_get_client_stats: ["array mysqli_get_client_stats(void)", "Returns statistics about the zval cache"],
    mysqli_get_client_version: ["int mysqli_get_client_version(void)", "Get MySQL client info"],
    mysqli_get_connection_stats: ["array mysqli_get_connection_stats(void)", "Returns statistics about the zval cache"],
    mysqli_get_host_info: ["string mysqli_get_host_info (object link)", "Get MySQL host info"],
    mysqli_get_proto_info: ["int mysqli_get_proto_info(object link)", "Get MySQL protocol information"],
    mysqli_get_server_info: ["string mysqli_get_server_info(object link)", "Get MySQL server info"],
    mysqli_get_server_version: ["int mysqli_get_server_version(object link)", "Return the MySQL version for the server referenced by the given link"],
    mysqli_get_warnings: ["object mysqli_get_warnings(object link) */", 'PHP_FUNCTION(mysqli_get_warnings) {  MY_MYSQL   *mysql;  zval    *mysql_link;  MYSQLI_RESOURCE  *mysqli_resource;  MYSQLI_WARNING  *w;   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {   return;  }  MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);   if (mysql_warning_count(mysql->mysql)) {   w = php_get_warnings(mysql->mysql TSRMLS_CC);   } else {   RETURN_FALSE;  }  mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));  mysqli_resource->ptr = mysqli_resource->info = (void *)w;  mysqli_resource->status = MYSQLI_STATUS_VALID;  MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry);  } /* }}}'],
    mysqli_info: ["string mysqli_info(object link)", "Get information about the most recent query"],
    mysqli_init: ["resource mysqli_init(void)", "Initialize mysqli and return a resource for use with mysql_real_connect"],
    mysqli_insert_id: ["mixed mysqli_insert_id(object link)", "Get the ID generated from the previous INSERT operation"],
    mysqli_kill: ["bool mysqli_kill(object link, int processid)", "Kill a mysql process on the server"],
    mysqli_link_construct: ["object mysqli_link_construct()", ""],
    mysqli_more_results: ["bool mysqli_more_results(object link)", "check if there any more query results from a multi query"],
    mysqli_multi_query: ["bool mysqli_multi_query(object link, string query)", "allows to execute multiple queries"],
    mysqli_next_result: ["bool mysqli_next_result(object link)", "read next result from multi_query"],
    mysqli_num_fields: ["int mysqli_num_fields(object result)", "Get number of fields in result"],
    mysqli_num_rows: ["mixed mysqli_num_rows(object result)", "Get number of rows in result"],
    mysqli_options: ["bool mysqli_options(object link, int flags, mixed values)", "Set options"],
    mysqli_ping: ["bool mysqli_ping(object link)", "Ping a server connection or reconnect if there is no connection"],
    mysqli_poll: ["int mysqli_poll(array read, array write, array error, long sec [, long usec])", "Poll connections"],
    mysqli_prepare: ["mixed mysqli_prepare(object link, string query)", "Prepare a SQL statement for execution"],
    mysqli_query: ["mixed mysqli_query(object link, string query [,int resultmode]) */", 'PHP_FUNCTION(mysqli_query) {  MY_MYSQL   *mysql;  zval    *mysql_link;  MYSQLI_RESOURCE  *mysqli_resource;  MYSQL_RES    *result;  char    *query = NULL;  unsigned int   query_len;  unsigned long   resultmode = MYSQLI_STORE_RESULT;   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &mysql_link, mysqli_link_class_entry, &query, &query_len, &resultmode) == FAILURE) {   return;  }   if (!query_len) {   php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty query");   RETURN_FALSE;  }  if ((resultmode & ~MYSQLI_ASYNC) != MYSQLI_USE_RESULT && (resultmode & ~MYSQLI_ASYNC) != MYSQLI_STORE_RESULT) {   php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid value for resultmode");   RETURN_FALSE;  }   MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);   MYSQLI_DISABLE_MQ;   #ifdef MYSQLI_USE_MYSQLND  if (resultmode & MYSQLI_ASYNC) {   if (mysqli_async_query(mysql->mysql, query, query_len)) {    MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);    RETURN_FALSE;   }   mysql->async_result_fetch_type = resultmode & ~MYSQLI_ASYNC;   RETURN_TRUE;  } #endif   if (mysql_real_query(mysql->mysql, query, query_len)) {   MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);   RETURN_FALSE;  }   if (!mysql_field_count(mysql->mysql)) {   /* no result set - not a SELECT'],
    mysqli_real_connect: ["bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])", "Open a connection to a mysql server"],
    mysqli_real_escape_string: ["string mysqli_real_escape_string(object link, string escapestr)", "Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection"],
    mysqli_real_query: ["bool mysqli_real_query(object link, string query)", "Binary-safe version of mysql_query()"],
    mysqli_reap_async_query: ["int mysqli_reap_async_query(object link)", "Poll connections"],
    mysqli_refresh: ["bool mysqli_refresh(object link, long options)", "Flush tables or caches, or reset replication server information"],
    mysqli_report: ["bool mysqli_report(int flags)", "sets report level"],
    mysqli_rollback: ["bool mysqli_rollback(object link)", "Undo actions from current transaction"],
    mysqli_select_db: ["bool mysqli_select_db(object link, string dbname)", "Select a MySQL database"],
    mysqli_set_charset: ["bool mysqli_set_charset(object link, string csname)", "sets client character set"],
    mysqli_set_local_infile_default: ["void mysqli_set_local_infile_default(object link)", "unsets user defined handler for load local infile command"],
    mysqli_set_local_infile_handler: ["bool mysqli_set_local_infile_handler(object link, callback read_func)", "Set callback functions for LOAD DATA LOCAL INFILE"],
    mysqli_sqlstate: ["string mysqli_sqlstate(object link)", "Returns the SQLSTATE error from previous MySQL operation"],
    mysqli_ssl_set: ["bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])", ""],
    mysqli_stat: ["mixed mysqli_stat(object link)", "Get current system status"],
    mysqli_stmt_affected_rows: ["mixed mysqli_stmt_affected_rows(object stmt)", "Return the number of rows affected in the last query for the given link"],
    mysqli_stmt_attr_get: ["int mysqli_stmt_attr_get(object stmt, long attr)", ""],
    mysqli_stmt_attr_set: ["int mysqli_stmt_attr_set(object stmt, long attr, long mode)", ""],
    mysqli_stmt_bind_param: ["bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])", "Bind variables to a prepared statement as parameters"],
    mysqli_stmt_bind_result: ["bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])", "Bind variables to a prepared statement for result storage"],
    mysqli_stmt_close: ["bool mysqli_stmt_close(object stmt)", "Close statement"],
    mysqli_stmt_data_seek: ["void mysqli_stmt_data_seek(object stmt, int offset)", "Move internal result pointer"],
    mysqli_stmt_errno: ["int mysqli_stmt_errno(object stmt)", ""],
    mysqli_stmt_error: ["string mysqli_stmt_error(object stmt)", ""],
    mysqli_stmt_execute: ["bool mysqli_stmt_execute(object stmt)", "Execute a prepared statement"],
    mysqli_stmt_fetch: ["mixed mysqli_stmt_fetch(object stmt)", "Fetch results from a prepared statement into the bound variables"],
    mysqli_stmt_field_count: ["int mysqli_stmt_field_count(object stmt) {", "Return the number of result columns for the given statement"],
    mysqli_stmt_free_result: ["void mysqli_stmt_free_result(object stmt)", "Free stored result memory for the given statement handle"],
    mysqli_stmt_get_result: ["object mysqli_stmt_get_result(object link)", "Buffer result set on client"],
    mysqli_stmt_get_warnings: ["object mysqli_stmt_get_warnings(object link) */", 'PHP_FUNCTION(mysqli_stmt_get_warnings) {  MY_STMT    *stmt;  zval    *stmt_link;  MYSQLI_RESOURCE  *mysqli_resource;  MYSQLI_WARNING  *w;   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &stmt_link, mysqli_stmt_class_entry) == FAILURE) {   return;  }  MYSQLI_FETCH_RESOURCE(stmt, MY_STMT*, &stmt_link, "mysqli_stmt", MYSQLI_STATUS_VALID);   if (mysqli_stmt_warning_count(stmt->stmt)) {   w = php_get_warnings(mysqli_stmt_get_connection(stmt->stmt) TSRMLS_CC);   } else {   RETURN_FALSE;  }  mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));  mysqli_resource->ptr = mysqli_resource->info = (void *)w;  mysqli_resource->status = MYSQLI_STATUS_VALID;  MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}'],
    mysqli_stmt_init: ["mixed mysqli_stmt_init(object link)", "Initialize statement object"],
    mysqli_stmt_insert_id: ["mixed mysqli_stmt_insert_id(object stmt)", "Get the ID generated from the previous INSERT operation"],
    mysqli_stmt_next_result: ["bool mysqli_stmt_next_result(object link)", "read next result from multi_query"],
    mysqli_stmt_num_rows: ["mixed mysqli_stmt_num_rows(object stmt)", "Return the number of rows in statements result set"],
    mysqli_stmt_param_count: ["int mysqli_stmt_param_count(object stmt)", "Return the number of parameter for the given statement"],
    mysqli_stmt_prepare: ["bool mysqli_stmt_prepare(object stmt, string query)", "prepare server side statement with query"],
    mysqli_stmt_reset: ["bool mysqli_stmt_reset(object stmt)", "reset a prepared statement"],
    mysqli_stmt_result_metadata: ["mixed mysqli_stmt_result_metadata(object stmt)", "return result set from statement"],
    mysqli_stmt_send_long_data: ["bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)", ""],
    mysqli_stmt_sqlstate: ["string mysqli_stmt_sqlstate(object stmt)", ""],
    mysqli_stmt_store_result: ["bool mysqli_stmt_store_result(stmt)", ""],
    mysqli_store_result: ["object mysqli_store_result(object link)", "Buffer result set on client"],
    mysqli_thread_id: ["int mysqli_thread_id(object link)", "Return the current thread ID"],
    mysqli_thread_safe: ["bool mysqli_thread_safe(void)", "Return whether thread safety is given or not"],
    mysqli_use_result: ["mixed mysqli_use_result(object link)", "Directly retrieve query results - do not buffer results on client side"],
    mysqli_warning_count: ["int mysqli_warning_count (object link)", "Return number of warnings from the last query for the given link"],
    natcasesort: ["void natcasesort(array &array_arg)", "Sort an array using case-insensitive natural sort"],
    natsort: ["void natsort(array &array_arg)", "Sort an array using natural sort"],
    next: ["mixed next(array array_arg)", "Move array argument's internal pointer to the next element and return it"],
    ngettext: ["string ngettext(string MSGID1, string MSGID2, int N)", "Plural version of gettext()"],
    nl2br: ["string nl2br(string str [, bool is_xhtml])", "Converts newlines to HTML line breaks"],
    nl_langinfo: ["string nl_langinfo(int item)", "Query language and locale information"],
    normalizer_is_normalize: ["bool normalizer_is_normalize( string $input [, string $form = FORM_C] )", "* Test if a string is in a given normalization form."],
    normalizer_normalize: ["string normalizer_normalize( string $input [, string $form = FORM_C] )", "* Normalize a string."],
    nsapi_request_headers: ["array nsapi_request_headers(void)", "Get all headers from the request"],
    nsapi_response_headers: ["array nsapi_response_headers(void)", "Get all headers from the response"],
    nsapi_virtual: ["bool nsapi_virtual(string uri)", "Perform an NSAPI sub-request"],
    number_format: ["string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])", "Formats a number with grouped thousands"],
    numfmt_create: ["NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )", "* Create number formatter."],
    numfmt_format: ["mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )", "* Format a number."],
    numfmt_format_currency: ["mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )", "* Format a number as currency."],
    numfmt_get_attribute: ["mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )", "* Get formatter attribute value."],
    numfmt_get_error_code: ["int numfmt_get_error_code( NumberFormatter $nf )", "* Get formatter's last error code."],
    numfmt_get_error_message: ["string numfmt_get_error_message( NumberFormatter $nf )", "* Get text description for formatter's last error code."],
    numfmt_get_locale: ["string numfmt_get_locale( NumberFormatter $nf[, int type] )", "* Get formatter locale."],
    numfmt_get_pattern: ["string numfmt_get_pattern( NumberFormatter $nf )", "* Get formatter pattern."],
    numfmt_get_symbol: ["string numfmt_get_symbol( NumberFormatter $nf, int $attr )", "* Get formatter symbol value."],
    numfmt_get_text_attribute: ["string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )", "* Get formatter attribute value."],
    numfmt_parse: ["mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])", "* Parse a number."],
    numfmt_parse_currency: ["double numfmt_parse_currency( NumberFormatter $nf, string $str, string $&currency[, int $&position] )", "* Parse a number as currency."],
    numfmt_parse_message: ["array numfmt_parse_message( string $locale, string $pattern, string $source )", "* Parse a message."],
    numfmt_set_attribute: ["bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )", "* Get formatter attribute value."],
    numfmt_set_pattern: ["bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )", "* Set formatter pattern."],
    numfmt_set_symbol: ["bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )", "* Set formatter symbol value."],
    numfmt_set_text_attribute: ["bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )", "* Get formatter attribute value."],
    ob_clean: ["bool ob_clean(void)", "Clean (delete) the current output buffer"],
    ob_end_clean: ["bool ob_end_clean(void)", "Clean the output buffer, and delete current output buffer"],
    ob_end_flush: ["bool ob_end_flush(void)", "Flush (send) the output buffer, and delete current output buffer"],
    ob_flush: ["bool ob_flush(void)", "Flush (send) contents of the output buffer. The last buffer content is sent to next buffer"],
    ob_get_clean: ["bool ob_get_clean(void)", "Get current buffer contents and delete current output buffer"],
    ob_get_contents: ["string ob_get_contents(void)", "Return the contents of the output buffer"],
    ob_get_flush: ["bool ob_get_flush(void)", "Get current buffer contents, flush (send) the output buffer, and delete current output buffer"],
    ob_get_length: ["int ob_get_length(void)", "Return the length of the output buffer"],
    ob_get_level: ["int ob_get_level(void)", "Return the nesting level of the output buffer"],
    ob_get_status: ["false|array ob_get_status([bool full_status])", "Return the status of the active or all output buffers"],
    ob_gzhandler: ["string ob_gzhandler(string str, int mode)", "Encode str based on accept-encoding setting - designed to be called from ob_start()"],
    ob_iconv_handler: ["string ob_iconv_handler(string contents, int status)", "Returns str in output buffer converted to the iconv.output_encoding character set"],
    ob_implicit_flush: ["void ob_implicit_flush([int flag])", "Turn implicit flush on/off and is equivalent to calling flush() after every output call"],
    ob_list_handlers: ["false|array ob_list_handlers()", "*  List all output_buffers in an array"],
    ob_start: ["bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])", "Turn on Output Buffering (specifying an optional output handler)."],
    oci_bind_array_by_name: ["bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])", "Bind a PHP array to an Oracle PL/SQL type by name"],
    oci_bind_by_name: ["bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])", "Bind a PHP variable to an Oracle placeholder by name"],
    oci_cancel: ["bool oci_cancel(resource stmt)", "Cancel reading from a cursor"],
    oci_close: ["bool oci_close(resource connection)", "Disconnect from database"],
    oci_collection_append: ["bool oci_collection_append(string value)", "Append an object to the collection"],
    oci_collection_assign: ["bool oci_collection_assign(object from)", "Assign a collection from another existing collection"],
    oci_collection_element_assign: ["bool oci_collection_element_assign(int index, string val)", "Assign element val to collection at index ndx"],
    oci_collection_element_get: ["string oci_collection_element_get(int ndx)", "Retrieve the value at collection index ndx"],
    oci_collection_max: ["int oci_collection_max()", "Return the max value of a collection. For a varray this is the maximum length of the array"],
    oci_collection_size: ["int oci_collection_size()", "Return the size of a collection"],
    oci_collection_trim: ["bool oci_collection_trim(int num)", "Trim num elements from the end of a collection"],
    oci_commit: ["bool oci_commit(resource connection)", "Commit the current context"],
    oci_connect: ["resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])", "Connect to an Oracle database and log on. Returns a new session."],
    oci_define_by_name: ["bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])", "Define a PHP variable to an Oracle column by name"],
    oci_error: ["array oci_error([resource stmt|connection|global])", "Return the last error of stmt|connection|global. If no error happened returns false."],
    oci_execute: ["bool oci_execute(resource stmt [, int mode])", "Execute a parsed statement"],
    oci_fetch: ["bool oci_fetch(resource stmt)", "Prepare a new row of data for reading"],
    oci_fetch_all: ["int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])", "Fetch all rows of result data into an array"],
    oci_fetch_array: ["array oci_fetch_array( resource stmt [, int mode ])", "Fetch a result row as an array"],
    oci_fetch_assoc: ["array oci_fetch_assoc( resource stmt )", "Fetch a result row as an associative array"],
    oci_fetch_object: ["object oci_fetch_object( resource stmt )", "Fetch a result row as an object"],
    oci_fetch_row: ["array oci_fetch_row( resource stmt )", "Fetch a result row as an enumerated array"],
    oci_field_is_null: ["bool oci_field_is_null(resource stmt, int col)", "Tell whether a column is NULL"],
    oci_field_name: ["string oci_field_name(resource stmt, int col)", "Tell the name of a column"],
    oci_field_precision: ["int oci_field_precision(resource stmt, int col)", "Tell the precision of a column"],
    oci_field_scale: ["int oci_field_scale(resource stmt, int col)", "Tell the scale of a column"],
    oci_field_size: ["int oci_field_size(resource stmt, int col)", "Tell the maximum data size of a column"],
    oci_field_type: ["mixed oci_field_type(resource stmt, int col)", "Tell the data type of a column"],
    oci_field_type_raw: ["int oci_field_type_raw(resource stmt, int col)", "Tell the raw oracle data type of a column"],
    oci_free_collection: ["bool oci_free_collection()", "Deletes collection object"],
    oci_free_descriptor: ["bool oci_free_descriptor()", "Deletes large object description"],
    oci_free_statement: ["bool oci_free_statement(resource stmt)", "Free all resources associated with a statement"],
    oci_internal_debug: ["void oci_internal_debug(int onoff)", "Toggle internal debugging output for the OCI extension"],
    oci_lob_append: ["bool oci_lob_append( object lob )", "Appends data from a LOB to another LOB"],
    oci_lob_close: ["bool oci_lob_close()", "Closes lob descriptor"],
    oci_lob_copy: ["bool oci_lob_copy( object lob_to, object lob_from [, int length ] )", "Copies data from a LOB to another LOB"],
    oci_lob_eof: ["bool oci_lob_eof()", "Checks if EOF is reached"],
    oci_lob_erase: ["int oci_lob_erase( [ int offset [, int length ] ] )", "Erases a specified portion of the internal LOB, starting at a specified offset"],
    oci_lob_export: ["bool oci_lob_export([string filename [, int start [, int length]]])", "Writes a large object into a file"],
    oci_lob_flush: ["bool oci_lob_flush( [ int flag ] )", "Flushes the LOB buffer"],
    oci_lob_import: ["bool oci_lob_import( string filename )", "Loads file into a LOB"],
    oci_lob_is_equal: ["bool oci_lob_is_equal( object lob1, object lob2 )", "Tests to see if two LOB/FILE locators are equal"],
    oci_lob_load: ["string oci_lob_load()", "Loads a large object"],
    oci_lob_read: ["string oci_lob_read( int length )", "Reads particular part of a large object"],
    oci_lob_rewind: ["bool oci_lob_rewind()", "Rewind pointer of a LOB"],
    oci_lob_save: ["bool oci_lob_save( string data [, int offset ])", "Saves a large object"],
    oci_lob_seek: ["bool oci_lob_seek( int offset [, int whence ])", "Moves the pointer of a LOB"],
    oci_lob_size: ["int oci_lob_size()", "Returns size of a large object"],
    oci_lob_tell: ["int oci_lob_tell()", "Tells LOB pointer position"],
    oci_lob_truncate: ["bool oci_lob_truncate( [ int length ])", "Truncates a LOB"],
    oci_lob_write: ["int oci_lob_write( string string [, int length ])", "Writes data to current position of a LOB"],
    oci_lob_write_temporary: ["bool oci_lob_write_temporary(string var [, int lob_type])", "Writes temporary blob"],
    oci_new_collection: ["object oci_new_collection(resource connection, string tdo [, string schema])", "Initialize a new collection"],
    oci_new_connect: ["resource oci_new_connect(string user, string pass [, string db])", "Connect to an Oracle database and log on. Returns a new session."],
    oci_new_cursor: ["resource oci_new_cursor(resource connection)", "Return a new cursor (Statement-Handle) - use this to bind ref-cursors!"],
    oci_new_descriptor: ["object oci_new_descriptor(resource connection [, int type])", "Initialize a new empty descriptor LOB/FILE (LOB is default)"],
    oci_num_fields: ["int oci_num_fields(resource stmt)", "Return the number of result columns in a statement"],
    oci_num_rows: ["int oci_num_rows(resource stmt)", "Return the row count of an OCI statement"],
    oci_parse: ["resource oci_parse(resource connection, string query)", "Parse a query and return a statement"],
    oci_password_change: ["bool oci_password_change(resource connection, string username, string old_password, string new_password)", "Changes the password of an account"],
    oci_pconnect: ["resource oci_pconnect(string user, string pass [, string db [, string charset ]])", "Connect to an Oracle database using a persistent connection and log on. Returns a new session."],
    oci_result: ["string oci_result(resource stmt, mixed column)", "Return a single column of result data"],
    oci_rollback: ["bool oci_rollback(resource connection)", "Rollback the current context"],
    oci_server_version: ["string oci_server_version(resource connection)", "Return a string containing server version information"],
    oci_set_action: ["bool oci_set_action(resource connection, string value)", "Sets the action attribute on the connection"],
    oci_set_client_identifier: ["bool oci_set_client_identifier(resource connection, string value)", "Sets the client identifier attribute on the connection"],
    oci_set_client_info: ["bool oci_set_client_info(resource connection, string value)", "Sets the client info attribute on the connection"],
    oci_set_edition: ["bool oci_set_edition(string value)", "Sets the edition attribute for all subsequent connections created"],
    oci_set_module_name: ["bool oci_set_module_name(resource connection, string value)", "Sets the module attribute on the connection"],
    oci_set_prefetch: ["bool oci_set_prefetch(resource stmt, int prefetch_rows)", "Sets the number of rows to be prefetched on execute to prefetch_rows for stmt"],
    oci_statement_type: ["string oci_statement_type(resource stmt)", "Return the query type of an OCI statement"],
    ocifetchinto: ["int ocifetchinto(resource stmt, array &output [, int mode])", "Fetch a row of result data into an array"],
    ocigetbufferinglob: ["bool ocigetbufferinglob()", "Returns current state of buffering for a LOB"],
    ocisetbufferinglob: ["bool ocisetbufferinglob( boolean flag )", "Enables/disables buffering for a LOB"],
    octdec: ["int octdec(string octal_number)", "Returns the decimal equivalent of an octal string"],
    odbc_autocommit: ["mixed odbc_autocommit(resource connection_id [, int OnOff])", "Toggle autocommit mode or get status"],
    odbc_binmode: ["bool odbc_binmode(int result_id, int mode)", "Handle binary column data"],
    odbc_close: ["void odbc_close(resource connection_id)", "Close an ODBC connection"],
    odbc_close_all: ["void odbc_close_all(void)", "Close all ODBC connections"],
    odbc_columnprivileges: ["resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)", "Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table"],
    odbc_columns: ["resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])", "Returns a result identifier that can be used to fetch a list of column names in specified tables"],
    odbc_commit: ["bool odbc_commit(resource connection_id)", "Commit an ODBC transaction"],
    odbc_connect: ["resource odbc_connect(string DSN, string user, string password [, int cursor_option])", "Connect to a datasource"],
    odbc_cursor: ["string odbc_cursor(resource result_id)", "Get cursor name"],
    odbc_data_source: ["array odbc_data_source(resource connection_id, int fetch_type)", "Return information about the currently connected data source"],
    odbc_error: ["string odbc_error([resource connection_id])", "Get the last error code"],
    odbc_errormsg: ["string odbc_errormsg([resource connection_id])", "Get the last error message"],
    odbc_exec: ["resource odbc_exec(resource connection_id, string query [, int flags])", "Prepare and execute an SQL statement"],
    odbc_execute: ["bool odbc_execute(resource result_id [, array parameters_array])", "Execute a prepared statement"],
    odbc_fetch_array: ["array odbc_fetch_array(int result [, int rownumber])", "Fetch a result row as an associative array"],
    odbc_fetch_into: ["int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])", "Fetch one result row into an array"],
    odbc_fetch_object: ["object odbc_fetch_object(int result [, int rownumber])", "Fetch a result row as an object"],
    odbc_fetch_row: ["bool odbc_fetch_row(resource result_id [, int row_number])", "Fetch a row"],
    odbc_field_len: ["int odbc_field_len(resource result_id, int field_number)", "Get the length (precision) of a column"],
    odbc_field_name: ["string odbc_field_name(resource result_id, int field_number)", "Get a column name"],
    odbc_field_num: ["int odbc_field_num(resource result_id, string field_name)", "Return column number"],
    odbc_field_scale: ["int odbc_field_scale(resource result_id, int field_number)", "Get the scale of a column"],
    odbc_field_type: ["string odbc_field_type(resource result_id, int field_number)", "Get the datatype of a column"],
    odbc_foreignkeys: ["resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)", "Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table"],
    odbc_free_result: ["bool odbc_free_result(resource result_id)", "Free resources associated with a result"],
    odbc_gettypeinfo: ["resource odbc_gettypeinfo(resource connection_id [, int data_type])", "Returns a result identifier containing information about data types supported by the data source"],
    odbc_longreadlen: ["bool odbc_longreadlen(int result_id, int length)", "Handle LONG columns"],
    odbc_next_result: ["bool odbc_next_result(resource result_id)", "Checks if multiple results are avaiable"],
    odbc_num_fields: ["int odbc_num_fields(resource result_id)", "Get number of columns in a result"],
    odbc_num_rows: ["int odbc_num_rows(resource result_id)", "Get number of rows in a result"],
    odbc_pconnect: ["resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])", "Establish a persistent connection to a datasource"],
    odbc_prepare: ["resource odbc_prepare(resource connection_id, string query)", "Prepares a statement for execution"],
    odbc_primarykeys: ["resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)", "Returns a result identifier listing the column names that comprise the primary key for a table"],
    odbc_procedurecolumns: ["resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])", "Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures"],
    odbc_procedures: ["resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])", "Returns a result identifier containg the list of procedure names in a datasource"],
    odbc_result: ["mixed odbc_result(resource result_id, mixed field)", "Get result data"],
    odbc_result_all: ["int odbc_result_all(resource result_id [, string format])", "Print result as HTML table"],
    odbc_rollback: ["bool odbc_rollback(resource connection_id)", "Rollback a transaction"],
    odbc_setoption: ["bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)", "Sets connection or statement options"],
    odbc_specialcolumns: ["resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)", "Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction"],
    odbc_statistics: ["resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)", "Returns a result identifier that contains statistics about a single table and the indexes associated with the table"],
    odbc_tableprivileges: ["resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)", "Returns a result identifier containing a list of tables and the privileges associated with each table"],
    odbc_tables: ["resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])", "Call the SQLTables function"],
    opendir: ["mixed opendir(string path[, resource context])", "Open a directory and return a dir_handle"],
    openlog: ["bool openlog(string ident, int option, int facility)", "Open connection to system logger"],
    openssl_csr_export: ["bool openssl_csr_export(resource csr, string &out [, bool notext=true])", "Exports a CSR to file or a var"],
    openssl_csr_export_to_file: ["bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])", "Exports a CSR to file"],
    openssl_csr_get_public_key: ["mixed openssl_csr_get_public_key(mixed csr)", "Returns the subject of a CERT or FALSE on error"],
    openssl_csr_get_subject: ["mixed openssl_csr_get_subject(mixed csr)", "Returns the subject of a CERT or FALSE on error"],
    openssl_csr_new: ["bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])", "Generates a privkey and CSR"],
    openssl_csr_sign: ["resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])", "Signs a cert with another CERT"],
    openssl_decrypt: ["string openssl_decrypt(string data, string method, string password [, bool raw_input=false])", "Takes raw or base64 encoded string and dectupt it using given method and key"],
    openssl_dh_compute_key: ["string openssl_dh_compute_key(string pub_key, resource dh_key)", "Computes shared sicret for public value of remote DH key and local DH key"],
    openssl_digest: ["string openssl_digest(string data, string method [, bool raw_output=false])", "Computes digest hash value for given data using given method, returns raw or binhex encoded string"],
    openssl_encrypt: ["string openssl_encrypt(string data, string method, string password [, bool raw_output=false])", "Encrypts given data with given method and key, returns raw or base64 encoded string"],
    openssl_error_string: ["mixed openssl_error_string(void)", "Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages"],
    openssl_get_cipher_methods: ["array openssl_get_cipher_methods([bool aliases = false])", "Return array of available cipher methods"],
    openssl_get_md_methods: ["array openssl_get_md_methods([bool aliases = false])", "Return array of available digest methods"],
    openssl_open: ["bool openssl_open(string data, &string opendata, string ekey, mixed privkey)", "Opens data"],
    openssl_pkcs12_export: ["bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])", "Creates and exports a PKCS12 to a var"],
    openssl_pkcs12_export_to_file: ["bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])", "Creates and exports a PKCS to file"],
    openssl_pkcs12_read: ["bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)", "Parses a PKCS12 to an array"],
    openssl_pkcs7_decrypt: ["bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])", "Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename.  recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key"],
    openssl_pkcs7_encrypt: ["bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])", "Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile"],
    openssl_pkcs7_sign: ["bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])", "Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum"],
    openssl_pkcs7_verify: ["bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])", "Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers"],
    openssl_pkey_export: ["bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])", "Gets an exportable representation of a key into a string or file"],
    openssl_pkey_export_to_file: ["bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)", "Gets an exportable representation of a key into a file"],
    openssl_pkey_free: ["void openssl_pkey_free(int key)", "Frees a key"],
    openssl_pkey_get_details: ["resource openssl_pkey_get_details(resource key)", "returns an array with the key details (bits, pkey, type)"],
    openssl_pkey_get_private: ["int openssl_pkey_get_private(string key [, string passphrase])", "Gets private keys"],
    openssl_pkey_get_public: ["int openssl_pkey_get_public(mixed cert)", "Gets public key from X.509 certificate"],
    openssl_pkey_new: ["resource openssl_pkey_new([array configargs])", "Generates a new private key"],
    openssl_private_decrypt: ["bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])", "Decrypts data with private key"],
    openssl_private_encrypt: ["bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])", "Encrypts data with private key"],
    openssl_public_decrypt: ["bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])", "Decrypts data with public key"],
    openssl_public_encrypt: ["bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])", "Encrypts data with public key"],
    openssl_random_pseudo_bytes: ["string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])", "Returns a string of the length specified filled with random pseudo bytes"],
    openssl_seal: ["int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)", "Seals data"],
    openssl_sign: ["bool openssl_sign(string data, &string signature, mixed key[, mixed method])", "Signs data"],
    openssl_verify: ["int openssl_verify(string data, string signature, mixed key[, mixed method])", "Verifys data"],
    openssl_x509_check_private_key: ["bool openssl_x509_check_private_key(mixed cert, mixed key)", "Checks if a private key corresponds to a CERT"],
    openssl_x509_checkpurpose: ["int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])", "Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs"],
    openssl_x509_export: ["bool openssl_x509_export(mixed x509, string &out [, bool notext = true])", "Exports a CERT to file or a var"],
    openssl_x509_export_to_file: ["bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])", "Exports a CERT to file or a var"],
    openssl_x509_free: ["void openssl_x509_free(resource x509)", "Frees X.509 certificates"],
    openssl_x509_parse: ["array openssl_x509_parse(mixed x509 [, bool shortnames=true])", "Returns an array of the fields/values of the CERT"],
    openssl_x509_read: ["resource openssl_x509_read(mixed cert)", "Reads X.509 certificates"],
    ord: ["int ord(string character)", "Returns ASCII value of character"],
    output_add_rewrite_var: ["bool output_add_rewrite_var(string name, string value)", "Add URL rewriter values"],
    output_reset_rewrite_vars: ["bool output_reset_rewrite_vars(void)", "Reset(clear) URL rewriter values"],
    pack: ["string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])", "Takes one or more arguments and packs them into a binary string according to the format argument"],
    parse_ini_file: ["array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])", "Parse configuration file"],
    parse_ini_string: ["array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])", "Parse configuration string"],
    parse_locale: ["static array parse_locale($locale)", "* parses a locale-id into an array the different parts of it"],
    parse_str: ["void parse_str(string encoded_string [, array result])", "Parses GET/POST/COOKIE data and sets global variables"],
    parse_url: ["mixed parse_url(string url, [int url_component])", "Parse a URL and return its components"],
    passthru: ["void passthru(string command [, int &return_value])", "Execute an external program and display raw output"],
    pathinfo: ["array pathinfo(string path[, int options])", "Returns information about a certain string"],
    pclose: ["int pclose(resource fp)", "Close a file pointer opened by popen()"],
    pcnlt_sigwaitinfo: ["int pcnlt_sigwaitinfo(array set[, array &siginfo])", "Synchronously wait for queued signals"],
    pcntl_alarm: ["int pcntl_alarm(int seconds)", "Set an alarm clock for delivery of a signal"],
    pcntl_exec: ["bool pcntl_exec(string path [, array args [, array envs]])", "Executes specified program in current process space as defined by exec(2)"],
    pcntl_fork: ["int pcntl_fork(void)", "Forks the currently running process following the same behavior as the UNIX fork() system call"],
    pcntl_getpriority: ["int pcntl_getpriority([int pid [, int process_identifier]])", "Get the priority of any process"],
    pcntl_setpriority: ["bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])", "Change the priority of any process"],
    pcntl_signal: ["bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])", "Assigns a system signal handler to a PHP function"],
    pcntl_signal_dispatch: ["bool pcntl_signal_dispatch()", "Dispatch signals to signal handlers"],
    pcntl_sigprocmask: ["bool pcntl_sigprocmask(int how, array set[, array &oldset])", "Examine and change blocked signals"],
    pcntl_sigtimedwait: ["int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])", "Wait for queued signals"],
    pcntl_wait: ["int pcntl_wait(int &status)", "Waits on or returns the status of a forked child as defined by the waitpid() system call"],
    pcntl_waitpid: ["int pcntl_waitpid(int pid, int &status, int options)", "Waits on or returns the status of a forked child as defined by the waitpid() system call"],
    pcntl_wexitstatus: ["int pcntl_wexitstatus(int status)", "Returns the status code of a child's exit"],
    pcntl_wifexited: ["bool pcntl_wifexited(int status)", "Returns true if the child status code represents a successful exit"],
    pcntl_wifsignaled: ["bool pcntl_wifsignaled(int status)", "Returns true if the child status code represents a process that was terminated due to a signal"],
    pcntl_wifstopped: ["bool pcntl_wifstopped(int status)", "Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)"],
    pcntl_wstopsig: ["int pcntl_wstopsig(int status)", "Returns the number of the signal that caused the process to stop who's status code is passed"],
    pcntl_wtermsig: ["int pcntl_wtermsig(int status)", "Returns the number of the signal that terminated the process who's status code is passed"],
    pdo_drivers: ["array pdo_drivers()", "Return array of available PDO drivers"],
    pfsockopen: ["resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", "Open persistent Internet or Unix domain socket connection"],
    pg_affected_rows: ["int pg_affected_rows(resource result)", "Returns the number of affected tuples"],
    pg_cancel_query: ["bool pg_cancel_query(resource connection)", "Cancel request"],
    pg_client_encoding: ["string pg_client_encoding([resource connection])", "Get the current client encoding"],
    pg_close: ["bool pg_close([resource connection])", "Close a PostgreSQL connection"],
    pg_connect: ["resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)", "Open a PostgreSQL connection"],
    pg_connection_busy: ["bool pg_connection_busy(resource connection)", "Get connection is busy or not"],
    pg_connection_reset: ["bool pg_connection_reset(resource connection)", "Reset connection (reconnect)"],
    pg_connection_status: ["int pg_connection_status(resource connnection)", "Get connection status"],
    pg_convert: ["array pg_convert(resource db, string table, array values[, int options])", "Check and convert values for PostgreSQL SQL statement"],
    pg_copy_from: ["bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])", "Copy table from array"],
    pg_copy_to: ["array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])", "Copy table to array"],
    pg_dbname: ["string pg_dbname([resource connection])", "Get the database name"],
    pg_delete: ["mixed pg_delete(resource db, string table, array ids[, int options])", "Delete records has ids (id=>value)"],
    pg_end_copy: ["bool pg_end_copy([resource connection])", "Sync with backend. Completes the Copy command"],
    pg_escape_bytea: ["string pg_escape_bytea([resource connection,] string data)", "Escape binary for bytea type"],
    pg_escape_string: ["string pg_escape_string([resource connection,] string data)", "Escape string for text/char type"],
    pg_execute: ["resource pg_execute([resource connection,] string stmtname, array params)", "Execute a prepared query"],
    pg_fetch_all: ["array pg_fetch_all(resource result)", "Fetch all rows into array"],
    pg_fetch_all_columns: ["array pg_fetch_all_columns(resource result [, int column_number])", "Fetch all rows into array"],
    pg_fetch_array: ["array pg_fetch_array(resource result [, int row [, int result_type]])", "Fetch a row as an array"],
    pg_fetch_assoc: ["array pg_fetch_assoc(resource result [, int row])", "Fetch a row as an assoc array"],
    pg_fetch_object: ["object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])", "Fetch a row as an object"],
    pg_fetch_result: ["mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)", "Returns values from a result identifier"],
    pg_fetch_row: ["array pg_fetch_row(resource result [, int row [, int result_type]])", "Get a row as an enumerated array"],
    pg_field_is_null: ["int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)", "Test if a field is NULL"],
    pg_field_name: ["string pg_field_name(resource result, int field_number)", "Returns the name of the field"],
    pg_field_num: ["int pg_field_num(resource result, string field_name)", "Returns the field number of the named field"],
    pg_field_prtlen: ["int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)", "Returns the printed length"],
    pg_field_size: ["int pg_field_size(resource result, int field_number)", "Returns the internal size of the field"],
    pg_field_table: ["mixed pg_field_table(resource result, int field_number[, bool oid_only])", "Returns the name of the table field belongs to, or table's oid if oid_only is true"],
    pg_field_type: ["string pg_field_type(resource result, int field_number)", "Returns the type name for the given field"],
    pg_field_type_oid: ["string pg_field_type_oid(resource result, int field_number)", "Returns the type oid for the given field"],
    pg_free_result: ["bool pg_free_result(resource result)", "Free result memory"],
    pg_get_notify: ["array pg_get_notify([resource connection[, result_type]])", "Get asynchronous notification"],
    pg_get_pid: ["int pg_get_pid([resource connection)", "Get backend(server) pid"],
    pg_get_result: ["resource pg_get_result(resource connection)", "Get asynchronous query result"],
    pg_host: ["string pg_host([resource connection])", "Returns the host name associated with the connection"],
    pg_insert: ["mixed pg_insert(resource db, string table, array values[, int options])", "Insert values (filed=>value) to table"],
    pg_last_error: ["string pg_last_error([resource connection])", "Get the error message string"],
    pg_last_notice: ["string pg_last_notice(resource connection)", "Returns the last notice set by the backend"],
    pg_last_oid: ["string pg_last_oid(resource result)", "Returns the last object identifier"],
    pg_lo_close: ["bool pg_lo_close(resource large_object)", "Close a large object"],
    pg_lo_create: ["mixed pg_lo_create([resource connection],[mixed large_object_oid])", "Create a large object"],
    pg_lo_export: ["bool pg_lo_export([resource connection, ] int objoid, string filename)", "Export large object direct to filesystem"],
    pg_lo_import: ["int pg_lo_import([resource connection, ] string filename [, mixed oid])", "Import large object direct from filesystem"],
    pg_lo_open: ["resource pg_lo_open([resource connection,] int large_object_oid, string mode)", "Open a large object and return fd"],
    pg_lo_read: ["string pg_lo_read(resource large_object [, int len])", "Read a large object"],
    pg_lo_read_all: ["int pg_lo_read_all(resource large_object)", "Read a large object and send straight to browser"],
    pg_lo_seek: ["bool pg_lo_seek(resource large_object, int offset [, int whence])", "Seeks position of large object"],
    pg_lo_tell: ["int pg_lo_tell(resource large_object)", "Returns current position of large object"],
    pg_lo_unlink: ["bool pg_lo_unlink([resource connection,] string large_object_oid)", "Delete a large object"],
    pg_lo_write: ["int pg_lo_write(resource large_object, string buf [, int len])", "Write a large object"],
    pg_meta_data: ["array pg_meta_data(resource db, string table)", "Get meta_data"],
    pg_num_fields: ["int pg_num_fields(resource result)", "Return the number of fields in the result"],
    pg_num_rows: ["int pg_num_rows(resource result)", "Return the number of rows in the result"],
    pg_options: ["string pg_options([resource connection])", "Get the options associated with the connection"],
    pg_parameter_status: ["string|false pg_parameter_status([resource connection,] string param_name)", "Returns the value of a server parameter"],
    pg_pconnect: ["resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)", "Open a persistent PostgreSQL connection"],
    pg_ping: ["bool pg_ping([resource connection])", "Ping database. If connection is bad, try to reconnect."],
    pg_port: ["int pg_port([resource connection])", "Return the port number associated with the connection"],
    pg_prepare: ["resource pg_prepare([resource connection,] string stmtname, string query)", "Prepare a query for future execution"],
    pg_put_line: ["bool pg_put_line([resource connection,] string query)", "Send null-terminated string to backend server"],
    pg_query: ["resource pg_query([resource connection,] string query)", "Execute a query"],
    pg_query_params: ["resource pg_query_params([resource connection,] string query, array params)", "Execute a query"],
    pg_result_error: ["string pg_result_error(resource result)", "Get error message associated with result"],
    pg_result_error_field: ["string pg_result_error_field(resource result, int fieldcode)", "Get error message field associated with result"],
    pg_result_seek: ["bool pg_result_seek(resource result, int offset)", "Set internal row offset"],
    pg_result_status: ["mixed pg_result_status(resource result[, long result_type])", "Get status of query result"],
    pg_select: ["mixed pg_select(resource db, string table, array ids[, int options])", "Select records that has ids (id=>value)"],
    pg_send_execute: ["bool pg_send_execute(resource connection, string stmtname, array params)", "Executes prevriously prepared stmtname asynchronously"],
    pg_send_prepare: ["bool pg_send_prepare(resource connection, string stmtname, string query)", "Asynchronously prepare a query for future execution"],
    pg_send_query: ["bool pg_send_query(resource connection, string query)", "Send asynchronous query"],
    pg_send_query_params: ["bool pg_send_query_params(resource connection, string query, array params)", "Send asynchronous parameterized query"],
    pg_set_client_encoding: ["int pg_set_client_encoding([resource connection,] string encoding)", "Set client encoding"],
    pg_set_error_verbosity: ["int pg_set_error_verbosity([resource connection,] int verbosity)", "Set error verbosity"],
    pg_trace: ["bool pg_trace(string filename [, string mode [, resource connection]])", "Enable tracing a PostgreSQL connection"],
    pg_transaction_status: ["int pg_transaction_status(resource connnection)", "Get transaction status"],
    pg_tty: ["string pg_tty([resource connection])", "Return the tty name associated with the connection"],
    pg_unescape_bytea: ["string pg_unescape_bytea(string data)", "Unescape binary for bytea type"],
    pg_untrace: ["bool pg_untrace([resource connection])", "Disable tracing of a PostgreSQL connection"],
    pg_update: ["mixed pg_update(resource db, string table, array fields, array ids[, int options])", "Update table using values (field=>value) and ids (id=>value)"],
    pg_version: ["array pg_version([resource connection])", "Returns an array with client, protocol and server version (when available)"],
    php_egg_logo_guid: ["string php_egg_logo_guid(void)", "Return the special ID used to request the PHP logo in phpinfo screens"],
    php_ini_loaded_file: ["string php_ini_loaded_file(void)", "Return the actual loaded ini filename"],
    php_ini_scanned_files: ["string php_ini_scanned_files(void)", "Return comma-separated string of .ini files parsed from the additional ini dir"],
    php_logo_guid: ["string php_logo_guid(void)", "Return the special ID used to request the PHP logo in phpinfo screens"],
    php_real_logo_guid: ["string php_real_logo_guid(void)", "Return the special ID used to request the PHP logo in phpinfo screens"],
    php_sapi_name: ["string php_sapi_name(void)", "Return the current SAPI module name"],
    php_snmpv3: ["void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)", "* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET   snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT   snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK   snmp3_walk() - walk the mib and return a single dimensional array  *                       containing the values. * st=SNMP_CMD_REALWALK   snmp3_real_walk() - walk the mib and return an  *                            array of oid,value pairs. * st=SNMP_CMD_SET  snmp3_set() - query an agent and set a single value *"],
    php_strip_whitespace: ["string php_strip_whitespace(string file_name)", "Return source with stripped comments and whitespace"],
    php_uname: ["string php_uname(void)", "Return information about the system PHP was built on"],
    phpcredits: ["void phpcredits([int flag])", "Prints the list of people who've contributed to the PHP project"],
    phpinfo: ["void phpinfo([int what])", "Output a page of useful information about PHP and the current request"],
    phpversion: ["string phpversion([string extension])", "Return the current PHP version"],
    pi: ["float pi(void)", "Returns an approximation of pi"],
    png2wbmp: ["bool png2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)", "Convert PNG image to WBMP image"],
    popen: ["resource popen(string command, string mode)", "Execute a command and open either a read or a write pipe to it"],
    posix_access: ["bool posix_access(string file [, int mode])", "Determine accessibility of a file (POSIX.1 5.6.3)"],
    posix_ctermid: ["string posix_ctermid(void)", "Generate terminal path name (POSIX.1, 4.7.1)"],
    posix_get_last_error: ["int posix_get_last_error(void)", "Retrieve the error number set by the last posix function which failed."],
    posix_getcwd: ["string posix_getcwd(void)", "Get working directory pathname (POSIX.1, 5.2.2)"],
    posix_getegid: ["int posix_getegid(void)", "Get the current effective group id (POSIX.1, 4.2.1)"],
    posix_geteuid: ["int posix_geteuid(void)", "Get the current effective user id (POSIX.1, 4.2.1)"],
    posix_getgid: ["int posix_getgid(void)", "Get the current group id (POSIX.1, 4.2.1)"],
    posix_getgrgid: ["array posix_getgrgid(long gid)", "Group database access (POSIX.1, 9.2.1)"],
    posix_getgrnam: ["array posix_getgrnam(string groupname)", "Group database access (POSIX.1, 9.2.1)"],
    posix_getgroups: ["array posix_getgroups(void)", "Get supplementary group id's (POSIX.1, 4.2.3)"],
    posix_getlogin: ["string posix_getlogin(void)", "Get user name (POSIX.1, 4.2.4)"],
    posix_getpgid: ["int posix_getpgid(void)", "Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)"],
    posix_getpgrp: ["int posix_getpgrp(void)", "Get current process group id (POSIX.1, 4.3.1)"],
    posix_getpid: ["int posix_getpid(void)", "Get the current process id (POSIX.1, 4.1.1)"],
    posix_getppid: ["int posix_getppid(void)", "Get the parent process id (POSIX.1, 4.1.1)"],
    posix_getpwnam: ["array posix_getpwnam(string groupname)", "User database access (POSIX.1, 9.2.2)"],
    posix_getpwuid: ["array posix_getpwuid(long uid)", "User database access (POSIX.1, 9.2.2)"],
    posix_getrlimit: ["array posix_getrlimit(void)", "Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)"],
    posix_getsid: ["int posix_getsid(void)", "Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)"],
    posix_getuid: ["int posix_getuid(void)", "Get the current user id (POSIX.1, 4.2.1)"],
    posix_initgroups: ["bool posix_initgroups(string name, int base_group_id)", "Calculate the group access list for the user specified in name."],
    posix_isatty: ["bool posix_isatty(int fd)", "Determine if filedesc is a tty (POSIX.1, 4.7.1)"],
    posix_kill: ["bool posix_kill(int pid, int sig)", "Send a signal to a process (POSIX.1, 3.3.2)"],
    posix_mkfifo: ["bool posix_mkfifo(string pathname, int mode)", "Make a FIFO special file (POSIX.1, 5.4.2)"],
    posix_mknod: ["bool posix_mknod(string pathname, int mode [, int major [, int minor]])", "Make a special or ordinary file (POSIX.1)"],
    posix_setegid: ["bool posix_setegid(long uid)", "Set effective group id"],
    posix_seteuid: ["bool posix_seteuid(long uid)", "Set effective user id"],
    posix_setgid: ["bool posix_setgid(int uid)", "Set group id (POSIX.1, 4.2.2)"],
    posix_setpgid: ["bool posix_setpgid(int pid, int pgid)", "Set process group id for job control (POSIX.1, 4.3.3)"],
    posix_setsid: ["int posix_setsid(void)", "Create session and set process group id (POSIX.1, 4.3.2)"],
    posix_setuid: ["bool posix_setuid(long uid)", "Set user id (POSIX.1, 4.2.2)"],
    posix_strerror: ["string posix_strerror(int errno)", "Retrieve the system error message associated with the given errno."],
    posix_times: ["array posix_times(void)", "Get process times (POSIX.1, 4.5.2)"],
    posix_ttyname: ["string posix_ttyname(int fd)", "Determine terminal device name (POSIX.1, 4.7.2)"],
    posix_uname: ["array posix_uname(void)", "Get system name (POSIX.1, 4.4.1)"],
    pow: ["number pow(number base, number exponent)", "Returns base raised to the power of exponent. Returns integer result when possible"],
    preg_filter: ["mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", "Perform Perl-style regular expression replacement and only return matches."],
    preg_grep: ["array preg_grep(string regex, array input [, int flags])", "Searches array and returns entries which match regex"],
    preg_last_error: ["int preg_last_error()", "Returns the error code of the last regexp execution."],
    preg_match: ["int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])", "Perform a Perl-style regular expression match"],
    preg_match_all: ["int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])", "Perform a Perl-style global regular expression match"],
    preg_quote: ["string preg_quote(string str [, string delim_char])", "Quote regular expression characters plus an optional character"],
    preg_replace: ["mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", "Perform Perl-style regular expression replacement."],
    preg_replace_callback: ["mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])", "Perform Perl-style regular expression replacement using replacement callback."],
    preg_split: ["array preg_split(string pattern, string subject [, int limit [, int flags]])", "Split string into an array using a perl-style regular expression as a delimiter"],
    prev: ["mixed prev(array array_arg)", "Move array argument's internal pointer to the previous element and return it"],
    print: ["int print(string arg)", "Output a string"],
    print_r: ["mixed print_r(mixed var [, bool return])", "Prints out or returns information about the specified variable"],
    printf: ["int printf(string format [, mixed arg1 [, mixed ...]])", "Output a formatted string"],
    proc_close: ["int proc_close(resource process)", "close a process opened by proc_open"],
    proc_get_status: ["array proc_get_status(resource process)", "get information about a process opened by proc_open"],
    proc_nice: ["bool proc_nice(int priority)", "Change the priority of the current process"],
    proc_open: ["resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])", "Run a process with more control over it's file descriptors"],
    proc_terminate: ["bool proc_terminate(resource process [, long signal])", "kill a process opened by proc_open"],
    property_exists: ["bool property_exists(mixed object_or_class, string property_name)", "Checks if the object or class has a property"],
    pspell_add_to_personal: ["bool pspell_add_to_personal(int pspell, string word)", "Adds a word to a personal list"],
    pspell_add_to_session: ["bool pspell_add_to_session(int pspell, string word)", "Adds a word to the current session"],
    pspell_check: ["bool pspell_check(int pspell, string word)", "Returns true if word is valid"],
    pspell_clear_session: ["bool pspell_clear_session(int pspell)", "Clears the current session"],
    pspell_config_create: ["int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])", "Create a new config to be used later to create a manager"],
    pspell_config_data_dir: ["bool pspell_config_data_dir(int conf, string directory)", "location of language data files"],
    pspell_config_dict_dir: ["bool pspell_config_dict_dir(int conf, string directory)", "location of the main word list"],
    pspell_config_ignore: ["bool pspell_config_ignore(int conf, int ignore)", "Ignore words <= n chars"],
    pspell_config_mode: ["bool pspell_config_mode(int conf, long mode)", "Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)"],
    pspell_config_personal: ["bool pspell_config_personal(int conf, string personal)", "Use a personal dictionary for this config"],
    pspell_config_repl: ["bool pspell_config_repl(int conf, string repl)", "Use a personal dictionary with replacement pairs for this config"],
    pspell_config_runtogether: ["bool pspell_config_runtogether(int conf, bool runtogether)", "Consider run-together words as valid components"],
    pspell_config_save_repl: ["bool pspell_config_save_repl(int conf, bool save)", "Save replacement pairs when personal list is saved for this config"],
    pspell_new: ["int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", "Load a dictionary"],
    pspell_new_config: ["int pspell_new_config(int config)", "Load a dictionary based on the given config"],
    pspell_new_personal: ["int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", "Load a dictionary with a personal wordlist"],
    pspell_save_wordlist: ["bool pspell_save_wordlist(int pspell)", "Saves the current (personal) wordlist"],
    pspell_store_replacement: ["bool pspell_store_replacement(int pspell, string misspell, string correct)", "Notify the dictionary of a user-selected replacement"],
    pspell_suggest: ["array pspell_suggest(int pspell, string word)", "Returns array of suggestions"],
    putenv: ["bool putenv(string setting)", "Set the value of an environment variable"],
    quoted_printable_decode: ["string quoted_printable_decode(string str)", "Convert a quoted-printable string to an 8 bit string"],
    quoted_printable_encode: ["string quoted_printable_encode(string str) */", 'PHP_FUNCTION(quoted_printable_encode) {  char *str, *new_str;  int str_len;  size_t new_str_len;   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) != SUCCESS) {   return;  }   if (!str_len) {   RETURN_EMPTY_STRING();  }   new_str = (char *)php_quot_print_encode((unsigned char *)str, (size_t)str_len, &new_str_len);  RETURN_STRINGL(new_str, new_str_len, 0); } /* }}}'],
    quotemeta: ["string quotemeta(string str)", "Quotes meta characters"],
    rad2deg: ["float rad2deg(float number)", "Converts the radian number to the equivalent number in degrees"],
    rand: ["int rand([int min, int max])", "Returns a random number"],
    range: ["array range(mixed low, mixed high[, int step])", "Create an array containing the range of integers or characters from low to high (inclusive)"],
    rawurldecode: ["string rawurldecode(string str)", "Decodes URL-encodes string"],
    rawurlencode: ["string rawurlencode(string str)", "URL-encodes string"],
    readdir: ["string readdir([resource dir_handle])", "Read directory entry from dir_handle"],
    readfile: ["int readfile(string filename [, bool use_include_path[, resource context]])", "Output a file or a URL"],
    readgzfile: ["int readgzfile(string filename [, int use_include_path])", "Output a .gz-file"],
    readline: ["string readline([string prompt])", "Reads a line"],
    readline_add_history: ["bool readline_add_history(string prompt)", "Adds a line to the history"],
    readline_callback_handler_install: ["void readline_callback_handler_install(string prompt, mixed callback)", "Initializes the readline callback interface and terminal, prints the prompt and returns immediately"],
    readline_callback_handler_remove: ["bool readline_callback_handler_remove()", "Removes a previously installed callback handler and restores terminal settings"],
    readline_callback_read_char: ["void readline_callback_read_char()", "Informs the readline callback interface that a character is ready for input"],
    readline_clear_history: ["bool readline_clear_history(void)", "Clears the history"],
    readline_completion_function: ["bool readline_completion_function(string funcname)", "Readline completion function?"],
    readline_info: ["mixed readline_info([string varname [, string newvalue]])", "Gets/sets various internal readline variables."],
    readline_list_history: ["array readline_list_history(void)", "Lists the history"],
    readline_on_new_line: ["void readline_on_new_line(void)", "Inform readline that the cursor has moved to a new line"],
    readline_read_history: ["bool readline_read_history([string filename])", "Reads the history"],
    readline_redisplay: ["void readline_redisplay(void)", "Ask readline to redraw the display"],
    readline_write_history: ["bool readline_write_history([string filename])", "Writes the history"],
    readlink: ["string readlink(string filename)", "Return the target of a symbolic link"],
    realpath: ["string realpath(string path)", "Return the resolved path"],
    realpath_cache_get: ["bool realpath_cache_get()", "Get current size of realpath cache"],
    realpath_cache_size: ["bool realpath_cache_size()", "Get current size of realpath cache"],
    recode_file: ["bool recode_file(string request, resource input, resource output)", "Recode file input into file output according to request"],
    recode_string: ["string recode_string(string request, string str)", "Recode string str according to request string"],
    register_shutdown_function: ["void register_shutdown_function(string function_name)", "Register a user-level function to be called on request termination"],
    register_tick_function: ["bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])", "Registers a tick callback function"],
    rename: ["bool rename(string old_name, string new_name[, resource context])", "Rename a file"],
    require: ["bool require(string path)", "Includes and evaluates the specified file, erroring if the file cannot be included"],
    require_once: ["bool require_once(string path)", "Includes and evaluates the specified file, erroring if the file cannot be included"],
    reset: ["mixed reset(array array_arg)", "Set array argument's internal pointer to the first element and return it"],
    restore_error_handler: ["void restore_error_handler(void)", "Restores the previously defined error handler function"],
    restore_exception_handler: ["void restore_exception_handler(void)", "Restores the previously defined exception handler function"],
    restore_include_path: ["void restore_include_path()", "Restore the value of the include_path configuration option"],
    rewind: ["bool rewind(resource fp)", "Rewind the position of a file pointer"],
    rewinddir: ["void rewinddir([resource dir_handle])", "Rewind dir_handle back to the start"],
    rmdir: ["bool rmdir(string dirname[, resource context])", "Remove a directory"],
    round: ["float round(float number [, int precision [, int mode]])", "Returns the number rounded to specified precision"],
    rsort: ["bool rsort(array &array_arg [, int sort_flags])", "Sort an array in reverse order"],
    rtrim: ["string rtrim(string str [, string character_mask])", "Removes trailing whitespace"],
    scandir: ["array scandir(string dir [, int sorting_order [, resource context]])", "List files & directories inside the specified path"],
    sem_acquire: ["bool sem_acquire(resource id)", "Acquires the semaphore with the given id, blocking if necessary"],
    sem_get: ["resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])", "Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously"],
    sem_release: ["bool sem_release(resource id)", "Releases the semaphore with the given id"],
    sem_remove: ["bool sem_remove(resource id)", "Removes semaphore from Unix systems"],
    serialize: ["string serialize(mixed variable)", "Returns a string representation of variable (which can later be unserialized)"],
    session_cache_expire: ["int session_cache_expire([int new_cache_expire])", "Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire"],
    session_cache_limiter: ["string session_cache_limiter([string new_cache_limiter])", "Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter"],
    session_decode: ["bool session_decode(string data)", "Deserializes data and reinitializes the variables"],
    session_destroy: ["bool session_destroy(void)", "Destroy the current session and all data associated with it"],
    session_encode: ["string session_encode(void)", "Serializes the current setup and returns the serialized representation"],
    session_get_cookie_params: ["array session_get_cookie_params(void)", "Return the session cookie parameters"],
    session_id: ["string session_id([string newid])", "Return the current session id. If newid is given, the session id is replaced with newid"],
    session_is_registered: ["bool session_is_registered(string varname)", "Checks if a variable is registered in session"],
    session_module_name: ["string session_module_name([string newname])", "Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname"],
    session_name: ["string session_name([string newname])", "Return the current session name. If newname is given, the session name is replaced with newname"],
    session_regenerate_id: ["bool session_regenerate_id([bool delete_old_session])", "Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session."],
    session_register: ["bool session_register(mixed var_names [, mixed ...])", "Adds varname(s) to the list of variables which are freezed at the session end"],
    session_save_path: ["string session_save_path([string newname])", "Return the current save path passed to module_name. If newname is given, the save path is replaced with newname"],
    session_set_cookie_params: ["void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])", "Set session cookie parameters"],
    session_set_save_handler: ["void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)", "Sets user-level functions"],
    session_start: ["bool session_start(void)", "Begin session - reinitializes freezed variables, registers browsers etc"],
    session_unregister: ["bool session_unregister(string varname)", "Removes varname from the list of variables which are freezed at the session end"],
    session_unset: ["void session_unset(void)", "Unset all registered variables"],
    session_write_close: ["void session_write_close(void)", "Write session data and end session"],
    set_error_handler: ["string set_error_handler(string error_handler [, int error_types])", "Sets a user-defined error handler function.  Returns the previously defined error handler, or false on error"],
    set_exception_handler: ["string set_exception_handler(callable exception_handler)", "Sets a user-defined exception handler function.  Returns the previously defined exception handler, or false on error"],
    set_include_path: ["string set_include_path(string new_include_path)", "Sets the include_path configuration option"],
    set_magic_quotes_runtime: ["bool set_magic_quotes_runtime(int new_setting)", "Set the current active configuration setting of magic_quotes_runtime and return previous"],
    set_time_limit: ["bool set_time_limit(int seconds)", "Sets the maximum time a script can run"],
    setcookie: ["bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", "Send a cookie"],
    setlocale: ["string setlocale(mixed category, string locale [, string ...])", "Set locale information"],
    setrawcookie: ["bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", "Send a cookie with no url encoding of the value"],
    settype: ["bool settype(mixed var, string type)", "Set the type of the variable"],
    sha1: ["string sha1(string str [, bool raw_output])", "Calculate the sha1 hash of a string"],
    sha1_file: ["string sha1_file(string filename [, bool raw_output])", "Calculate the sha1 hash of given filename"],
    shell_exec: ["string shell_exec(string cmd)", "Execute command via shell and return complete output as string"],
    shm_attach: ["int shm_attach(int key [, int memsize [, int perm]])", "Creates or open a shared memory segment"],
    shm_detach: ["bool shm_detach(resource shm_identifier)", "Disconnects from shared memory segment"],
    shm_get_var: ["mixed shm_get_var(resource id, int variable_key)", "Returns a variable from shared memory"],
    shm_has_var: ["bool shm_has_var(resource id, int variable_key)", "Checks whether a specific entry exists"],
    shm_put_var: ["bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)", "Inserts or updates a variable in shared memory"],
    shm_remove: ["bool shm_remove(resource shm_identifier)", "Removes shared memory from Unix systems"],
    shm_remove_var: ["bool shm_remove_var(resource id, int variable_key)", "Removes variable from shared memory"],
    shmop_close: ["void shmop_close (int shmid)", "closes a shared memory segment"],
    shmop_delete: ["bool shmop_delete (int shmid)", "mark segment for deletion"],
    shmop_open: ["int shmop_open (int key, string flags, int mode, int size)", "gets and attaches a shared memory segment"],
    shmop_read: ["string shmop_read (int shmid, int start, int count)", "reads from a shm segment"],
    shmop_size: ["int shmop_size (int shmid)", "returns the shm size"],
    shmop_write: ["int shmop_write (int shmid, string data, int offset)", "writes to a shared memory segment"],
    shuffle: ["bool shuffle(array array_arg)", "Randomly shuffle the contents of an array"],
    similar_text: ["int similar_text(string str1, string str2 [, float percent])", "Calculates the similarity between two strings"],
    simplexml_import_dom: ["simplemxml_element simplexml_import_dom(domNode node [, string class_name])", "Get a simplexml_element object from dom to allow for processing"],
    simplexml_load_file: ["simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])", "Load a filename and return a simplexml_element object to allow for processing"],
    simplexml_load_string: ["simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])", "Load a string and return a simplexml_element object to allow for processing"],
    sin: ["float sin(float number)", "Returns the sine of the number in radians"],
    sinh: ["float sinh(float number)", "Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2"],
    sleep: ["void sleep(int seconds)", "Delay for a given number of seconds"],
    smfi_addheader: ["bool smfi_addheader(string headerf, string headerv)", "Adds a header to the current message."],
    smfi_addrcpt: ["bool smfi_addrcpt(string rcpt)", "Add a recipient to the message envelope."],
    smfi_chgheader: ["bool smfi_chgheader(string headerf, string headerv)", "Changes a header's value for the current message."],
    smfi_delrcpt: ["bool smfi_delrcpt(string rcpt)", "Removes the named recipient from the current message's envelope."],
    smfi_getsymval: ["string smfi_getsymval(string macro)", "Returns the value of the given macro or NULL if the macro is not defined."],
    smfi_replacebody: ["bool smfi_replacebody(string body)", "Replaces the body of the current message. If called more than once,    subsequent calls result in data being appended to the new body."],
    smfi_setflags: ["void smfi_setflags(long flags)", "Sets the flags describing the actions the filter may take."],
    smfi_setreply: ["bool smfi_setreply(string rcode, string xcode, string message)", "Directly set the SMTP error reply code for this connection.    This code will be used on subsequent error replies resulting from actions taken by this filter."],
    smfi_settimeout: ["void smfi_settimeout(long timeout)", "Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket."],
    snmp2_get: ["string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object"],
    snmp2_getnext: ["string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object"],
    snmp2_real_walk: ["array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects including their respective object id withing the specified one"],
    snmp2_set: ["int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", "Set the value of a SNMP object"],
    snmp2_walk: ["array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects under the specified object id"],
    snmp3_get: ["int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object"],
    snmp3_getnext: ["int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object"],
    snmp3_real_walk: ["int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object"],
    snmp3_set: ["int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])", "Fetch the value of a SNMP object"],
    snmp3_walk: ["int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object"],
    snmp_get_quick_print: ["bool snmp_get_quick_print(void)", "Return the current status of quick_print"],
    snmp_get_valueretrieval: ["int snmp_get_valueretrieval()", "Return the method how the SNMP values will be returned"],
    snmp_read_mib: ["int snmp_read_mib(string filename)", "Reads and parses a MIB file into the active MIB tree."],
    snmp_set_enum_print: ["void snmp_set_enum_print(int enum_print)", "Return all values that are enums with their enum value instead of the raw integer"],
    snmp_set_oid_output_format: ["void snmp_set_oid_output_format(int oid_format)", "Set the OID output format."],
    snmp_set_quick_print: ["void snmp_set_quick_print(int quick_print)", "Return all objects including their respective object id withing the specified one"],
    snmp_set_valueretrieval: ["void snmp_set_valueretrieval(int method)", "Specify the method how the SNMP values will be returned"],
    snmpget: ["string snmpget(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object"],
    snmpgetnext: ["string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object"],
    snmprealwalk: ["array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects including their respective object id withing the specified one"],
    snmpset: ["int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", "Set the value of a SNMP object"],
    snmpwalk: ["array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects under the specified object id"],
    socket_accept: ["resource socket_accept(resource socket)", "Accepts a connection on the listening socket fd"],
    socket_bind: ["bool socket_bind(resource socket, string addr [, int port])", "Binds an open socket to a listening port, port is only specified in AF_INET family."],
    socket_clear_error: ["void socket_clear_error([resource socket])", "Clears the error on the socket or the last error code."],
    socket_close: ["void socket_close(resource socket)", "Closes a file descriptor"],
    socket_connect: ["bool socket_connect(resource socket, string addr [, int port])", "Opens a connection to addr:port on the socket specified by socket"],
    socket_create: ["resource socket_create(int domain, int type, int protocol)", "Creates an endpoint for communication in the domain specified by domain, of type specified by type"],
    socket_create_listen: ["resource socket_create_listen(int port[, int backlog])", "Opens a socket on port to accept connections"],
    socket_create_pair: ["bool socket_create_pair(int domain, int type, int protocol, array &fd)", "Creates a pair of indistinguishable sockets and stores them in fds."],
    socket_get_option: ["mixed socket_get_option(resource socket, int level, int optname)", "Gets socket options for the socket"],
    socket_getpeername: ["bool socket_getpeername(resource socket, string &addr[, int &port])", "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type."],
    socket_getsockname: ["bool socket_getsockname(resource socket, string &addr[, int &port])", "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type."],
    socket_last_error: ["int socket_last_error([resource socket])", "Returns the last socket error (either the last used or the provided socket resource)"],
    socket_listen: ["bool socket_listen(resource socket[, int backlog])", "Sets the maximum number of connections allowed to be waited for on the socket specified by fd"],
    socket_read: ["string socket_read(resource socket, int length [, int type])", "Reads a maximum of length bytes from socket"],
    socket_recv: ["int socket_recv(resource socket, string &buf, int len, int flags)", "Receives data from a connected socket"],
    socket_recvfrom: ["int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])", "Receives data from a socket, connected or not"],
    socket_select: ["int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])", "Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec"],
    socket_send: ["int socket_send(resource socket, string buf, int len, int flags)", "Sends data to a connected socket"],
    socket_sendto: ["int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])", "Sends a message to a socket, whether it is connected or not"],
    socket_set_block: ["bool socket_set_block(resource socket)", "Sets blocking mode on a socket resource"],
    socket_set_nonblock: ["bool socket_set_nonblock(resource socket)", "Sets nonblocking mode on a socket resource"],
    socket_set_option: ["bool socket_set_option(resource socket, int level, int optname, int|array optval)", "Sets socket options for the socket"],
    socket_shutdown: ["bool socket_shutdown(resource socket[, int how])", "Shuts down a socket for receiving, sending, or both."],
    socket_strerror: ["string socket_strerror(int errno)", "Returns a string describing an error"],
    socket_write: ["int socket_write(resource socket, string buf[, int length])", "Writes the buffer to the socket resource, length is optional"],
    solid_fetch_prev: ["bool solid_fetch_prev(resource result_id)", ""],
    sort: ["bool sort(array &array_arg [, int sort_flags])", "Sort an array"],
    soundex: ["string soundex(string str)", "Calculate the soundex key of a string"],
    spl_autoload: ["void spl_autoload(string class_name [, string file_extensions])", "Default implementation for __autoload()"],
    spl_autoload_call: ["void spl_autoload_call(string class_name)", "Try all registerd autoload function to load the requested class"],
    spl_autoload_extensions: ["string spl_autoload_extensions([string file_extensions])", "Register and return default file extensions for spl_autoload"],
    spl_autoload_functions: ["false|array spl_autoload_functions()", "Return all registered __autoload() functionns"],
    spl_autoload_register: ['bool spl_autoload_register([mixed autoload_function = "spl_autoload" [, throw = true [, prepend]]])', "Register given function as __autoload() implementation"],
    spl_autoload_unregister: ["bool spl_autoload_unregister(mixed autoload_function)", "Unregister given function as __autoload() implementation"],
    spl_classes: ["array spl_classes()", "Return an array containing the names of all clsses and interfaces defined in SPL"],
    spl_object_hash: ["string spl_object_hash(object obj)", "Return hash id for given object"],
    split: ["array split(string pattern, string string [, int limit])", "Split string into array by regular expression"],
    spliti: ["array spliti(string pattern, string string [, int limit])", "Split string into array by regular expression case-insensitive"],
    sprintf: ["string sprintf(string format [, mixed arg1 [, mixed ...]])", "Return a formatted string"],
    sql_regcase: ["string sql_regcase(string string)", "Make regular expression for case insensitive match"],
    sqlite_array_query: ["array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])", "Executes a query against a given database and returns an array of arrays."],
    sqlite_busy_timeout: ["void sqlite_busy_timeout(resource db, int ms)", "Set busy timeout duration. If ms <= 0, all busy handlers are disabled."],
    sqlite_changes: ["int sqlite_changes(resource db)", "Returns the number of rows that were changed by the most recent SQL statement."],
    sqlite_close: ["void sqlite_close(resource db)", "Closes an open sqlite database."],
    sqlite_column: ["mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])", "Fetches a column from the current row of a result set."],
    sqlite_create_aggregate: ["bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])", "Registers an aggregate function for queries."],
    sqlite_create_function: ["bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])", 'Registers a "regular" function for queries.'],
    sqlite_current: ["array sqlite_current(resource result [, int result_type [, bool decode_binary]])", "Fetches the current row from a result set as an array."],
    sqlite_error_string: ["string sqlite_error_string(int error_code)", "Returns the textual description of an error code."],
    sqlite_escape_string: ["string sqlite_escape_string(string item)", "Escapes a string for use as a query parameter."],
    sqlite_exec: ["boolean sqlite_exec(string query, resource db[, string &error_message])", "Executes a result-less query against a given database"],
    sqlite_factory: ["object sqlite_factory(string filename [, int mode [, string &error_message]])", "Opens a SQLite database and creates an object for it. Will create the database if it does not exist."],
    sqlite_fetch_all: ["array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])", "Fetches all rows from a result set as an array of arrays."],
    sqlite_fetch_array: ["array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])", "Fetches the next row from a result set as an array."],
    sqlite_fetch_column_types: ["resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])", "Return an array of column types from a particular table."],
    sqlite_fetch_object: ["object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])", "Fetches the next row from a result set as an object."],
    sqlite_fetch_single: ["string sqlite_fetch_single(resource result [, bool decode_binary])", "Fetches the first column of a result set as a string."],
    sqlite_field_name: ["string sqlite_field_name(resource result, int field_index)", "Returns the name of a particular field of a result set."],
    sqlite_has_prev: ["bool sqlite_has_prev(resource result)", "* Returns whether a previous row is available."],
    sqlite_key: ["int sqlite_key(resource result)", "Return the current row index of a buffered result."],
    sqlite_last_error: ["int sqlite_last_error(resource db)", "Returns the error code of the last error for a database."],
    sqlite_last_insert_rowid: ["int sqlite_last_insert_rowid(resource db)", "Returns the rowid of the most recently inserted row."],
    sqlite_libencoding: ["string sqlite_libencoding()", "Returns the encoding (iso8859 or UTF-8) of the linked SQLite library."],
    sqlite_libversion: ["string sqlite_libversion()", "Returns the version of the linked SQLite library."],
    sqlite_next: ["bool sqlite_next(resource result)", "Seek to the next row number of a result set."],
    sqlite_num_fields: ["int sqlite_num_fields(resource result)", "Returns the number of fields in a result set."],
    sqlite_num_rows: ["int sqlite_num_rows(resource result)", "Returns the number of rows in a buffered result set."],
    sqlite_open: ["resource sqlite_open(string filename [, int mode [, string &error_message]])", "Opens a SQLite database. Will create the database if it does not exist."],
    sqlite_popen: ["resource sqlite_popen(string filename [, int mode [, string &error_message]])", "Opens a persistent handle to a SQLite database. Will create the database if it does not exist."],
    sqlite_prev: ["bool sqlite_prev(resource result)", "* Seek to the previous row number of a result set."],
    sqlite_query: ["resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])", "Executes a query against a given database and returns a result handle."],
    sqlite_rewind: ["bool sqlite_rewind(resource result)", "Seek to the first row number of a buffered result set."],
    sqlite_seek: ["bool sqlite_seek(resource result, int row)", "Seek to a particular row number of a buffered result set."],
    sqlite_single_query: ["array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])", "Executes a query and returns either an array for one single column or the value of the first row."],
    sqlite_udf_decode_binary: ["string sqlite_udf_decode_binary(string data)", "Decode binary encoding on a string parameter passed to an UDF."],
    sqlite_udf_encode_binary: ["string sqlite_udf_encode_binary(string data)", "Apply binary encoding (if required) to a string to return from an UDF."],
    sqlite_unbuffered_query: ["resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])", "Executes a query that does not prefetch and buffer all data."],
    sqlite_valid: ["bool sqlite_valid(resource result)", "Returns whether more rows are available."],
    sqrt: ["float sqrt(float number)", "Returns the square root of the number"],
    srand: ["void srand([int seed])", "Seeds random number generator"],
    sscanf: ["mixed sscanf(string str, string format [, string ...])", "Implements an ANSI C compatible sscanf"],
    stat: ["array stat(string filename)", "Give information about a file"],
    str_getcsv: ["array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])", "Parse a CSV string into an array"],
    str_ireplace: ["mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])", "Replaces all occurrences of search in haystack with replace / case-insensitive"],
    str_pad: ["string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])", "Returns input string padded on the left or right to specified length with pad_string"],
    str_repeat: ["string str_repeat(string input, int mult)", "Returns the input string repeat mult times"],
    str_replace: ["mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])", "Replaces all occurrences of search in haystack with replace"],
    str_rot13: ["string str_rot13(string str)", "Perform the rot13 transform on a string"],
    str_shuffle: ["void str_shuffle(string str)", "Shuffles string. One permutation of all possible is created"],
    str_split: ["array str_split(string str [, int split_length])", "Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long."],
    str_word_count: ["mixed str_word_count(string str, [int format [, string charlist]])", 'Counts the number of words inside a string. If format of 1 is specified,     then the function will return an array containing all the words     found inside the string. If format of 2 is specified, then the function     will return an associated array where the position of the word is the key     and the word itself is the value.          For the purpose of this function, \'word\' is defined as a locale dependent     string containing alphabetic characters, which also may contain, but not start     with "\'" and "-" characters.'],
    strcasecmp: ["int strcasecmp(string str1, string str2)", "Binary safe case-insensitive string comparison"],
    strchr: ["string strchr(string haystack, string needle)", "An alias for strstr"],
    strcmp: ["int strcmp(string str1, string str2)", "Binary safe string comparison"],
    strcoll: ["int strcoll(string str1, string str2)", "Compares two strings using the current locale"],
    strcspn: ["int strcspn(string str, string mask [, start [, len]])", "Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)"],
    stream_bucket_append: ["void stream_bucket_append(resource brigade, resource bucket)", "Append bucket to brigade"],
    stream_bucket_make_writeable: ["object stream_bucket_make_writeable(resource brigade)", "Return a bucket object from the brigade for operating on"],
    stream_bucket_new: ["resource stream_bucket_new(resource stream, string buffer)", "Create a new bucket for use on the current stream"],
    stream_bucket_prepend: ["void stream_bucket_prepend(resource brigade, resource bucket)", "Prepend bucket to brigade"],
    stream_context_create: ["resource stream_context_create([array options[, array params]])", "Create a file context and optionally set parameters"],
    stream_context_get_default: ["resource stream_context_get_default([array options])", "Get a handle on the default file/stream context and optionally set parameters"],
    stream_context_get_options: ["array stream_context_get_options(resource context|resource stream)", "Retrieve options for a stream/wrapper/context"],
    stream_context_get_params: ["array stream_context_get_params(resource context|resource stream)", "Get parameters of a file context"],
    stream_context_set_default: ["resource stream_context_set_default(array options)", "Set default file/stream context, returns the context as a resource"],
    stream_context_set_option: ["bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)", "Set an option for a wrapper"],
    stream_context_set_params: ["bool stream_context_set_params(resource context|resource stream, array options)", "Set parameters for a file context"],
    stream_copy_to_stream: ["long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])", "Reads up to maxlen bytes from source stream and writes them to dest stream."],
    stream_filter_append: ["resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])", "Append a filter to a stream"],
    stream_filter_prepend: ["resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])", "Prepend a filter to a stream"],
    stream_filter_register: ["bool stream_filter_register(string filtername, string classname)", "Registers a custom filter handler class"],
    stream_filter_remove: ["bool stream_filter_remove(resource stream_filter)", "Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource"],
    stream_get_contents: ["string stream_get_contents(resource source [, long maxlen [, long offset]])", "Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string."],
    stream_get_filters: ["array stream_get_filters(void)", "Returns a list of registered filters"],
    stream_get_line: ["string stream_get_line(resource stream, int maxlen [, string ending])", "Read up to maxlen bytes from a stream or until the ending string is found"],
    stream_get_meta_data: ["array stream_get_meta_data(resource fp)", "Retrieves header/meta data from streams/file pointers"],
    stream_get_transports: ["array stream_get_transports()", "Retrieves list of registered socket transports"],
    stream_get_wrappers: ["array stream_get_wrappers()", "Retrieves list of registered stream wrappers"],
    stream_is_local: ["bool stream_is_local(resource stream|string url)", ""],
    stream_resolve_include_path: ["string stream_resolve_include_path(string filename)", "Determine what file will be opened by calls to fopen() with a relative path"],
    stream_select: ["int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])", "Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec"],
    stream_set_blocking: ["bool stream_set_blocking(resource socket, int mode)", "Set blocking/non-blocking mode on a socket or stream"],
    stream_set_timeout: ["bool stream_set_timeout(resource stream, int seconds [, int microseconds])", "Set timeout on stream read to seconds + microseonds"],
    stream_set_write_buffer: ["int stream_set_write_buffer(resource fp, int buffer)", "Set file write buffer"],
    stream_socket_accept: ["resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])", "Accept a client connection from a server socket"],
    stream_socket_client: ["resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])", "Open a client connection to a remote address"],
    stream_socket_enable_crypto: ["int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])", "Enable or disable a specific kind of crypto on the stream"],
    stream_socket_get_name: ["string stream_socket_get_name(resource stream, bool want_peer)", "Returns either the locally bound or remote name for a socket stream"],
    stream_socket_pair: ["array stream_socket_pair(int domain, int type, int protocol)", "Creates a pair of connected, indistinguishable socket streams"],
    stream_socket_recvfrom: ["string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])", "Receives data from a socket stream"],
    stream_socket_sendto: ["long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])", "Send data to a socket stream.  If target_addr is specified it must be in dotted quad (or [ipv6]) format"],
    stream_socket_server: ["resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])", "Create a server socket bound to localaddress"],
    stream_socket_shutdown: ["int stream_socket_shutdown(resource stream, int how)", "causes all or part of a full-duplex connection on the socket associated  with stream to be shut down.  If how is SHUT_RD,  further receptions will  be disallowed. If how is SHUT_WR, further transmissions will be disallowed.  If how is SHUT_RDWR,  further  receptions and transmissions will be  disallowed."],
    stream_supports_lock: ["bool stream_supports_lock(resource stream)", "Tells whether the stream supports locking through flock()."],
    stream_wrapper_register: ["bool stream_wrapper_register(string protocol, string classname[, integer flags])", "Registers a custom URL protocol handler class"],
    stream_wrapper_restore: ["bool stream_wrapper_restore(string protocol)", "Restore the original protocol handler, overriding if necessary"],
    stream_wrapper_unregister: ["bool stream_wrapper_unregister(string protocol)", "Unregister a wrapper for the life of the current request."],
    strftime: ["string strftime(string format [, int timestamp])", "Format a local time/date according to locale settings"],
    strip_tags: ["string strip_tags(string str [, string allowable_tags])", "Strips HTML and PHP tags from a string"],
    stripcslashes: ["string stripcslashes(string str)", "Strips backslashes from a string. Uses C-style conventions"],
    stripos: ["int stripos(string haystack, string needle [, int offset])", "Finds position of first occurrence of a string within another, case insensitive"],
    stripslashes: ["string stripslashes(string str)", "Strips backslashes from a string"],
    stristr: ["string stristr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another, case insensitive"],
    strlen: ["int strlen(string str)", "Get string length"],
    strnatcasecmp: ["int strnatcasecmp(string s1, string s2)", "Returns the result of case-insensitive string comparison using 'natural' algorithm"],
    strnatcmp: ["int strnatcmp(string s1, string s2)", "Returns the result of string comparison using 'natural' algorithm"],
    strncasecmp: ["int strncasecmp(string str1, string str2, int len)", "Binary safe string comparison"],
    strncmp: ["int strncmp(string str1, string str2, int len)", "Binary safe string comparison"],
    strpbrk: ["array strpbrk(string haystack, string char_list)", "Search a string for any of a set of characters"],
    strpos: ["int strpos(string haystack, string needle [, int offset])", "Finds position of first occurrence of a string within another"],
    strptime: ["string strptime(string timestamp, string format)", "Parse a time/date generated with strftime()"],
    strrchr: ["string strrchr(string haystack, string needle)", "Finds the last occurrence of a character in a string within another"],
    strrev: ["string strrev(string str)", "Reverse a string"],
    strripos: ["int strripos(string haystack, string needle [, int offset])", "Finds position of last occurrence of a string within another string"],
    strrpos: ["int strrpos(string haystack, string needle [, int offset])", "Finds position of last occurrence of a string within another string"],
    strspn: ["int strspn(string str, string mask [, start [, len]])", "Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)"],
    strstr: ["string strstr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another"],
    strtok: ["string strtok([string str,] string token)", "Tokenize a string"],
    strtolower: ["string strtolower(string str)", "Makes a string lowercase"],
    strtotime: ["int strtotime(string time [, int now ])", "Convert string representation of date and time to a timestamp"],
    strtoupper: ["string strtoupper(string str)", "Makes a string uppercase"],
    strtr: ["string strtr(string str, string from[, string to])", "Translates characters in str using given translation tables"],
    strval: ["string strval(mixed var)", "Get the string value of a variable"],
    substr: ["string substr(string str, int start [, int length])", "Returns part of a string"],
    substr_compare: ["int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])", "Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters"],
    substr_count: ["int substr_count(string haystack, string needle [, int offset [, int length]])", "Returns the number of times a substring occurs in the string"],
    substr_replace: ["mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])", "Replaces part of a string with another string"],
    sybase_affected_rows: ["int sybase_affected_rows([resource link_id])", "Get number of affected rows in last query"],
    sybase_close: ["bool sybase_close([resource link_id])", "Close Sybase connection"],
    sybase_connect: ["int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])", "Open Sybase server connection"],
    sybase_data_seek: ["bool sybase_data_seek(resource result, int offset)", "Move internal row pointer"],
    sybase_deadlock_retry_count: ["void sybase_deadlock_retry_count(int retry_count)", "Sets deadlock retry count"],
    sybase_fetch_array: ["array sybase_fetch_array(resource result)", "Fetch row as array"],
    sybase_fetch_assoc: ["array sybase_fetch_assoc(resource result)", "Fetch row as array without numberic indices"],
    sybase_fetch_field: ["object sybase_fetch_field(resource result [, int offset])", "Get field information"],
    sybase_fetch_object: ["object sybase_fetch_object(resource result [, mixed object])", "Fetch row as object"],
    sybase_fetch_row: ["array sybase_fetch_row(resource result)", "Get row as enumerated array"],
    sybase_field_seek: ["bool sybase_field_seek(resource result, int offset)", "Set field offset"],
    sybase_free_result: ["bool sybase_free_result(resource result)", "Free result memory"],
    sybase_get_last_message: ["string sybase_get_last_message(void)", "Returns the last message from server (over min_message_severity)"],
    sybase_min_client_severity: ["void sybase_min_client_severity(int severity)", "Sets minimum client severity"],
    sybase_min_server_severity: ["void sybase_min_server_severity(int severity)", "Sets minimum server severity"],
    sybase_num_fields: ["int sybase_num_fields(resource result)", "Get number of fields in result"],
    sybase_num_rows: ["int sybase_num_rows(resource result)", "Get number of rows in result"],
    sybase_pconnect: ["int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])", "Open persistent Sybase connection"],
    sybase_query: ["int sybase_query(string query [, resource link_id])", "Send Sybase query"],
    sybase_result: ["string sybase_result(resource result, int row, mixed field)", "Get result data"],
    sybase_select_db: ["bool sybase_select_db(string database [, resource link_id])", "Select Sybase database"],
    sybase_set_message_handler: ["bool sybase_set_message_handler(mixed error_func [, resource connection])", "Set the error handler, to be called when a server message is raised.     If error_func is NULL the handler will be deleted"],
    sybase_unbuffered_query: ["int sybase_unbuffered_query(string query [, resource link_id])", "Send Sybase query"],
    symlink: ["int symlink(string target, string link)", "Create a symbolic link"],
    sys_get_temp_dir: ["string sys_get_temp_dir()", "Returns directory path used for temporary files"],
    sys_getloadavg: ["array sys_getloadavg()", ""],
    syslog: ["bool syslog(int priority, string message)", "Generate a system log message"],
    system: ["int system(string command [, int &return_value])", "Execute an external program and display output"],
    tan: ["float tan(float number)", "Returns the tangent of the number in radians"],
    tanh: ["float tanh(float number)", "Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)"],
    tempnam: ["string tempnam(string dir, string prefix)", "Create a unique filename in a directory"],
    textdomain: ["string textdomain(string domain)", 'Set the textdomain to "domain". Returns the current domain'],
    tidy_access_count: ["int tidy_access_count()", "Returns the Number of Tidy accessibility warnings encountered for specified document."],
    tidy_clean_repair: ["boolean tidy_clean_repair()", "Execute configured cleanup and repair operations on parsed markup"],
    tidy_config_count: ["int tidy_config_count()", "Returns the Number of Tidy configuration errors encountered for specified document."],
    tidy_diagnose: ["boolean tidy_diagnose()", "Run configured diagnostics on parsed and repaired markup."],
    tidy_error_count: ["int tidy_error_count()", "Returns the Number of Tidy errors encountered for specified document."],
    tidy_get_body: ["TidyNode tidy_get_body(resource tidy)", "Returns a TidyNode Object starting from the <BODY> tag of the tidy parse tree"],
    tidy_get_config: ["array tidy_get_config()", "Get current Tidy configuarion"],
    tidy_get_error_buffer: ["string tidy_get_error_buffer([boolean detailed])", "Return warnings and errors which occured parsing the specified document"],
    tidy_get_head: ["TidyNode tidy_get_head()", "Returns a TidyNode Object starting from the <HEAD> tag of the tidy parse tree"],
    tidy_get_html: ["TidyNode tidy_get_html()", "Returns a TidyNode Object starting from the <HTML> tag of the tidy parse tree"],
    tidy_get_html_ver: ["int tidy_get_html_ver()", "Get the Detected HTML version for the specified document."],
    tidy_get_opt_doc: ["string tidy_get_opt_doc(tidy resource, string optname)", "Returns the documentation for the given option name"],
    tidy_get_output: ["string tidy_get_output()", "Return a string representing the parsed tidy markup"],
    tidy_get_release: ["string tidy_get_release()", "Get release date (version) for Tidy library"],
    tidy_get_root: ["TidyNode tidy_get_root()", "Returns a TidyNode Object representing the root of the tidy parse tree"],
    tidy_get_status: ["int tidy_get_status()", "Get status of specfied document."],
    tidy_getopt: ["mixed tidy_getopt(string option)", "Returns the value of the specified configuration option for the tidy document."],
    tidy_is_xhtml: ["boolean tidy_is_xhtml()", "Indicates if the document is a XHTML document."],
    tidy_is_xml: ["boolean tidy_is_xml()", "Indicates if the document is a generic (non HTML/XHTML) XML document."],
    tidy_parse_file: ["boolean tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])", "Parse markup in file or URI"],
    tidy_parse_string: ["bool tidy_parse_string(string input [, mixed config_options [, string encoding]])", "Parse a document stored in a string"],
    tidy_repair_file: ["boolean tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])", "Repair a file using an optionally provided configuration file"],
    tidy_repair_string: ["boolean tidy_repair_string(string data [, mixed config_file [, string encoding]])", "Repair a string using an optionally provided configuration file"],
    tidy_warning_count: ["int tidy_warning_count()", "Returns the Number of Tidy warnings encountered for specified document."],
    time: ["int time(void)", "Return current UNIX timestamp"],
    time_nanosleep: ["mixed time_nanosleep(long seconds, long nanoseconds)", "Delay for a number of seconds and nano seconds"],
    time_sleep_until: ["mixed time_sleep_until(float timestamp)", "Make the script sleep until the specified time"],
    timezone_abbreviations_list: ["array timezone_abbreviations_list()", "Returns associative array containing dst, offset and the timezone name"],
    timezone_identifiers_list: ["array timezone_identifiers_list([long what[, string country]])", "Returns numerically index array with all timezone identifiers."],
    timezone_location_get: ["array timezone_location_get()", "Returns location information for a timezone, including country code, latitude/longitude and comments"],
    timezone_name_from_abbr: ["string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])", "Returns the timezone name from abbrevation"],
    timezone_name_get: ["string timezone_name_get(DateTimeZone object)", "Returns the name of the timezone."],
    timezone_offset_get: ["long timezone_offset_get(DateTimeZone object, DateTime object)", "Returns the timezone offset."],
    timezone_open: ["DateTimeZone timezone_open(string timezone)", "Returns new DateTimeZone object"],
    timezone_transitions_get: ["array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])", "Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone."],
    timezone_version_get: ["array timezone_version_get()", "Returns the Olson database version number."],
    tmpfile: ["resource tmpfile(void)", "Create a temporary file that will be deleted automatically after use"],
    token_get_all: ["array token_get_all(string source)", ""],
    token_name: ["string token_name(int type)", ""],
    touch: ["bool touch(string filename [, int time [, int atime]])", "Set modification time of file"],
    trigger_error: ["void trigger_error(string messsage [, int error_type])", "Generates a user-level error/warning/notice message"],
    trim: ["string trim(string str [, string character_mask])", "Strips whitespace from the beginning and end of a string"],
    uasort: ["bool uasort(array array_arg, string cmp_function)", "Sort an array with a user-defined comparison function and maintain index association"],
    ucfirst: ["string ucfirst(string str)", "Make a string's first character lowercase"],
    ucwords: ["string ucwords(string str)", "Uppercase the first character of every word in a string"],
    uksort: ["bool uksort(array array_arg, string cmp_function)", "Sort an array by keys using a user-defined comparison function"],
    umask: ["int umask([int mask])", "Return or change the umask"],
    uniqid: ["string uniqid([string prefix [, bool more_entropy]])", "Generates a unique ID"],
    unixtojd: ["int unixtojd([int timestamp])", "Convert UNIX timestamp to Julian Day"],
    unlink: ["bool unlink(string filename[, context context])", "Delete a file"],
    unpack: ["array unpack(string format, string input)", "Unpack binary string into named array elements according to format argument"],
    unregister_tick_function: ["void unregister_tick_function(string function_name)", "Unregisters a tick callback function"],
    unserialize: ["mixed unserialize(string variable_representation)", "Takes a string representation of variable and recreates it"],
    unset: ["void unset (mixed var [, mixed var])", "Unset a given variable"],
    urldecode: ["string urldecode(string str)", "Decodes URL-encoded string"],
    urlencode: ["string urlencode(string str)", "URL-encodes string"],
    usleep: ["void usleep(int micro_seconds)", "Delay for a given number of micro seconds"],
    usort: ["bool usort(array array_arg, string cmp_function)", "Sort an array by values using a user-defined comparison function"],
    utf8_decode: ["string utf8_decode(string data)", "Converts a UTF-8 encoded string to ISO-8859-1"],
    utf8_encode: ["string utf8_encode(string data)", "Encodes an ISO-8859-1 string to UTF-8"],
    var_dump: ["void var_dump(mixed var)", "Dumps a string representation of variable to output"],
    var_export: ["mixed var_export(mixed var [, bool return])", "Outputs or returns a string representation of a variable"],
    variant_abs: ["mixed variant_abs(mixed left)", "Returns the absolute value of a variant"],
    variant_add: ["mixed variant_add(mixed left, mixed right)", '"Adds" two variant values together and returns the result'],
    variant_and: ["mixed variant_and(mixed left, mixed right)", "performs a bitwise AND operation between two variants and returns the result"],
    variant_cast: ["object variant_cast(object variant, int type)", "Convert a variant into a new variant object of another type"],
    variant_cat: ["mixed variant_cat(mixed left, mixed right)", "concatenates two variant values together and returns the result"],
    variant_cmp: ["int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])", "Compares two variants"],
    variant_date_from_timestamp: ["object variant_date_from_timestamp(int timestamp)", "Returns a variant date representation of a unix timestamp"],
    variant_date_to_timestamp: ["int variant_date_to_timestamp(object variant)", "Converts a variant date/time value to unix timestamp"],
    variant_div: ["mixed variant_div(mixed left, mixed right)", "Returns the result from dividing two variants"],
    variant_eqv: ["mixed variant_eqv(mixed left, mixed right)", "Performs a bitwise equivalence on two variants"],
    variant_fix: ["mixed variant_fix(mixed left)", "Returns the integer part ? of a variant"],
    variant_get_type: ["int variant_get_type(object variant)", "Returns the VT_XXX type code for a variant"],
    variant_idiv: ["mixed variant_idiv(mixed left, mixed right)", "Converts variants to integers and then returns the result from dividing them"],
    variant_imp: ["mixed variant_imp(mixed left, mixed right)", "Performs a bitwise implication on two variants"],
    variant_int: ["mixed variant_int(mixed left)", "Returns the integer portion of a variant"],
    variant_mod: ["mixed variant_mod(mixed left, mixed right)", "Divides two variants and returns only the remainder"],
    variant_mul: ["mixed variant_mul(mixed left, mixed right)", "multiplies the values of the two variants and returns the result"],
    variant_neg: ["mixed variant_neg(mixed left)", "Performs logical negation on a variant"],
    variant_not: ["mixed variant_not(mixed left)", "Performs bitwise not negation on a variant"],
    variant_or: ["mixed variant_or(mixed left, mixed right)", "Performs a logical disjunction on two variants"],
    variant_pow: ["mixed variant_pow(mixed left, mixed right)", "Returns the result of performing the power function with two variants"],
    variant_round: ["mixed variant_round(mixed left, int decimals)", "Rounds a variant to the specified number of decimal places"],
    variant_set: ["void variant_set(object variant, mixed value)", "Assigns a new value for a variant object"],
    variant_set_type: ["void variant_set_type(object variant, int type)", 'Convert a variant into another type.  Variant is modified "in-place"'],
    variant_sub: ["mixed variant_sub(mixed left, mixed right)", "subtracts the value of the right variant from the left variant value and returns the result"],
    variant_xor: ["mixed variant_xor(mixed left, mixed right)", "Performs a logical exclusion on two variants"],
    version_compare: ["int version_compare(string ver1, string ver2 [, string oper])", 'Compares two "PHP-standardized" version number strings'],
    vfprintf: ["int vfprintf(resource stream, string format, array args)", "Output a formatted string into a stream"],
    virtual: ["bool virtual(string filename)", "Perform an Apache sub-request"],
    vprintf: ["int vprintf(string format, array args)", "Output a formatted string"],
    vsprintf: ["string vsprintf(string format, array args)", "Return a formatted string"],
    wddx_add_vars: ["int wddx_add_vars(resource packet_id,  mixed var_names [, mixed ...])", "Serializes given variables and adds them to packet given by packet_id"],
    wddx_deserialize: ["mixed wddx_deserialize(mixed packet)", "Deserializes given packet and returns a PHP value"],
    wddx_packet_end: ["string wddx_packet_end(resource packet_id)", "Ends specified WDDX packet and returns the string containing the packet"],
    wddx_packet_start: ["resource wddx_packet_start([string comment])", "Starts a WDDX packet with optional comment and returns the packet id"],
    wddx_serialize_value: ["string wddx_serialize_value(mixed var [, string comment])", "Creates a new packet and serializes the given value"],
    wddx_serialize_vars: ["string wddx_serialize_vars(mixed var_name [, mixed ...])", "Creates a new packet and serializes given variables into a struct"],
    wordwrap: ["string wordwrap(string str [, int width [, string break [, boolean cut]]])", "Wraps buffer to selected number of characters using string break char"],
    xml_error_string: ["string xml_error_string(int code)", "Get XML parser error string"],
    xml_get_current_byte_index: ["int xml_get_current_byte_index(resource parser)", "Get current byte index for an XML parser"],
    xml_get_current_column_number: ["int xml_get_current_column_number(resource parser)", "Get current column number for an XML parser"],
    xml_get_current_line_number: ["int xml_get_current_line_number(resource parser)", "Get current line number for an XML parser"],
    xml_get_error_code: ["int xml_get_error_code(resource parser)", "Get XML parser error code"],
    xml_parse: ["int xml_parse(resource parser, string data [, int isFinal])", "Start parsing an XML document"],
    xml_parse_into_struct: ["int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])", "Parsing a XML document"],
    xml_parser_create: ["resource xml_parser_create([string encoding])", "Create an XML parser"],
    xml_parser_create_ns: ["resource xml_parser_create_ns([string encoding [, string sep]])", "Create an XML parser"],
    xml_parser_free: ["int xml_parser_free(resource parser)", "Free an XML parser"],
    xml_parser_get_option: ["int xml_parser_get_option(resource parser, int option)", "Get options from an XML parser"],
    xml_parser_set_option: ["int xml_parser_set_option(resource parser, int option, mixed value)", "Set options in an XML parser"],
    xml_set_character_data_handler: ["int xml_set_character_data_handler(resource parser, string hdl)", "Set up character data handler"],
    xml_set_default_handler: ["int xml_set_default_handler(resource parser, string hdl)", "Set up default handler"],
    xml_set_element_handler: ["int xml_set_element_handler(resource parser, string shdl, string ehdl)", "Set up start and end element handlers"],
    xml_set_end_namespace_decl_handler: ["int xml_set_end_namespace_decl_handler(resource parser, string hdl)", "Set up character data handler"],
    xml_set_external_entity_ref_handler: ["int xml_set_external_entity_ref_handler(resource parser, string hdl)", "Set up external entity reference handler"],
    xml_set_notation_decl_handler: ["int xml_set_notation_decl_handler(resource parser, string hdl)", "Set up notation declaration handler"],
    xml_set_object: ["int xml_set_object(resource parser, object &obj)", "Set up object which should be used for callbacks"],
    xml_set_processing_instruction_handler: ["int xml_set_processing_instruction_handler(resource parser, string hdl)", "Set up processing instruction (PI) handler"],
    xml_set_start_namespace_decl_handler: ["int xml_set_start_namespace_decl_handler(resource parser, string hdl)", "Set up character data handler"],
    xml_set_unparsed_entity_decl_handler: ["int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)", "Set up unparsed entity declaration handler"],
    xmlrpc_decode: ["array xmlrpc_decode(string xml [, string encoding])", "Decodes XML into native PHP types"],
    xmlrpc_decode_request: ["array xmlrpc_decode_request(string xml, string& method [, string encoding])", "Decodes XML into native PHP types"],
    xmlrpc_encode: ["string xmlrpc_encode(mixed value)", "Generates XML for a PHP value"],
    xmlrpc_encode_request: ["string xmlrpc_encode_request(string method, mixed params [, array output_options])", "Generates XML for a method request"],
    xmlrpc_get_type: ["string xmlrpc_get_type(mixed value)", "Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings"],
    xmlrpc_is_fault: ["bool xmlrpc_is_fault(array)", "Determines if an array value represents an XMLRPC fault."],
    xmlrpc_parse_method_descriptions: ["array xmlrpc_parse_method_descriptions(string xml)", "Decodes XML into a list of method descriptions"],
    xmlrpc_server_add_introspection_data: ["int xmlrpc_server_add_introspection_data(resource server, array desc)", "Adds introspection documentation"],
    xmlrpc_server_call_method: ["mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])", "Parses XML requests and call methods"],
    xmlrpc_server_create: ["resource xmlrpc_server_create(void)", "Creates an xmlrpc server"],
    xmlrpc_server_destroy: ["int xmlrpc_server_destroy(resource server)", "Destroys server resources"],
    xmlrpc_server_register_introspection_callback: ["bool xmlrpc_server_register_introspection_callback(resource server, string function)", "Register a PHP function to generate documentation"],
    xmlrpc_server_register_method: ["bool xmlrpc_server_register_method(resource server, string method_name, string function)", "Register a PHP function to handle method matching method_name"],
    xmlrpc_set_type: ["bool xmlrpc_set_type(string value, string type)", "Sets xmlrpc type, base64 or datetime, for a PHP string value"],
    xmlwriter_end_attribute: ["bool xmlwriter_end_attribute(resource xmlwriter)", "End attribute - returns FALSE on error"],
    xmlwriter_end_cdata: ["bool xmlwriter_end_cdata(resource xmlwriter)", "End current CDATA - returns FALSE on error"],
    xmlwriter_end_comment: ["bool xmlwriter_end_comment(resource xmlwriter)", "Create end comment - returns FALSE on error"],
    xmlwriter_end_document: ["bool xmlwriter_end_document(resource xmlwriter)", "End current document - returns FALSE on error"],
    xmlwriter_end_dtd: ["bool xmlwriter_end_dtd(resource xmlwriter)", "End current DTD - returns FALSE on error"],
    xmlwriter_end_dtd_attlist: ["bool xmlwriter_end_dtd_attlist(resource xmlwriter)", "End current DTD AttList - returns FALSE on error"],
    xmlwriter_end_dtd_element: ["bool xmlwriter_end_dtd_element(resource xmlwriter)", "End current DTD element - returns FALSE on error"],
    xmlwriter_end_dtd_entity: ["bool xmlwriter_end_dtd_entity(resource xmlwriter)", "End current DTD Entity - returns FALSE on error"],
    xmlwriter_end_element: ["bool xmlwriter_end_element(resource xmlwriter)", "End current element - returns FALSE on error"],
    xmlwriter_end_pi: ["bool xmlwriter_end_pi(resource xmlwriter)", "End current PI - returns FALSE on error"],
    xmlwriter_flush: ["mixed xmlwriter_flush(resource xmlwriter [,bool empty])", "Output current buffer"],
    xmlwriter_full_end_element: ["bool xmlwriter_full_end_element(resource xmlwriter)", "End current element - returns FALSE on error"],
    xmlwriter_open_memory: ["resource xmlwriter_open_memory()", "Create new xmlwriter using memory for string output"],
    xmlwriter_open_uri: ["resource xmlwriter_open_uri(resource xmlwriter, string source)", "Create new xmlwriter using source uri for output"],
    xmlwriter_output_memory: ["string xmlwriter_output_memory(resource xmlwriter [,bool flush])", "Output current buffer as string"],
    xmlwriter_set_indent: ["bool xmlwriter_set_indent(resource xmlwriter, bool indent)", "Toggle indentation on/off - returns FALSE on error"],
    xmlwriter_set_indent_string: ["bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)", "Set string used for indenting - returns FALSE on error"],
    xmlwriter_start_attribute: ["bool xmlwriter_start_attribute(resource xmlwriter, string name)", "Create start attribute - returns FALSE on error"],
    xmlwriter_start_attribute_ns: ["bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)", "Create start namespaced attribute - returns FALSE on error"],
    xmlwriter_start_cdata: ["bool xmlwriter_start_cdata(resource xmlwriter)", "Create start CDATA tag - returns FALSE on error"],
    xmlwriter_start_comment: ["bool xmlwriter_start_comment(resource xmlwriter)", "Create start comment - returns FALSE on error"],
    xmlwriter_start_document: ["bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)", "Create document tag - returns FALSE on error"],
    xmlwriter_start_dtd: ["bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)", "Create start DTD tag - returns FALSE on error"],
    xmlwriter_start_dtd_attlist: ["bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)", "Create start DTD AttList - returns FALSE on error"],
    xmlwriter_start_dtd_element: ["bool xmlwriter_start_dtd_element(resource xmlwriter, string name)", "Create start DTD element - returns FALSE on error"],
    xmlwriter_start_dtd_entity: ["bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)", "Create start DTD Entity - returns FALSE on error"],
    xmlwriter_start_element: ["bool xmlwriter_start_element(resource xmlwriter, string name)", "Create start element tag - returns FALSE on error"],
    xmlwriter_start_element_ns: ["bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)", "Create start namespaced element tag - returns FALSE on error"],
    xmlwriter_start_pi: ["bool xmlwriter_start_pi(resource xmlwriter, string target)", "Create start PI tag - returns FALSE on error"],
    xmlwriter_text: ["bool xmlwriter_text(resource xmlwriter, string content)", "Write text - returns FALSE on error"],
    xmlwriter_write_attribute: ["bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)", "Write full attribute - returns FALSE on error"],
    xmlwriter_write_attribute_ns: ["bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)", "Write full namespaced attribute - returns FALSE on error"],
    xmlwriter_write_cdata: ["bool xmlwriter_write_cdata(resource xmlwriter, string content)", "Write full CDATA tag - returns FALSE on error"],
    xmlwriter_write_comment: ["bool xmlwriter_write_comment(resource xmlwriter, string content)", "Write full comment tag - returns FALSE on error"],
    xmlwriter_write_dtd: ["bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)", "Write full DTD tag - returns FALSE on error"],
    xmlwriter_write_dtd_attlist: ["bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)", "Write full DTD AttList tag - returns FALSE on error"],
    xmlwriter_write_dtd_element: ["bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)", "Write full DTD element tag - returns FALSE on error"],
    xmlwriter_write_dtd_entity: ["bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])", "Write full DTD Entity tag - returns FALSE on error"],
    xmlwriter_write_element: ["bool xmlwriter_write_element(resource xmlwriter, string name[, string content])", "Write full element tag - returns FALSE on error"],
    xmlwriter_write_element_ns: ["bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])", "Write full namespaced element tag - returns FALSE on error"],
    xmlwriter_write_pi: ["bool xmlwriter_write_pi(resource xmlwriter, string target, string content)", "Write full PI tag - returns FALSE on error"],
    xmlwriter_write_raw: ["bool xmlwriter_write_raw(resource xmlwriter, string content)", "Write text - returns FALSE on error"],
    xsl_xsltprocessor_get_parameter: ["string xsl_xsltprocessor_get_parameter(string namespace, string name);", ""],
    xsl_xsltprocessor_has_exslt_support: ["bool xsl_xsltprocessor_has_exslt_support();", ""],
    xsl_xsltprocessor_import_stylesheet: ["void xsl_xsltprocessor_import_stylesheet(domdocument doc);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:"],
    xsl_xsltprocessor_register_php_functions: ["void xsl_xsltprocessor_register_php_functions([mixed $restrict]);", ""],
    xsl_xsltprocessor_remove_parameter: ["bool xsl_xsltprocessor_remove_parameter(string namespace, string name);", ""],
    xsl_xsltprocessor_set_parameter: ["bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value]);", ""],
    xsl_xsltprocessor_set_profiling: ["bool xsl_xsltprocessor_set_profiling(string filename) */", 'PHP_FUNCTION(xsl_xsltprocessor_set_profiling) {  zval *id;  xsl_object *intern;  char *filename = NULL;  int filename_len;  DOM_GET_THIS(id);   if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s!", &filename, &filename_len) == SUCCESS) {   intern = (xsl_object *)zend_object_store_get_object(id TSRMLS_CC);   if (intern->profiling) {    efree(intern->profiling);   }   if (filename != NULL) {    intern->profiling = estrndup(filename,filename_len);   } else {    intern->profiling = NULL;   }   RETURN_TRUE;  } else {   WRONG_PARAM_COUNT;  } } /* }}} end xsl_xsltprocessor_set_profiling'],
    xsl_xsltprocessor_transform_to_doc: ["domdocument xsl_xsltprocessor_transform_to_doc(domnode doc);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:"],
    xsl_xsltprocessor_transform_to_uri: ["int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri);", ""],
    xsl_xsltprocessor_transform_to_xml: ["string xsl_xsltprocessor_transform_to_xml(domdocument doc);", ""],
    zend_logo_guid: ["string zend_logo_guid(void)", "Return the special ID used to request the Zend logo in phpinfo screens"],
    zend_version: ["string zend_version(void)", "Get the version of the Zend Engine"],
    zip_close: ["void zip_close(resource zip)", "Close a Zip archive"],
    zip_entry_close: ["void zip_entry_close(resource zip_ent)", "Close a zip entry"],
    zip_entry_compressedsize: ["int zip_entry_compressedsize(resource zip_entry)", "Return the compressed size of a ZZip entry"],
    zip_entry_compressionmethod: ["string zip_entry_compressionmethod(resource zip_entry)", "Return a string containing the compression method used on a particular entry"],
    zip_entry_filesize: ["int zip_entry_filesize(resource zip_entry)", "Return the actual filesize of a ZZip entry"],
    zip_entry_name: ["string zip_entry_name(resource zip_entry)", "Return the name given a ZZip entry"],
    zip_entry_open: ["bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])", "Open a Zip File, pointed by the resource entry"],
    zip_entry_read: ["mixed zip_entry_read(resource zip_entry [, int len])", "Read from an open directory entry"],
    zip_open: ["resource zip_open(string filename)", "Create new zip using source uri for output"],
    zip_read: ["resource zip_read(resource zip)", "Returns the next file in the archive"],
    zlib_get_coding_type: ["string zlib_get_coding_type(void)", "Returns the coding type used for output compression"]
  },
      i = {
    $_COOKIE: {
      type: "array"
    },
    $_ENV: {
      type: "array"
    },
    $_FILES: {
      type: "array"
    },
    $_GET: {
      type: "array"
    },
    $_POST: {
      type: "array"
    },
    $_REQUEST: {
      type: "array"
    },
    $_SERVER: {
      type: "array",
      value: {
        DOCUMENT_ROOT: 1,
        GATEWAY_INTERFACE: 1,
        HTTP_ACCEPT: 1,
        HTTP_ACCEPT_CHARSET: 1,
        HTTP_ACCEPT_ENCODING: 1,
        HTTP_ACCEPT_LANGUAGE: 1,
        HTTP_CONNECTION: 1,
        HTTP_HOST: 1,
        HTTP_REFERER: 1,
        HTTP_USER_AGENT: 1,
        PATH_TRANSLATED: 1,
        PHP_SELF: 1,
        QUERY_STRING: 1,
        REMOTE_ADDR: 1,
        REMOTE_PORT: 1,
        REQUEST_METHOD: 1,
        REQUEST_URI: 1,
        SCRIPT_FILENAME: 1,
        SCRIPT_NAME: 1,
        SERVER_ADMIN: 1,
        SERVER_NAME: 1,
        SERVER_PORT: 1,
        SERVER_PROTOCOL: 1,
        SERVER_SIGNATURE: 1,
        SERVER_SOFTWARE: 1
      }
    },
    $_SESSION: {
      type: "array"
    },
    $GLOBALS: {
      type: "array"
    }
  },
      o = function o() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (i.type === "support.php_tag" && i.value === "<?") return this.getTagCompletions(e, t, n, r);

      if (i.type === "identifier") {
        if (i.index > 0) {
          var o = t.getTokenAt(n.row, i.start);
          if (o.type === "support.php_tag") return this.getTagCompletions(e, t, n, r);
        }

        return this.getFunctionCompletions(e, t, n, r);
      }

      if (s(i, "variable")) return this.getVariableCompletions(e, t, n, r);
      var u = t.getLine(n.row).substr(0, n.column);
      return i.type === "string" && /(\$[\w]*)\[["']([^'"]*)$/i.test(u) ? this.getArrayKeyCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return [{
        caption: "php",
        value: "php",
        meta: "php tag",
        score: 1e6
      }, {
        caption: "=",
        value: "=",
        meta: "php tag",
        score: 1e6
      }];
    }, this.getFunctionCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + "($0)",
          meta: "php function",
          score: 1e6,
          docHTML: r[e][1]
        };
      });
    }, this.getVariableCompletions = function (e, t, n, r) {
      var s = Object.keys(i);
      return s.map(function (e) {
        return {
          caption: e,
          value: e,
          meta: "php variable",
          score: 1e6
        };
      });
    }, this.getArrayKeyCompletions = function (e, t, n, r) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = s.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1];
      if (!i[o]) return [];
      var u = [];
      return i[o].type === "array" && i[o].value && (u = Object.keys(i[o].value)), u.map(function (e) {
        return {
          caption: e,
          value: e,
          meta: "php array key",
          score: 1e6
        };
      });
    };
  }).call(o.prototype), t.PhpCompletions = o;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/php", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/php_highlight_rules", "ace/mode/php_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/worker/worker_client", "ace/mode/php_completions", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle", "ace/unicode", "ace/mode/html", "ace/mode/javascript", "ace/mode/css"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./php_highlight_rules").PhpHighlightRules,
      o = e("./php_highlight_rules").PhpLangHighlightRules,
      u = e("./matching_brace_outdent").MatchingBraceOutdent,
      a = e("../range").Range,
      f = e("../worker/worker_client").WorkerClient,
      l = e("./php_completions").PhpCompletions,
      c = e("./behaviour/cstyle").CstyleBehaviour,
      h = e("./folding/cstyle").FoldMode,
      p = e("../unicode"),
      d = e("./html").Mode,
      v = e("./javascript").Mode,
      m = e("./css").Mode,
      g = function g(e) {
    this.HighlightRules = o, this.$outdent = new u(), this.$behaviour = new c(), this.$completer = new l(), this.foldingRules = new h();
  };

  r.inherits(g, i), function () {
    this.tokenRe = new RegExp("^[" + p.wordChars + "_]+", "g"), this.nonTokenRe = new RegExp("^(?:[^" + p.wordChars + "_]|\\s])+", "g"), this.lineCommentStart = ["//", "#"], this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[:]\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o != "doc-start") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.$id = "ace/mode/php-inline";
  }.call(g.prototype);

  var y = function y(e) {
    if (e && e.inline) {
      var t = new g();
      return t.createWorker = this.createWorker, t.inlinePhp = !0, t;
    }

    d.call(this), this.HighlightRules = s, this.createModeDelegates({
      "js-": v,
      "css-": m,
      "php-": g
    }), this.foldingRules.subModes["php-"] = new h();
  };

  r.inherits(y, d), function () {
    this.createWorker = function (e) {
      var t = new f(["ace"], "ace/mode/php_worker", "PhpWorker");
      return t.attachToDocument(e.getDocument()), this.inlinePhp && t.call("setOptions", [{
        inline: !0
      }]), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/php", this.snippetFileId = "ace/snippets/php";
  }.call(y.prototype), t.Mode = y;
});

(function () {
  ace.require(["ace/mode/php"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-php_laravel_blade.js":
/*!******************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-php_laravel_blade.js ***!
  \******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/php_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = e("./html_highlight_rules").HtmlHighlightRules,
      a = function a() {
    var e = s,
        t = i.arrayToMap("abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type".split("|")),
        n = i.arrayToMap("abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|final|finally|for|foreach|function|global|goto|if|implements|instanceof|insteadof|interface|namespace|new|or|private|protected|public|static|switch|throw|trait|try|use|var|while|xor|yield".split("|")),
        r = i.arrayToMap("__halt_compiler|die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset".split("|")),
        o = i.arrayToMap("true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__|__TRAIT__".split("|")),
        u = i.arrayToMap("$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|$http_response_header|$argc|$argv".split("|")),
        a = i.arrayToMap("key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregisterset_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|sql_regcase".split("|")),
        f = i.arrayToMap("cfunction|old_function".split("|")),
        l = i.arrayToMap([]);
    this.$rules = {
      start: [{
        token: "comment",
        regex: /(?:#|\/\/)(?:[^?]|\?[^>])*/
      }, e.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"
      }, {
        token: "string",
        regex: '"',
        next: "qqstring"
      }, {
        token: "string",
        regex: "'",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language",
        regex: "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\\b"
      }, {
        token: ["keyword", "text", "support.class"],
        regex: "\\b(new)(\\s+)(\\w+)"
      }, {
        token: ["support.class", "keyword.operator"],
        regex: "\\b(\\w+)(::)"
      }, {
        token: "constant.language",
        regex: "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b"
      }, {
        token: function token(e) {
          return n.hasOwnProperty(e) ? "keyword" : o.hasOwnProperty(e) ? "constant.language" : u.hasOwnProperty(e) ? "variable.language" : l.hasOwnProperty(e) ? "invalid.illegal" : t.hasOwnProperty(e) ? "support.function" : e == "debugger" ? "invalid.deprecated" : e.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/) ? "variable" : "identifier";
        },
        regex: /[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/
      }, {
        onMatch: function onMatch(e, t, n) {
          e = e.substr(3);
          if (e[0] == "'" || e[0] == '"') e = e.slice(1, -1);
          return n.unshift(this.next, e), "markup.list";
        },
        regex: /<<<(?:\w+|'\w+'|"\w+")$/,
        next: "heredoc"
      }, {
        token: "keyword.operator",
        regex: "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|\\.=|=|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "punctuation.operator",
        regex: /[,;]/
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      heredoc: [{
        onMatch: function onMatch(e, t, n) {
          return n[1] != e ? "string" : (n.shift(), n.shift(), "markup.list");
        },
        regex: "^\\w+(?=;?$)",
        next: "start"
      }, {
        token: "string",
        regex: ".*"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'
      }, {
        token: "variable",
        regex: /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/
      }, {
        token: "variable",
        regex: /\$\{[^"\}]+\}?/
      }, {
        token: "string",
        regex: '"',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: /\\['\\]/
      }, {
        token: "string",
        regex: "'",
        next: "start"
      }, {
        defaultToken: "string"
      }]
    }, this.embedRules(s, "doc-", [s.getEndRule("start")]);
  };

  r.inherits(a, o);

  var f = function f() {
    u.call(this);
    var e = [{
      token: "support.php_tag",
      regex: "<\\?(?:php|=)?",
      push: "php-start"
    }],
        t = [{
      token: "support.php_tag",
      regex: "\\?>",
      next: "pop"
    }];

    for (var n in this.$rules) {
      this.$rules[n].unshift.apply(this.$rules[n], e);
    }

    this.embedRules(a, "php-", t, ["start"]), this.normalizeRules();
  };

  r.inherits(f, u), t.PhpHighlightRules = f, t.PhpLangHighlightRules = a;
}), ace.define("ace/mode/php_laravel_blade_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/php_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./php_highlight_rules").PhpHighlightRules,
      s = function s() {
    i.call(this);
    var e = {
      start: [{
        include: "comments"
      }, {
        include: "directives"
      }, {
        include: "parenthesis"
      }],
      comments: [{
        token: "punctuation.definition.comment.blade",
        regex: "(\\/\\/(.)*)|(\\#(.)*)",
        next: "pop"
      }, {
        token: "punctuation.definition.comment.begin.php",
        regex: "(?:\\/\\*)",
        push: [{
          token: "punctuation.definition.comment.end.php",
          regex: "(?:\\*\\/)",
          next: "pop"
        }, {
          defaultToken: "comment.block.blade"
        }]
      }, {
        token: "punctuation.definition.comment.begin.blade",
        regex: "(?:\\{\\{\\-\\-)",
        push: [{
          token: "punctuation.definition.comment.end.blade",
          regex: "(?:\\-\\-\\}\\})",
          next: "pop"
        }, {
          defaultToken: "comment.block.blade"
        }]
      }],
      parenthesis: [{
        token: "parenthesis.begin.blade",
        regex: "\\(",
        push: [{
          token: "parenthesis.end.blade",
          regex: "\\)",
          next: "pop"
        }, {
          include: "strings"
        }, {
          include: "variables"
        }, {
          include: "lang"
        }, {
          include: "parenthesis"
        }, {
          defaultToken: "source.blade"
        }]
      }],
      directives: [{
        token: ["directive.declaration.blade", "keyword.directives.blade"],
        regex: "(@)(endunless|endisset|endempty|endauth|endguest|endcomponent|endslot|endalert|endverbatim|endsection|show|php|endphp|endpush|endprepend|endenv|endforelse|isset|empty|component|slot|alert|json|verbatim|section|auth|guest|hasSection|forelse|includeIf|includeWhen|includeFirst|each|push|stack|prepend|inject|env|elseenv|unless|yield|extends|parent|include|acfrepeater|block|can|cannot|choice|debug|elsecan|elsecannot|embed|hipchat|lang|layout|macro|macrodef|minify|partial|render|servers|set|slack|story|task|unset|wpposts|acfend|after|append|breakpoint|endafter|endcan|endcannot|endembed|endmacro|endmarkdown|endminify|endpartial|endsetup|endstory|endtask|endunless|markdown|overwrite|setup|stop|wpempty|wpend|wpquery)"
      }, {
        token: ["directive.declaration.blade", "keyword.control.blade"],
        regex: "(@)(if|else|elseif|endif|foreach|endforeach|switch|case|break|default|endswitch|for|endfor|while|endwhile|continue)"
      }, {
        token: ["directive.ignore.blade", "injections.begin.blade"],
        regex: "(@?)(\\{\\{)",
        push: [{
          token: "injections.end.blade",
          regex: "\\}\\}",
          next: "pop"
        }, {
          include: "strings"
        }, {
          include: "variables"
        }, {
          defaultToken: "source.blade"
        }]
      }, {
        token: "injections.unescaped.begin.blade",
        regex: "\\{\\!\\!",
        push: [{
          token: "injections.unescaped.end.blade",
          regex: "\\!\\!\\}",
          next: "pop"
        }, {
          include: "strings"
        }, {
          include: "variables"
        }, {
          defaultToken: "source.blade"
        }]
      }],
      lang: [{
        token: "keyword.operator.blade",
        regex: "(?:!=|!|<=|>=|<|>|===|==|=|\\+\\+|\\;|\\,|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod|as)\\b"
      }, {
        token: "constant.language.blade",
        regex: "\\b(?:TRUE|FALSE|true|false)\\b"
      }],
      strings: [{
        token: "punctuation.definition.string.begin.blade",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.blade",
          regex: '"',
          next: "pop"
        }, {
          token: "string.character.escape.blade",
          regex: "\\\\."
        }, {
          defaultToken: "string.quoted.single.blade"
        }]
      }, {
        token: "punctuation.definition.string.begin.blade",
        regex: "'",
        push: [{
          token: "punctuation.definition.string.end.blade",
          regex: "'",
          next: "pop"
        }, {
          token: "string.character.escape.blade",
          regex: "\\\\."
        }, {
          defaultToken: "string.quoted.double.blade"
        }]
      }],
      variables: [{
        token: "variable.blade",
        regex: "\\$([a-zA-Z_][a-zA-Z0-9_]*)\\b"
      }, {
        token: ["keyword.operator.blade", "constant.other.property.blade"],
        regex: "(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b"
      }, {
        token: ["keyword.operator.blade", "meta.function-call.object.blade", "punctuation.definition.variable.blade", "variable.blade", "punctuation.definition.variable.blade"],
        regex: "(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))"
      }]
    },
        t = e.start;

    for (var n in this.$rules) {
      this.$rules[n].unshift.apply(this.$rules[n], t);
    }

    Object.keys(e).forEach(function (t) {
      this.$rules[t] || (this.$rules[t] = e[t]);
    }, this), this.normalizeRules();
  };

  r.inherits(s, i), t.PHPLaravelBladeHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/php_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  function s(e, t) {
    return e.type.lastIndexOf(t) > -1;
  }

  var r = {
    abs: ["int abs(int number)", "Return the absolute value of the number"],
    acos: ["float acos(float number)", "Return the arc cosine of the number in radians"],
    acosh: ["float acosh(float number)", "Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number"],
    addGlob: ["bool addGlob(string pattern[,int flags [, array options]])", "Add files matching the glob pattern. See php's glob for the pattern syntax."],
    addPattern: ["bool addPattern(string pattern[, string path [, array options]])", "Add files matching the pcre pattern. See php's pcre for the pattern syntax."],
    addcslashes: ["string addcslashes(string str, string charlist)", "Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)"],
    addslashes: ["string addslashes(string str)", "Escapes single quote, double quotes and backslash characters in a string with backslashes"],
    apache_child_terminate: ["bool apache_child_terminate(void)", "Terminate apache process after this request"],
    apache_get_modules: ["array apache_get_modules(void)", "Get a list of loaded Apache modules"],
    apache_get_version: ["string apache_get_version(void)", "Fetch Apache version"],
    apache_getenv: ["bool apache_getenv(string variable [, bool walk_to_top])", "Get an Apache subprocess_env variable"],
    apache_lookup_uri: ["object apache_lookup_uri(string URI)", "Perform a partial request of the given URI to obtain information about it"],
    apache_note: ["string apache_note(string note_name [, string note_value])", "Get and set Apache request notes"],
    apache_request_auth_name: ["string apache_request_auth_name()", ""],
    apache_request_auth_type: ["string apache_request_auth_type()", ""],
    apache_request_discard_request_body: ["long apache_request_discard_request_body()", ""],
    apache_request_err_headers_out: ["array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])", "* fetch all headers that go out in case of an error or a subrequest"],
    apache_request_headers: ["array apache_request_headers(void)", "Fetch all HTTP request headers"],
    apache_request_headers_in: ["array apache_request_headers_in()", "* fetch all incoming request headers"],
    apache_request_headers_out: ["array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])", "* fetch all outgoing request headers"],
    apache_request_is_initial_req: ["bool apache_request_is_initial_req()", ""],
    apache_request_log_error: ["boolean apache_request_log_error(string message, [long facility])", ""],
    apache_request_meets_conditions: ["long apache_request_meets_conditions()", ""],
    apache_request_remote_host: ["int apache_request_remote_host([int type])", ""],
    apache_request_run: ["long apache_request_run()", "This is a wrapper for ap_sub_run_req and ap_destory_sub_req.  It takes      sub_request, runs it, destroys it, and returns it's status."],
    apache_request_satisfies: ["long apache_request_satisfies()", ""],
    apache_request_server_port: ["int apache_request_server_port()", ""],
    apache_request_set_etag: ["void apache_request_set_etag()", ""],
    apache_request_set_last_modified: ["void apache_request_set_last_modified()", ""],
    apache_request_some_auth_required: ["bool apache_request_some_auth_required()", ""],
    apache_request_sub_req_lookup_file: ["object apache_request_sub_req_lookup_file(string file)", "Returns sub-request for the specified file.  You would     need to run it yourself with run()."],
    apache_request_sub_req_lookup_uri: ["object apache_request_sub_req_lookup_uri(string uri)", "Returns sub-request for the specified uri.  You would     need to run it yourself with run()"],
    apache_request_sub_req_method_uri: ["object apache_request_sub_req_method_uri(string method, string uri)", "Returns sub-request for the specified file.  You would     need to run it yourself with run()."],
    apache_request_update_mtime: ["long apache_request_update_mtime([int dependency_mtime])", ""],
    apache_reset_timeout: ["bool apache_reset_timeout(void)", "Reset the Apache write timer"],
    apache_response_headers: ["array apache_response_headers(void)", "Fetch all HTTP response headers"],
    apache_setenv: ["bool apache_setenv(string variable, string value [, bool walk_to_top])", "Set an Apache subprocess_env variable"],
    array_change_key_case: ["array array_change_key_case(array input [, int case=CASE_LOWER])", "Retuns an array with all string keys lowercased [or uppercased]"],
    array_chunk: ["array array_chunk(array input, int size [, bool preserve_keys])", "Split array into chunks"],
    array_combine: ["array array_combine(array keys, array values)", "Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values"],
    array_count_values: ["array array_count_values(array input)", "Return the value as key and the frequency of that value in input as value"],
    array_diff: ["array array_diff(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are not present in any of the others arguments."],
    array_diff_assoc: ["array array_diff_assoc(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal"],
    array_diff_key: ["array array_diff_key(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved."],
    array_diff_uassoc: ["array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function."],
    array_diff_ukey: ["array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)", "Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved."],
    array_fill: ["array array_fill(int start_key, int num, mixed val)", "Create an array containing num elements starting with index start_key each initialized to val"],
    array_fill_keys: ["array array_fill_keys(array keys, mixed val)", "Create an array using the elements of the first parameter as keys each initialized to val"],
    array_filter: ["array array_filter(array input [, mixed callback])", "Filters elements from the array via the callback."],
    array_flip: ["array array_flip(array input)", "Return array with key <-> value flipped"],
    array_intersect: ["array array_intersect(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are present in all the other arguments"],
    array_intersect_assoc: ["array array_intersect_assoc(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check"],
    array_intersect_key: ["array array_intersect_key(array arr1, array arr2 [, array ...])", "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data."],
    array_intersect_uassoc: ["array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback."],
    array_intersect_ukey: ["array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)", "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data."],
    array_key_exists: ["bool array_key_exists(mixed key, array search)", "Checks if the given key or index exists in the array"],
    array_keys: ["array array_keys(array input [, mixed search_value[, bool strict]])", "Return just the keys from the input array, optionally only for the specified search_value"],
    array_map: ["array array_map(mixed callback, array input1 [, array input2 ,...])", "Applies the callback to the elements in given arrays."],
    array_merge: ["array array_merge(array arr1, array arr2 [, array ...])", "Merges elements from passed arrays into one array"],
    array_merge_recursive: ["array array_merge_recursive(array arr1, array arr2 [, array ...])", "Recursively merges elements from passed arrays into one array"],
    array_multisort: ["bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])", "Sort multiple arrays at once similar to how ORDER BY clause works in SQL"],
    array_pad: ["array array_pad(array input, int pad_size, mixed pad_value)", "Returns a copy of input array padded with pad_value to size pad_size"],
    array_pop: ["mixed array_pop(array stack)", "Pops an element off the end of the array"],
    array_product: ["mixed array_product(array input)", "Returns the product of the array entries"],
    array_push: ["int array_push(array stack, mixed var [, mixed ...])", "Pushes elements onto the end of the array"],
    array_rand: ["mixed array_rand(array input [, int num_req])", "Return key/keys for random entry/entries in the array"],
    array_reduce: ["mixed array_reduce(array input, mixed callback [, mixed initial])", "Iteratively reduce the array to a single value via the callback."],
    array_replace: ["array array_replace(array arr1, array arr2 [, array ...])", "Replaces elements from passed arrays into one array"],
    array_replace_recursive: ["array array_replace_recursive(array arr1, array arr2 [, array ...])", "Recursively replaces elements from passed arrays into one array"],
    array_reverse: ["array array_reverse(array input [, bool preserve keys])", "Return input as a new array with the order of the entries reversed"],
    array_search: ["mixed array_search(mixed needle, array haystack [, bool strict])", "Searches the array for a given value and returns the corresponding key if successful"],
    array_shift: ["mixed array_shift(array stack)", "Pops an element off the beginning of the array"],
    array_slice: ["array array_slice(array input, int offset [, int length [, bool preserve_keys]])", "Returns elements specified by offset and length"],
    array_splice: ["array array_splice(array input, int offset [, int length [, array replacement]])", "Removes the elements designated by offset and length and replace them with supplied array"],
    array_sum: ["mixed array_sum(array input)", "Returns the sum of the array entries"],
    array_udiff: ["array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function."],
    array_udiff_assoc: ["array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function."],
    array_udiff_uassoc: ["array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)", "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions."],
    array_uintersect: ["array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback."],
    array_uintersect_assoc: ["array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback."],
    array_uintersect_uassoc: ["array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)", "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks."],
    array_unique: ["array array_unique(array input [, int sort_flags])", "Removes duplicate values from array"],
    array_unshift: ["int array_unshift(array stack, mixed var [, mixed ...])", "Pushes elements onto the beginning of the array"],
    array_values: ["array array_values(array input)", "Return just the values from the input array"],
    array_walk: ["bool array_walk(array input, string funcname [, mixed userdata])", "Apply a user function to every member of an array"],
    array_walk_recursive: ["bool array_walk_recursive(array input, string funcname [, mixed userdata])", "Apply a user function recursively to every member of an array"],
    arsort: ["bool arsort(array &array_arg [, int sort_flags])", "Sort an array in reverse order and maintain index association"],
    asin: ["float asin(float number)", "Returns the arc sine of the number in radians"],
    asinh: ["float asinh(float number)", "Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number"],
    asort: ["bool asort(array &array_arg [, int sort_flags])", "Sort an array and maintain index association"],
    assert: ["int assert(string|bool assertion)", "Checks if assertion is false"],
    assert_options: ["mixed assert_options(int what [, mixed value])", "Set/get the various assert flags"],
    atan: ["float atan(float number)", "Returns the arc tangent of the number in radians"],
    atan2: ["float atan2(float y, float x)", "Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x"],
    atanh: ["float atanh(float number)", "Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number"],
    attachIterator: ["void attachIterator(Iterator iterator[, mixed info])", "Attach a new iterator"],
    base64_decode: ["string base64_decode(string str[, bool strict])", "Decodes string using MIME base64 algorithm"],
    base64_encode: ["string base64_encode(string str)", "Encodes string using MIME base64 algorithm"],
    base_convert: ["string base_convert(string number, int frombase, int tobase)", "Converts a number in a string from any base <= 36 to any base <= 36"],
    basename: ["string basename(string path [, string suffix])", "Returns the filename component of the path"],
    bcadd: ["string bcadd(string left_operand, string right_operand [, int scale])", "Returns the sum of two arbitrary precision numbers"],
    bccomp: ["int bccomp(string left_operand, string right_operand [, int scale])", "Compares two arbitrary precision numbers"],
    bcdiv: ["string bcdiv(string left_operand, string right_operand [, int scale])", "Returns the quotient of two arbitrary precision numbers (division)"],
    bcmod: ["string bcmod(string left_operand, string right_operand)", "Returns the modulus of the two arbitrary precision operands"],
    bcmul: ["string bcmul(string left_operand, string right_operand [, int scale])", "Returns the multiplication of two arbitrary precision numbers"],
    bcpow: ["string bcpow(string x, string y [, int scale])", "Returns the value of an arbitrary precision number raised to the power of another"],
    bcpowmod: ["string bcpowmod(string x, string y, string mod [, int scale])", "Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous"],
    bcscale: ["bool bcscale(int scale)", "Sets default scale parameter for all bc math functions"],
    bcsqrt: ["string bcsqrt(string operand [, int scale])", "Returns the square root of an arbitray precision number"],
    bcsub: ["string bcsub(string left_operand, string right_operand [, int scale])", "Returns the difference between two arbitrary precision numbers"],
    bin2hex: ["string bin2hex(string data)", "Converts the binary representation of data to hex"],
    bind_textdomain_codeset: ["string bind_textdomain_codeset (string domain, string codeset)", "Specify the character encoding in which the messages from the DOMAIN message catalog will be returned."],
    bindec: ["int bindec(string binary_number)", "Returns the decimal equivalent of the binary number"],
    bindtextdomain: ["string bindtextdomain(string domain_name, string dir)", "Bind to the text domain domain_name, looking for translations in dir. Returns the current domain"],
    birdstep_autocommit: ["bool birdstep_autocommit(int index)", ""],
    birdstep_close: ["bool birdstep_close(int id)", ""],
    birdstep_commit: ["bool birdstep_commit(int index)", ""],
    birdstep_connect: ["int birdstep_connect(string server, string user, string pass)", ""],
    birdstep_exec: ["int birdstep_exec(int index, string exec_str)", ""],
    birdstep_fetch: ["bool birdstep_fetch(int index)", ""],
    birdstep_fieldname: ["string birdstep_fieldname(int index, int col)", ""],
    birdstep_fieldnum: ["int birdstep_fieldnum(int index)", ""],
    birdstep_freeresult: ["bool birdstep_freeresult(int index)", ""],
    birdstep_off_autocommit: ["bool birdstep_off_autocommit(int index)", ""],
    birdstep_result: ["mixed birdstep_result(int index, mixed col)", ""],
    birdstep_rollback: ["bool birdstep_rollback(int index)", ""],
    bzcompress: ["string bzcompress(string source [, int blocksize100k [, int workfactor]])", "Compresses a string into BZip2 encoded data"],
    bzdecompress: ["string bzdecompress(string source [, int small])", "Decompresses BZip2 compressed data"],
    bzerrno: ["int bzerrno(resource bz)", "Returns the error number"],
    bzerror: ["array bzerror(resource bz)", "Returns the error number and error string in an associative array"],
    bzerrstr: ["string bzerrstr(resource bz)", "Returns the error string"],
    bzopen: ["resource bzopen(string|int file|fp, string mode)", "Opens a new BZip2 stream"],
    bzread: ["string bzread(resource bz[, int length])", "Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified"],
    cal_days_in_month: ["int cal_days_in_month(int calendar, int month, int year)", "Returns the number of days in a month for a given year and calendar"],
    cal_from_jd: ["array cal_from_jd(int jd, int calendar)", "Converts from Julian Day Count to a supported calendar and return extended information"],
    cal_info: ["array cal_info([int calendar])", "Returns information about a particular calendar"],
    cal_to_jd: ["int cal_to_jd(int calendar, int month, int day, int year)", "Converts from a supported calendar to Julian Day Count"],
    call_user_func: ["mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])", "Call a user function which is the first parameter"],
    call_user_func_array: ["mixed call_user_func_array(string function_name, array parameters)", "Call a user function which is the first parameter with the arguments contained in array"],
    call_user_method: ["mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])", "Call a user method on a specific object or class"],
    call_user_method_array: ["mixed call_user_method_array(string method_name, mixed object, array params)", "Call a user method on a specific object or class using a parameter array"],
    ceil: ["float ceil(float number)", "Returns the next highest integer value of the number"],
    chdir: ["bool chdir(string directory)", "Change the current directory"],
    checkdate: ["bool checkdate(int month, int day, int year)", "Returns true(1) if it is a valid date in gregorian calendar"],
    chgrp: ["bool chgrp(string filename, mixed group)", "Change file group"],
    chmod: ["bool chmod(string filename, int mode)", "Change file mode"],
    chown: ["bool chown (string filename, mixed user)", "Change file owner"],
    chr: ["string chr(int ascii)", "Converts ASCII code to a character"],
    chroot: ["bool chroot(string directory)", "Change root directory"],
    chunk_split: ["string chunk_split(string str [, int chunklen [, string ending]])", "Returns split line"],
    class_alias: ["bool class_alias(string user_class_name , string alias_name [, bool autoload])", "Creates an alias for user defined class"],
    class_exists: ["bool class_exists(string classname [, bool autoload])", "Checks if the class exists"],
    class_implements: ["array class_implements(mixed what [, bool autoload ])", "Return all classes and interfaces implemented by SPL"],
    class_parents: ["array class_parents(object instance [, boolean autoload = true])", "Return an array containing the names of all parent classes"],
    clearstatcache: ["void clearstatcache([bool clear_realpath_cache[, string filename]])", "Clear file stat cache"],
    closedir: ["void closedir([resource dir_handle])", "Close directory connection identified by the dir_handle"],
    closelog: ["bool closelog(void)", "Close connection to system logger"],
    collator_asort: ["bool collator_asort( Collator $coll, array(string) $arr )", "* Sort array using specified collator, maintaining index association."],
    collator_compare: ["int collator_compare( Collator $coll, string $str1, string $str2 )", "* Compare two strings."],
    collator_create: ["Collator collator_create( string $locale )", "* Create collator."],
    collator_get_attribute: ["int collator_get_attribute( Collator $coll, int $attr )", "* Get collation attribute value."],
    collator_get_error_code: ["int collator_get_error_code( Collator $coll )", "* Get collator's last error code."],
    collator_get_error_message: ["string collator_get_error_message( Collator $coll )", "* Get text description for collator's last error code."],
    collator_get_locale: ["string collator_get_locale( Collator $coll, int $type )", "* Gets the locale name of the collator."],
    collator_get_sort_key: ["bool collator_get_sort_key( Collator $coll, string $str )", "* Get a sort key for a string from a Collator. }}}"],
    collator_get_strength: ["int collator_get_strength(Collator coll)", "* Returns the current collation strength."],
    collator_set_attribute: ["bool collator_set_attribute( Collator $coll, int $attr, int $val )", "* Set collation attribute."],
    collator_set_strength: ["bool collator_set_strength(Collator coll, int strength)", "* Set the collation strength."],
    collator_sort: ["bool collator_sort(  Collator $coll, array(string) $arr [, int $sort_flags] )", "* Sort array using specified collator."],
    collator_sort_with_sort_keys: ["bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )", "* Equivalent to standard PHP sort using Collator.  * Uses ICU ucol_getSortKey for performance."],
    com_create_guid: ["string com_create_guid()", "Generate a globally unique identifier (GUID)"],
    com_event_sink: ["bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])", "Connect events from a COM object to a PHP object"],
    com_get_active_object: ["object com_get_active_object(string progid [, int code_page ])", "Returns a handle to an already running instance of a COM object"],
    com_load_typelib: ["bool com_load_typelib(string typelib_name [, int case_insensitive])", "Loads a Typelibrary and registers its constants"],
    com_message_pump: ["bool com_message_pump([int timeoutms])", "Process COM messages, sleeping for up to timeoutms milliseconds"],
    com_print_typeinfo: ["bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)", "Print out a PHP class definition for a dispatchable interface"],
    compact: ["array compact(mixed var_names [, mixed ...])", "Creates a hash containing variables and their values"],
    compose_locale: ["static string compose_locale($array)", "* Creates a locale by combining the parts of locale-ID passed  * }}}"],
    confirm_extname_compiled: ["string confirm_extname_compiled(string arg)", "Return a string to confirm that the module is compiled in"],
    connection_aborted: ["int connection_aborted(void)", "Returns true if client disconnected"],
    connection_status: ["int connection_status(void)", "Returns the connection status bitfield"],
    constant: ["mixed constant(string const_name)", "Given the name of a constant this function will return the constant's associated value"],
    convert_cyr_string: ["string convert_cyr_string(string str, string from, string to)", "Convert from one Cyrillic character set to another"],
    convert_uudecode: ["string convert_uudecode(string data)", "decode a uuencoded string"],
    convert_uuencode: ["string convert_uuencode(string data)", "uuencode a string"],
    copy: ["bool copy(string source_file, string destination_file [, resource context])", "Copy a file"],
    cos: ["float cos(float number)", "Returns the cosine of the number in radians"],
    cosh: ["float cosh(float number)", "Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2"],
    count: ["int count(mixed var [, int mode])", "Count the number of elements in a variable (usually an array)"],
    count_chars: ["mixed count_chars(string input [, int mode])", "Returns info about what characters are used in input"],
    crc32: ["string crc32(string str)", "Calculate the crc32 polynomial of a string"],
    create_function: ["string create_function(string args, string code)", "Creates an anonymous function, and returns its name (funny, eh?)"],
    crypt: ["string crypt(string str [, string salt])", "Hash a string"],
    ctype_alnum: ["bool ctype_alnum(mixed c)", "Checks for alphanumeric character(s)"],
    ctype_alpha: ["bool ctype_alpha(mixed c)", "Checks for alphabetic character(s)"],
    ctype_cntrl: ["bool ctype_cntrl(mixed c)", "Checks for control character(s)"],
    ctype_digit: ["bool ctype_digit(mixed c)", "Checks for numeric character(s)"],
    ctype_graph: ["bool ctype_graph(mixed c)", "Checks for any printable character(s) except space"],
    ctype_lower: ["bool ctype_lower(mixed c)", "Checks for lowercase character(s)"],
    ctype_print: ["bool ctype_print(mixed c)", "Checks for printable character(s)"],
    ctype_punct: ["bool ctype_punct(mixed c)", "Checks for any printable character which is not whitespace or an alphanumeric character"],
    ctype_space: ["bool ctype_space(mixed c)", "Checks for whitespace character(s)"],
    ctype_upper: ["bool ctype_upper(mixed c)", "Checks for uppercase character(s)"],
    ctype_xdigit: ["bool ctype_xdigit(mixed c)", "Checks for character(s) representing a hexadecimal digit"],
    curl_close: ["void curl_close(resource ch)", "Close a cURL session"],
    curl_copy_handle: ["resource curl_copy_handle(resource ch)", "Copy a cURL handle along with all of it's preferences"],
    curl_errno: ["int curl_errno(resource ch)", "Return an integer containing the last error number"],
    curl_error: ["string curl_error(resource ch)", "Return a string contain the last error for the current session"],
    curl_exec: ["bool curl_exec(resource ch)", "Perform a cURL session"],
    curl_getinfo: ["mixed curl_getinfo(resource ch [, int option])", "Get information regarding a specific transfer"],
    curl_init: ["resource curl_init([string url])", "Initialize a cURL session"],
    curl_multi_add_handle: ["int curl_multi_add_handle(resource mh, resource ch)", "Add a normal cURL handle to a cURL multi handle"],
    curl_multi_close: ["void curl_multi_close(resource mh)", "Close a set of cURL handles"],
    curl_multi_exec: ["int curl_multi_exec(resource mh, int &still_running)", "Run the sub-connections of the current cURL handle"],
    curl_multi_getcontent: ["string curl_multi_getcontent(resource ch)", "Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set"],
    curl_multi_info_read: ["array curl_multi_info_read(resource mh [, long msgs_in_queue])", "Get information about the current transfers"],
    curl_multi_init: ["resource curl_multi_init(void)", "Returns a new cURL multi handle"],
    curl_multi_remove_handle: ["int curl_multi_remove_handle(resource mh, resource ch)", "Remove a multi handle from a set of cURL handles"],
    curl_multi_select: ["int curl_multi_select(resource mh[, double timeout])", 'Get all the sockets associated with the cURL extension, which can then be "selected"'],
    curl_setopt: ["bool curl_setopt(resource ch, int option, mixed value)", "Set an option for a cURL transfer"],
    curl_setopt_array: ["bool curl_setopt_array(resource ch, array options)", "Set an array of option for a cURL transfer"],
    curl_version: ["array curl_version([int version])", "Return cURL version information."],
    current: ["mixed current(array array_arg)", "Return the element currently pointed to by the internal array pointer"],
    date: ["string date(string format [, long timestamp])", "Format a local date/time"],
    date_add: ["DateTime date_add(DateTime object, DateInterval interval)", "Adds an interval to the current date in object."],
    date_create: ["DateTime date_create([string time[, DateTimeZone object]])", "Returns new DateTime object"],
    date_create_from_format: ["DateTime date_create_from_format(string format, string time[, DateTimeZone object])", "Returns new DateTime object formatted according to the specified format"],
    date_date_set: ["DateTime date_date_set(DateTime object, long year, long month, long day)", "Sets the date."],
    date_default_timezone_get: ["string date_default_timezone_get()", "Gets the default timezone used by all date/time functions in a script"],
    date_default_timezone_set: ["bool date_default_timezone_set(string timezone_identifier)", "Sets the default timezone used by all date/time functions in a script"],
    date_diff: ["DateInterval date_diff(DateTime object [, bool absolute])", "Returns the difference between two DateTime objects."],
    date_format: ["string date_format(DateTime object, string format)", "Returns date formatted according to given format"],
    date_get_last_errors: ["array date_get_last_errors()", "Returns the warnings and errors found while parsing a date/time string."],
    date_interval_create_from_date_string: ["DateInterval date_interval_create_from_date_string(string time)", "Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string"],
    date_interval_format: ["string date_interval_format(DateInterval object, string format)", "Formats the interval."],
    date_isodate_set: ["DateTime date_isodate_set(DateTime object, long year, long week[, long day])", "Sets the ISO date."],
    date_modify: ["DateTime date_modify(DateTime object, string modify)", "Alters the timestamp."],
    date_offset_get: ["long date_offset_get(DateTime object)", "Returns the DST offset."],
    date_parse: ["array date_parse(string date)", "Returns associative array with detailed info about given date"],
    date_parse_from_format: ["array date_parse_from_format(string format, string date)", "Returns associative array with detailed info about given date"],
    date_sub: ["DateTime date_sub(DateTime object, DateInterval interval)", "Subtracts an interval to the current date in object."],
    date_sun_info: ["array date_sun_info(long time, float latitude, float longitude)", "Returns an array with information about sun set/rise and twilight begin/end"],
    date_sunrise: ["mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", "Returns time of sunrise for a given day and location"],
    date_sunset: ["mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", "Returns time of sunset for a given day and location"],
    date_time_set: ["DateTime date_time_set(DateTime object, long hour, long minute[, long second])", "Sets the time."],
    date_timestamp_get: ["long date_timestamp_get(DateTime object)", "Gets the Unix timestamp."],
    date_timestamp_set: ["DateTime date_timestamp_set(DateTime object, long unixTimestamp)", "Sets the date and time based on an Unix timestamp."],
    date_timezone_get: ["DateTimeZone date_timezone_get(DateTime object)", "Return new DateTimeZone object relative to give DateTime"],
    date_timezone_set: ["DateTime date_timezone_set(DateTime object, DateTimeZone object)", "Sets the timezone for the DateTime object."],
    datefmt_create: ["IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )", "* Create formatter."],
    datefmt_format: ["string datefmt_format( [mixed]int $args or array $args )", "* Format the time value as a string. }}}"],
    datefmt_get_calendar: ["string datefmt_get_calendar( IntlDateFormatter $mf )", "* Get formatter calendar."],
    datefmt_get_datetype: ["string datefmt_get_datetype( IntlDateFormatter $mf )", "* Get formatter datetype."],
    datefmt_get_error_code: ["int datefmt_get_error_code( IntlDateFormatter $nf )", "* Get formatter's last error code."],
    datefmt_get_error_message: ["string datefmt_get_error_message( IntlDateFormatter $coll )", "* Get text description for formatter's last error code."],
    datefmt_get_locale: ["string datefmt_get_locale(IntlDateFormatter $mf)", "* Get formatter locale."],
    datefmt_get_pattern: ["string datefmt_get_pattern( IntlDateFormatter $mf )", "* Get formatter pattern."],
    datefmt_get_timetype: ["string datefmt_get_timetype( IntlDateFormatter $mf )", "* Get formatter timetype."],
    datefmt_get_timezone_id: ["string datefmt_get_timezone_id( IntlDateFormatter $mf )", "* Get formatter timezone_id."],
    datefmt_isLenient: ["string datefmt_isLenient(IntlDateFormatter $mf)", "* Get formatter locale."],
    datefmt_localtime: ["integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])", "* Parse the string $value to a localtime array  }}}"],
    datefmt_parse: ["integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )", "* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}"],
    datefmt_setLenient: ["string datefmt_setLenient(IntlDateFormatter $mf)", "* Set formatter lenient."],
    datefmt_set_calendar: ["bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )", "* Set formatter calendar."],
    datefmt_set_pattern: ["bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )", "* Set formatter pattern."],
    datefmt_set_timezone_id: ["boolean datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)", "* Set formatter timezone_id."],
    dba_close: ["void dba_close(resource handle)", "Closes database"],
    dba_delete: ["bool dba_delete(string key, resource handle)", "Deletes the entry associated with key    If inifile: remove all other key lines"],
    dba_exists: ["bool dba_exists(string key, resource handle)", "Checks, if the specified key exists"],
    dba_fetch: ["string dba_fetch(string key, [int skip ,] resource handle)", "Fetches the data associated with key"],
    dba_firstkey: ["string dba_firstkey(resource handle)", "Resets the internal key pointer and returns the first key"],
    dba_handlers: ["array dba_handlers([bool full_info])", "List configured database handlers"],
    dba_insert: ["bool dba_insert(string key, string value, resource handle)", "If not inifile: Insert value as key, return false, if key exists already     If inifile: Add vakue as key (next instance of key)"],
    dba_key_split: ["array|false dba_key_split(string key)", "Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null"],
    dba_list: ["array dba_list()", "List opened databases"],
    dba_nextkey: ["string dba_nextkey(resource handle)", "Returns the next key"],
    dba_open: ["resource dba_open(string path, string mode [, string handlername, string ...])", "Opens path using the specified handler in mode"],
    dba_optimize: ["bool dba_optimize(resource handle)", "Optimizes (e.g. clean up, vacuum) database"],
    dba_popen: ["resource dba_popen(string path, string mode [, string handlername, string ...])", "Opens path using the specified handler in mode persistently"],
    dba_replace: ["bool dba_replace(string key, string value, resource handle)", "Inserts value as key, replaces key, if key exists already    If inifile: remove all other key lines"],
    dba_sync: ["bool dba_sync(resource handle)", "Synchronizes database"],
    dcgettext: ["string dcgettext(string domain_name, string msgid, long category)", "Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist"],
    dcngettext: ["string dcngettext (string domain, string msgid1, string msgid2, int n, int category)", "Plural version of dcgettext()"],
    debug_backtrace: ["array debug_backtrace([bool provide_object])", "Return backtrace as array"],
    debug_print_backtrace: ["void debug_print_backtrace(void) */", "ZEND_FUNCTION(debug_print_backtrace) {  zend_execute_data *ptr, *skip;  int lineno;  char *function_name;  char *filename;  char *class_name = NULL;  char *call_type;  char *include_filename = NULL;  zval *arg_array = NULL;  int indent = 0;   if (zend_parse_parameters_none() == FAILURE) {   return;  }   ptr = EG(current_execute_data);", "PHP_FUNCTION(dom_document_relaxNG_validate_file) {  _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file"],
    dom_document_relaxNG_validate_xml: ["boolean dom_document_relaxNG_validate_xml(string source); */", "PHP_FUNCTION(dom_document_relaxNG_validate_xml) {  _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml"],
    dom_document_rename_node: ["DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3"],
    dom_document_save: ["int dom_document_save(string file);", "Convenience method to save to file"],
    dom_document_save_html: ["string dom_document_save_html();", "Convenience method to output as html"],
    dom_document_save_html_file: ["int dom_document_save_html_file(string file);", "Convenience method to save to file as html"],
    dom_document_savexml: ["string dom_document_savexml([node n]);", "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3"],
    dom_document_schema_validate: ["boolean dom_document_schema_validate(string source); */", "PHP_FUNCTION(dom_document_schema_validate_xml) {  _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate"],
    dom_document_schema_validate_file: ["boolean dom_document_schema_validate_file(string filename); */", "PHP_FUNCTION(dom_document_schema_validate_file) {  _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file"],
    dom_document_validate: ["boolean dom_document_validate();", "Since: DOM extended"],
    dom_document_xinclude: ["int dom_document_xinclude([int options])", "Substitutues xincludes in a DomDocument"],
    dom_domconfiguration_can_set_parameter: ["boolean dom_domconfiguration_can_set_parameter(string name, domuserdata value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:"],
    dom_domconfiguration_get_parameter: ["domdomuserdata dom_domconfiguration_get_parameter(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:"],
    dom_domconfiguration_set_parameter: ["dom_void dom_domconfiguration_set_parameter(string name, domuserdata value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:"],
    dom_domerrorhandler_handle_error: ["dom_boolean dom_domerrorhandler_handle_error(domerror error);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:"],
    dom_domimplementation_create_document: ["DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2"],
    dom_domimplementation_create_document_type: ["DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2"],
    dom_domimplementation_get_feature: ["DOMNode dom_domimplementation_get_feature(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3"],
    dom_domimplementation_has_feature: ["boolean dom_domimplementation_has_feature(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:"],
    dom_domimplementationlist_item: ["domdomimplementation dom_domimplementationlist_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:"],
    dom_domimplementationsource_get_domimplementation: ["domdomimplementation dom_domimplementationsource_get_domimplementation(string features);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:"],
    dom_domimplementationsource_get_domimplementations: ["domimplementationlist dom_domimplementationsource_get_domimplementations(string features);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:"],
    dom_domstringlist_item: ["domstring dom_domstringlist_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:"],
    dom_element_get_attribute: ["string dom_element_get_attribute(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:"],
    dom_element_get_attribute_node: ["DOMAttr dom_element_get_attribute_node(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:"],
    dom_element_get_attribute_node_ns: ["DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2"],
    dom_element_get_attribute_ns: ["string dom_element_get_attribute_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2"],
    dom_element_get_elements_by_tag_name: ["DOMNodeList dom_element_get_elements_by_tag_name(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:"],
    dom_element_get_elements_by_tag_name_ns: ["DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2"],
    dom_element_has_attribute: ["boolean dom_element_has_attribute(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2"],
    dom_element_has_attribute_ns: ["boolean dom_element_has_attribute_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2"],
    dom_element_remove_attribute: ["void dom_element_remove_attribute(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:"],
    dom_element_remove_attribute_node: ["DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:"],
    dom_element_remove_attribute_ns: ["void dom_element_remove_attribute_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2"],
    dom_element_set_attribute: ["void dom_element_set_attribute(string name, string value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:"],
    dom_element_set_attribute_node: ["DOMAttr dom_element_set_attribute_node(DOMAttr newAttr);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:"],
    dom_element_set_attribute_node_ns: ["DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2"],
    dom_element_set_attribute_ns: ["void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2"],
    dom_element_set_id_attribute: ["void dom_element_set_id_attribute(string name, boolean isId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3"],
    dom_element_set_id_attribute_node: ["void dom_element_set_id_attribute_node(attr idAttr, boolean isId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3"],
    dom_element_set_id_attribute_ns: ["void dom_element_set_id_attribute_ns(string namespaceURI, string localName, boolean isId);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3"],
    dom_import_simplexml: ["somNode dom_import_simplexml(sxeobject node)", "Get a simplexml_element object from dom to allow for processing"],
    dom_namednodemap_get_named_item: ["DOMNode dom_namednodemap_get_named_item(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:"],
    dom_namednodemap_get_named_item_ns: ["DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2"],
    dom_namednodemap_item: ["DOMNode dom_namednodemap_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:"],
    dom_namednodemap_remove_named_item: ["DOMNode dom_namednodemap_remove_named_item(string name);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:"],
    dom_namednodemap_remove_named_item_ns: ["DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2"],
    dom_namednodemap_set_named_item: ["DOMNode dom_namednodemap_set_named_item(DOMNode arg);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:"],
    dom_namednodemap_set_named_item_ns: ["DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2"],
    dom_namelist_get_name: ["string dom_namelist_get_name(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:"],
    dom_namelist_get_namespace_uri: ["string dom_namelist_get_namespace_uri(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:"],
    dom_node_append_child: ["DomNode dom_node_append_child(DomNode newChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:"],
    dom_node_clone_node: ["DomNode dom_node_clone_node(boolean deep);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:"],
    dom_node_compare_document_position: ["short dom_node_compare_document_position(DomNode other);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3"],
    dom_node_get_feature: ["DomNode dom_node_get_feature(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3"],
    dom_node_get_user_data: ["mixed dom_node_get_user_data(string key);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3"],
    dom_node_has_attributes: ["boolean dom_node_has_attributes();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2"],
    dom_node_has_child_nodes: ["boolean dom_node_has_child_nodes();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:"],
    dom_node_insert_before: ["domnode dom_node_insert_before(DomNode newChild, DomNode refChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:"],
    dom_node_is_default_namespace: ["boolean dom_node_is_default_namespace(string namespaceURI);", "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3"],
    dom_node_is_equal_node: ["boolean dom_node_is_equal_node(DomNode arg);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3"],
    dom_node_is_same_node: ["boolean dom_node_is_same_node(DomNode other);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3"],
    dom_node_is_supported: ["boolean dom_node_is_supported(string feature, string version);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2"],
    dom_node_lookup_namespace_uri: ["string dom_node_lookup_namespace_uri(string prefix);", "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3"],
    dom_node_lookup_prefix: ["string dom_node_lookup_prefix(string namespaceURI);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3"],
    dom_node_normalize: ["void dom_node_normalize();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:"],
    dom_node_remove_child: ["DomNode dom_node_remove_child(DomNode oldChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:"],
    dom_node_replace_child: ["DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:"],
    dom_node_set_user_data: ["mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3"],
    dom_nodelist_item: ["DOMNode dom_nodelist_item(int index);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:"],
    dom_string_extend_find_offset16: ["int dom_string_extend_find_offset16(int offset32);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:"],
    dom_string_extend_find_offset32: ["int dom_string_extend_find_offset32(int offset16);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:"],
    dom_text_is_whitespace_in_element_content: ["boolean dom_text_is_whitespace_in_element_content();", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3"],
    dom_text_replace_whole_text: ["DOMText dom_text_replace_whole_text(string content);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3"],
    dom_text_split_text: ["DOMText dom_text_split_text(int offset);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:"],
    dom_userdatahandler_handle: ["dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:"],
    dom_xpath_evaluate: ["mixed dom_xpath_evaluate(string expr [,DOMNode context]); */", "PHP_FUNCTION(dom_xpath_evaluate) {  php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_EVALUATE); } /* }}} end dom_xpath_evaluate"],
    dom_xpath_query: ["DOMNodeList dom_xpath_query(string expr [,DOMNode context]); */", "PHP_FUNCTION(dom_xpath_query) {  php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_QUERY); } /* }}} end dom_xpath_query"],
    dom_xpath_register_ns: ["boolean dom_xpath_register_ns(string prefix, string uri); */", 'PHP_FUNCTION(dom_xpath_register_ns) {  zval *id;  xmlXPathContextPtr ctxp;  int prefix_len, ns_uri_len;  dom_xpath_object *intern;  unsigned char *prefix, *ns_uri;   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss", &id, dom_xpath_class_entry, &prefix, &prefix_len, &ns_uri, &ns_uri_len) == FAILURE) {   return;  }   intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);   ctxp = (xmlXPathContextPtr) intern->ptr;  if (ctxp == NULL) {   php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid XPath Context");   RETURN_FALSE;  }   if (xmlXPathRegisterNs(ctxp, prefix, ns_uri) != 0) {   RETURN_FALSE  }  RETURN_TRUE; } /* }}}'],
    dom_xpath_register_php_functions: ["void dom_xpath_register_php_functions() */", 'PHP_FUNCTION(dom_xpath_register_php_functions) {  zval *id;  dom_xpath_object *intern;  zval *array_value, **entry, *new_string;  int  name_len = 0;  char *name;   DOM_GET_THIS(id);    if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "a",  &array_value) == SUCCESS) {   intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);   zend_hash_internal_pointer_reset(Z_ARRVAL_P(array_value));    while (zend_hash_get_current_data(Z_ARRVAL_P(array_value), (void **)&entry) == SUCCESS) {    SEPARATE_ZVAL(entry);    convert_to_string_ex(entry);     MAKE_STD_ZVAL(new_string);    ZVAL_LONG(new_string,1);       zend_hash_update(intern->registered_phpfunctions, Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &new_string, sizeof(zval*), NULL);    zend_hash_move_forward(Z_ARRVAL_P(array_value));   }   intern->registerPhpFunctions = 2;   RETURN_TRUE;   } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s",  &name, &name_len) == SUCCESS) {   intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);      MAKE_STD_ZVAL(new_string);   ZVAL_LONG(new_string,1);   zend_hash_update(intern->registered_phpfunctions, name, name_len + 1, &new_string, sizeof(zval*), NULL);   intern->registerPhpFunctions = 2;     } else {   intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);   intern->registerPhpFunctions = 1;  }   } /* }}} end dom_xpath_register_php_functions'],
    each: ["array each(array arr)", "Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element"],
    easter_date: ["int easter_date([int year])", "Return the timestamp of midnight on Easter of a given year (defaults to current year)"],
    easter_days: ["int easter_days([int year, [int method]])", "Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)"],
    echo: ["void echo(string arg1 [, string ...])", "Output one or more strings"],
    empty: ["bool empty( mixed var )", "Determine whether a variable is empty"],
    enchant_broker_describe: ["array enchant_broker_describe(resource broker)", "Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()"],
    enchant_broker_dict_exists: ["bool enchant_broker_dict_exists(resource broker, string tag)", "Whether a dictionary exists or not. Using non-empty tag"],
    enchant_broker_free: ["boolean enchant_broker_free(resource broker)", "Destroys the broker object and its dictionnaries"],
    enchant_broker_free_dict: ["resource enchant_broker_free_dict(resource dict)", "Free the dictionary resource"],
    enchant_broker_get_dict_path: ["string enchant_broker_get_dict_path(resource broker, int dict_type)", "Get the directory path for a given backend, works with ispell and myspell"],
    enchant_broker_get_error: ["string enchant_broker_get_error(resource broker)", "Returns the last error of the broker"],
    enchant_broker_init: ["resource enchant_broker_init()", "create a new broker object capable of requesting"],
    enchant_broker_list_dicts: ["string enchant_broker_list_dicts(resource broker)", "Lists the dictionaries available for the given broker"],
    enchant_broker_request_dict: ["resource enchant_broker_request_dict(resource broker, string tag)", 'create a new dictionary using tag, the non-empty language tag you wish to request  a dictionary for ("en_US", "de_DE", ...)'],
    enchant_broker_request_pwl_dict: ["resource enchant_broker_request_pwl_dict(resource broker, string filename)", "creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call."],
    enchant_broker_set_dict_path: ["bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)", "Set the directory path for a given backend, works with ispell and myspell"],
    enchant_broker_set_ordering: ["bool enchant_broker_set_ordering(resource broker, string tag, string ordering)", "Declares a preference of dictionaries to use for the language  described/referred to by 'tag'. The ordering is a comma delimited  list of provider names. As a special exception, the \"*\" tag can  be used as a language tag to declare a default ordering for any  language that does not explictly declare an ordering."],
    enchant_dict_add_to_personal: ["void enchant_dict_add_to_personal(resource dict, string word)", "add 'word' to personal word list"],
    enchant_dict_add_to_session: ["void enchant_dict_add_to_session(resource dict, string word)", "add 'word' to this spell-checking session"],
    enchant_dict_check: ["bool enchant_dict_check(resource dict, string word)", "If the word is correctly spelled return true, otherwise return false"],
    enchant_dict_describe: ["array enchant_dict_describe(resource dict)", "Describes an individual dictionary 'dict'"],
    enchant_dict_get_error: ["string enchant_dict_get_error(resource dict)", "Returns the last error of the current spelling-session"],
    enchant_dict_is_in_session: ["bool enchant_dict_is_in_session(resource dict, string word)", "whether or not 'word' exists in this spelling-session"],
    enchant_dict_quick_check: ["bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])", "If the word is correctly spelled return true, otherwise return false, if suggestions variable     is provided, fill it with spelling alternatives."],
    enchant_dict_store_replacement: ["void enchant_dict_store_replacement(resource dict, string mis, string cor)", "add a correction for 'mis' using 'cor'.  Notes that you replaced @mis with @cor, so it's possibly more likely  that future occurrences of @mis will be replaced with @cor. So it might  bump @cor up in the suggestion list."],
    enchant_dict_suggest: ["array enchant_dict_suggest(resource dict, string word)", "Will return a list of values if any of those pre-conditions are not met."],
    end: ["mixed end(array array_arg)", "Advances array argument's internal pointer to the last element and return it"],
    ereg: ["int ereg(string pattern, string string [, array registers])", "Regular expression match"],
    ereg_replace: ["string ereg_replace(string pattern, string replacement, string string)", "Replace regular expression"],
    eregi: ["int eregi(string pattern, string string [, array registers])", "Case-insensitive regular expression match"],
    eregi_replace: ["string eregi_replace(string pattern, string replacement, string string)", "Case insensitive replace regular expression"],
    error_get_last: ["array error_get_last()", "Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet."],
    error_log: ["bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])", "Send an error message somewhere"],
    error_reporting: ["int error_reporting([int new_error_level])", "Return the current error_reporting level, and if an argument was passed - change to the new level"],
    escapeshellarg: ["string escapeshellarg(string arg)", "Quote and escape an argument for use in a shell command"],
    escapeshellcmd: ["string escapeshellcmd(string command)", "Escape shell metacharacters"],
    exec: ["string exec(string command [, array &output [, int &return_value]])", "Execute an external program"],
    exif_imagetype: ["int exif_imagetype(string imagefile)", "Get the type of an image"],
    exif_read_data: ["array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])", "Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails"],
    exif_tagname: ["string exif_tagname(index)", "Get headername for index or false if not defined"],
    exif_thumbnail: ["string exif_thumbnail(string filename [, &width, &height [, &imagetype]])", "Reads the embedded thumbnail"],
    exit: ["void exit([mixed status])", "Output a message and terminate the current script"],
    exp: ["float exp(float number)", "Returns e raised to the power of the number"],
    explode: ["array explode(string separator, string str [, int limit])", "Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned."],
    expm1: ["float expm1(float number)", "Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero"],
    extension_loaded: ["bool extension_loaded(string extension_name)", "Returns true if the named extension is loaded"],
    extract: ["int extract(array var_array [, int extract_type [, string prefix]])", "Imports variables into symbol table from an array"],
    ezmlm_hash: ["int ezmlm_hash(string addr)", "Calculate EZMLM list hash value."],
    fclose: ["bool fclose(resource fp)", "Close an open file pointer"],
    feof: ["bool feof(resource fp)", "Test for end-of-file on a file pointer"],
    fflush: ["bool fflush(resource fp)", "Flushes output"],
    fgetc: ["string fgetc(resource fp)", "Get a character from file pointer"],
    fgetcsv: ["array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])", "Get line from file pointer and parse for CSV fields"],
    fgets: ["string fgets(resource fp[, int length])", "Get a line from file pointer"],
    fgetss: ["string fgetss(resource fp [, int length [, string allowable_tags]])", "Get a line from file pointer and strip HTML tags"],
    file: ["array file(string filename [, int flags[, resource context]])", "Read entire file into an array"],
    file_exists: ["bool file_exists(string filename)", "Returns true if filename exists"],
    file_get_contents: ["string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])", "Read the entire file into a string"],
    file_put_contents: ["int file_put_contents(string file, mixed data [, int flags [, resource context]])", "Write/Create a file with contents data and return the number of bytes written"],
    fileatime: ["int fileatime(string filename)", "Get last access time of file"],
    filectime: ["int filectime(string filename)", "Get inode modification time of file"],
    filegroup: ["int filegroup(string filename)", "Get file group"],
    fileinode: ["int fileinode(string filename)", "Get file inode"],
    filemtime: ["int filemtime(string filename)", "Get last modification time of file"],
    fileowner: ["int fileowner(string filename)", "Get file owner"],
    fileperms: ["int fileperms(string filename)", "Get file permissions"],
    filesize: ["int filesize(string filename)", "Get file size"],
    filetype: ["string filetype(string filename)", "Get file type"],
    filter_has_var: ["mixed filter_has_var(constant type, string variable_name)", "* Returns true if the variable with the name 'name' exists in source."],
    filter_input: ["mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])", "* Returns the filtered variable 'name'* from source `type`."],
    filter_input_array: ["mixed filter_input_array(constant type, [, mixed options]])", "* Returns an array with all arguments defined in 'definition'."],
    filter_var: ["mixed filter_var(mixed variable [, long filter [, mixed options]])", "* Returns the filtered version of the vriable."],
    filter_var_array: ["mixed filter_var_array(array data, [, mixed options]])", "* Returns an array with all arguments defined in 'definition'."],
    finfo_buffer: ["string finfo_buffer(resource finfo, char *string [, int options [, resource context]])", "Return infromation about a string buffer."],
    finfo_close: ["resource finfo_close(resource finfo)", "Close fileinfo resource."],
    finfo_file: ["string finfo_file(resource finfo, char *file_name [, int options [, resource context]])", "Return information about a file."],
    finfo_open: ["resource finfo_open([int options [, string arg]])", "Create a new fileinfo resource."],
    finfo_set_flags: ["bool finfo_set_flags(resource finfo, int options)", "Set libmagic configuration options."],
    floatval: ["float floatval(mixed var)", "Get the float value of a variable"],
    flock: ["bool flock(resource fp, int operation [, int &wouldblock])", "Portable file locking"],
    floor: ["float floor(float number)", "Returns the next lowest integer value from the number"],
    flush: ["void flush(void)", "Flush the output buffer"],
    fmod: ["float fmod(float x, float y)", "Returns the remainder of dividing x by y as a float"],
    fnmatch: ["bool fnmatch(string pattern, string filename [, int flags])", "Match filename against pattern"],
    fopen: ["resource fopen(string filename, string mode [, bool use_include_path [, resource context]])", "Open a file or a URL and return a file pointer"],
    forward_static_call: ["mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])", "Call a user function which is the first parameter"],
    fpassthru: ["int fpassthru(resource fp)", "Output all remaining data from a file pointer"],
    fprintf: ["int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])", "Output a formatted string into a stream"],
    fputcsv: ["int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])", "Format line as CSV and write to file pointer"],
    fread: ["string fread(resource fp, int length)", "Binary-safe file read"],
    frenchtojd: ["int frenchtojd(int month, int day, int year)", "Converts a french republic calendar date to julian day count"],
    fscanf: ["mixed fscanf(resource stream, string format [, string ...])", "Implements a mostly ANSI compatible fscanf()"],
    fseek: ["int fseek(resource fp, int offset [, int whence])", "Seek on a file pointer"],
    fsockopen: ["resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", "Open Internet or Unix domain socket connection"],
    fstat: ["array fstat(resource fp)", "Stat() on a filehandle"],
    ftell: ["int ftell(resource fp)", "Get file pointer's read/write position"],
    ftok: ["int ftok(string pathname, string proj)", "Convert a pathname and a project identifier to a System V IPC key"],
    ftp_alloc: ["bool ftp_alloc(resource stream, int size[, &response])", "Attempt to allocate space on the remote FTP server"],
    ftp_cdup: ["bool ftp_cdup(resource stream)", "Changes to the parent directory"],
    ftp_chdir: ["bool ftp_chdir(resource stream, string directory)", "Changes directories"],
    ftp_chmod: ["int ftp_chmod(resource stream, int mode, string filename)", "Sets permissions on a file"],
    ftp_close: ["bool ftp_close(resource stream)", "Closes the FTP stream"],
    ftp_connect: ["resource ftp_connect(string host [, int port [, int timeout]])", "Opens a FTP stream"],
    ftp_delete: ["bool ftp_delete(resource stream, string file)", "Deletes a file"],
    ftp_exec: ["bool ftp_exec(resource stream, string command)", "Requests execution of a program on the FTP server"],
    ftp_fget: ["bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", "Retrieves a file from the FTP server and writes it to an open file"],
    ftp_fput: ["bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", "Stores a file from an open file to the FTP server"],
    ftp_get: ["bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", "Retrieves a file from the FTP server and writes it to a local file"],
    ftp_get_option: ["mixed ftp_get_option(resource stream, int option)", "Gets an FTP option"],
    ftp_login: ["bool ftp_login(resource stream, string username, string password)", "Logs into the FTP server"],
    ftp_mdtm: ["int ftp_mdtm(resource stream, string filename)", "Returns the last modification time of the file, or -1 on error"],
    ftp_mkdir: ["string ftp_mkdir(resource stream, string directory)", "Creates a directory and returns the absolute path for the new directory or false on error"],
    ftp_nb_continue: ["int ftp_nb_continue(resource stream)", "Continues retrieving/sending a file nbronously"],
    ftp_nb_fget: ["int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", "Retrieves a file from the FTP server asynchronly and writes it to an open file"],
    ftp_nb_fput: ["int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", "Stores a file from an open file to the FTP server nbronly"],
    ftp_nb_get: ["int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", "Retrieves a file from the FTP server nbhronly and writes it to a local file"],
    ftp_nb_put: ["int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", "Stores a file on the FTP server"],
    ftp_nlist: ["array ftp_nlist(resource stream, string directory)", "Returns an array of filenames in the given directory"],
    ftp_pasv: ["bool ftp_pasv(resource stream, bool pasv)", "Turns passive mode on or off"],
    ftp_put: ["bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", "Stores a file on the FTP server"],
    ftp_pwd: ["string ftp_pwd(resource stream)", "Returns the present working directory"],
    ftp_raw: ["array ftp_raw(resource stream, string command)", "Sends a literal command to the FTP server"],
    ftp_rawlist: ["array ftp_rawlist(resource stream, string directory [, bool recursive])", "Returns a detailed listing of a directory as an array of output lines"],
    ftp_rename: ["bool ftp_rename(resource stream, string src, string dest)", "Renames the given file to a new path"],
    ftp_rmdir: ["bool ftp_rmdir(resource stream, string directory)", "Removes a directory"],
    ftp_set_option: ["bool ftp_set_option(resource stream, int option, mixed value)", "Sets an FTP option"],
    ftp_site: ["bool ftp_site(resource stream, string cmd)", "Sends a SITE command to the server"],
    ftp_size: ["int ftp_size(resource stream, string filename)", "Returns the size of the file, or -1 on error"],
    ftp_ssl_connect: ["resource ftp_ssl_connect(string host [, int port [, int timeout]])", "Opens a FTP-SSL stream"],
    ftp_systype: ["string ftp_systype(resource stream)", "Returns the system type identifier"],
    ftruncate: ["bool ftruncate(resource fp, int size)", "Truncate file to 'size' length"],
    func_get_arg: ["mixed func_get_arg(int arg_num)", "Get the $arg_num'th argument that was passed to the function"],
    func_get_args: ["array func_get_args()", "Get an array of the arguments that were passed to the function"],
    func_num_args: ["int func_num_args(void)", "Get the number of arguments that were passed to the function"],
    "function ": ["", ""],
    "foreach ": ["", ""],
    function_exists: ["bool function_exists(string function_name)", "Checks if the function exists"],
    fwrite: ["int fwrite(resource fp, string str [, int length])", "Binary-safe file write"],
    gc_collect_cycles: ["int gc_collect_cycles(void)", "Forces collection of any existing garbage cycles.    Returns number of freed zvals"],
    gc_disable: ["void gc_disable(void)", "Deactivates the circular reference collector"],
    gc_enable: ["void gc_enable(void)", "Activates the circular reference collector"],
    gc_enabled: ["void gc_enabled(void)", "Returns status of the circular reference collector"],
    gd_info: ["array gd_info()", ""],
    getKeywords: ["static array getKeywords(string $locale) {", "* return an associative array containing keyword-value  * pairs for this locale. The keys are keys to the array (doh!)  * }}}"],
    get_browser: ["mixed get_browser([string browser_name [, bool return_array]])", "Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array."],
    get_called_class: ["string get_called_class()", 'Retrieves the "Late Static Binding" class name'],
    get_cfg_var: ["mixed get_cfg_var(string option_name)", "Get the value of a PHP configuration option"],
    get_class: ["string get_class([object object])", "Retrieves the class name"],
    get_class_methods: ["array get_class_methods(mixed class)", "Returns an array of method names for class or class instance."],
    get_class_vars: ["array get_class_vars(string class_name)", "Returns an array of default properties of the class."],
    get_current_user: ["string get_current_user(void)", "Get the name of the owner of the current PHP script"],
    get_declared_classes: ["array get_declared_classes()", "Returns an array of all declared classes."],
    get_declared_interfaces: ["array get_declared_interfaces()", "Returns an array of all declared interfaces."],
    get_defined_constants: ["array get_defined_constants([bool categorize])", "Return an array containing the names and values of all defined constants"],
    get_defined_functions: ["array get_defined_functions(void)", "Returns an array of all defined functions"],
    get_defined_vars: ["array get_defined_vars(void)", "Returns an associative array of names and values of all currently defined variable names (variables in the current scope)"],
    get_display_language: ["static string get_display_language($locale[, $in_locale = null])", "* gets the language for the $locale in $in_locale or default_locale"],
    get_display_name: ["static string get_display_name($locale[, $in_locale = null])", "* gets the name for the $locale in $in_locale or default_locale"],
    get_display_region: ["static string get_display_region($locale, $in_locale = null)", "* gets the region for the $locale in $in_locale or default_locale"],
    get_display_script: ["static string get_display_script($locale, $in_locale = null)", "* gets the script for the $locale in $in_locale or default_locale"],
    get_extension_funcs: ["array get_extension_funcs(string extension_name)", "Returns an array with the names of functions belonging to the named extension"],
    get_headers: ["array get_headers(string url[, int format])", "fetches all the headers sent by the server in response to a HTTP request"],
    get_html_translation_table: ["array get_html_translation_table([int table [, int quote_style]])", "Returns the internal translation table used by htmlspecialchars and htmlentities"],
    get_include_path: ["string get_include_path()", "Get the current include_path configuration option"],
    get_included_files: ["array get_included_files(void)", "Returns an array with the file names that were include_once()'d"],
    get_loaded_extensions: ["array get_loaded_extensions([bool zend_extensions])", "Return an array containing names of loaded extensions"],
    get_magic_quotes_gpc: ["int get_magic_quotes_gpc(void)", "Get the current active configuration setting of magic_quotes_gpc"],
    get_magic_quotes_runtime: ["int get_magic_quotes_runtime(void)", "Get the current active configuration setting of magic_quotes_runtime"],
    get_meta_tags: ["array get_meta_tags(string filename [, bool use_include_path])", "Extracts all meta tag content attributes from a file and returns an array"],
    get_object_vars: ["array get_object_vars(object obj)", "Returns an array of object properties"],
    get_parent_class: ["string get_parent_class([mixed object])", "Retrieves the parent class name for object or class or current scope."],
    get_resource_type: ["string get_resource_type(resource res)", "Get the resource type name for a given resource"],
    getallheaders: ["array getallheaders(void)", ""],
    getcwd: ["mixed getcwd(void)", "Gets the current directory"],
    getdate: ["array getdate([int timestamp])", "Get date/time information"],
    getenv: ["string getenv(string varname)", "Get the value of an environment variable"],
    gethostbyaddr: ["string gethostbyaddr(string ip_address)", "Get the Internet host name corresponding to a given IP address"],
    gethostbyname: ["string gethostbyname(string hostname)", "Get the IP address corresponding to a given Internet host name"],
    gethostbynamel: ["array gethostbynamel(string hostname)", "Return a list of IP addresses that a given hostname resolves to."],
    gethostname: ["string gethostname()", "Get the host name of the current machine"],
    getimagesize: ["array getimagesize(string imagefile [, array info])", "Get the size of an image as 4-element array"],
    getlastmod: ["int getlastmod(void)", "Get time of last page modification"],
    getmygid: ["int getmygid(void)", "Get PHP script owner's GID"],
    getmyinode: ["int getmyinode(void)", "Get the inode of the current script being parsed"],
    getmypid: ["int getmypid(void)", "Get current process ID"],
    getmyuid: ["int getmyuid(void)", "Get PHP script owner's UID"],
    getopt: ["array getopt(string options [, array longopts])", "Get options from the command line argument list"],
    getprotobyname: ["int getprotobyname(string name)", "Returns protocol number associated with name as per /etc/protocols"],
    getprotobynumber: ["string getprotobynumber(int proto)", "Returns protocol name associated with protocol number proto"],
    getrandmax: ["int getrandmax(void)", "Returns the maximum value a random number can have"],
    getrusage: ["array getrusage([int who])", "Returns an array of usage statistics"],
    getservbyname: ["int getservbyname(string service, string protocol)", 'Returns port associated with service. Protocol must be "tcp" or "udp"'],
    getservbyport: ["string getservbyport(int port, string protocol)", 'Returns service name associated with port. Protocol must be "tcp" or "udp"'],
    gettext: ["string gettext(string msgid)", "Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist"],
    gettimeofday: ["array gettimeofday([bool get_as_float])", "Returns the current time as array"],
    gettype: ["string gettype(mixed var)", "Returns the type of the variable"],
    glob: ["array glob(string pattern [, int flags])", "Find pathnames matching a pattern"],
    gmdate: ["string gmdate(string format [, long timestamp])", "Format a GMT date/time"],
    gmmktime: ["int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", "Get UNIX timestamp for a GMT date"],
    gmp_abs: ["resource gmp_abs(resource a)", "Calculates absolute value"],
    gmp_add: ["resource gmp_add(resource a, resource b)", "Add a and b"],
    gmp_and: ["resource gmp_and(resource a, resource b)", "Calculates logical AND of a and b"],
    gmp_clrbit: ["void gmp_clrbit(resource &a, int index)", "Clears bit in a"],
    gmp_cmp: ["int gmp_cmp(resource a, resource b)", "Compares two numbers"],
    gmp_com: ["resource gmp_com(resource a)", "Calculates one's complement of a"],
    gmp_div_q: ["resource gmp_div_q(resource a, resource b [, int round])", "Divide a by b, returns quotient only"],
    gmp_div_qr: ["array gmp_div_qr(resource a, resource b [, int round])", "Divide a by b, returns quotient and reminder"],
    gmp_div_r: ["resource gmp_div_r(resource a, resource b [, int round])", "Divide a by b, returns reminder only"],
    gmp_divexact: ["resource gmp_divexact(resource a, resource b)", "Divide a by b using exact division algorithm"],
    gmp_fact: ["resource gmp_fact(int a)", "Calculates factorial function"],
    gmp_gcd: ["resource gmp_gcd(resource a, resource b)", "Computes greatest common denominator (gcd) of a and b"],
    gmp_gcdext: ["array gmp_gcdext(resource a, resource b)", "Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)"],
    gmp_hamdist: ["int gmp_hamdist(resource a, resource b)", "Calculates hamming distance between a and b"],
    gmp_init: ["resource gmp_init(mixed number [, int base])", "Initializes GMP number"],
    gmp_intval: ["int gmp_intval(resource gmpnumber)", "Gets signed long value of GMP number"],
    gmp_invert: ["resource gmp_invert(resource a, resource b)", "Computes the inverse of a modulo b"],
    gmp_jacobi: ["int gmp_jacobi(resource a, resource b)", "Computes Jacobi symbol"],
    gmp_legendre: ["int gmp_legendre(resource a, resource b)", "Computes Legendre symbol"],
    gmp_mod: ["resource gmp_mod(resource a, resource b)", "Computes a modulo b"],
    gmp_mul: ["resource gmp_mul(resource a, resource b)", "Multiply a and b"],
    gmp_neg: ["resource gmp_neg(resource a)", "Negates a number"],
    gmp_nextprime: ["resource gmp_nextprime(resource a)", "Finds next prime of a"],
    gmp_or: ["resource gmp_or(resource a, resource b)", "Calculates logical OR of a and b"],
    gmp_perfect_square: ["bool gmp_perfect_square(resource a)", "Checks if a is an exact square"],
    gmp_popcount: ["int gmp_popcount(resource a)", "Calculates the population count of a"],
    gmp_pow: ["resource gmp_pow(resource base, int exp)", "Raise base to power exp"],
    gmp_powm: ["resource gmp_powm(resource base, resource exp, resource mod)", "Raise base to power exp and take result modulo mod"],
    gmp_prob_prime: ["int gmp_prob_prime(resource a[, int reps])", 'Checks if a is "probably prime"'],
    gmp_random: ["resource gmp_random([int limiter])", "Gets random number"],
    gmp_scan0: ["int gmp_scan0(resource a, int start)", "Finds first zero bit"],
    gmp_scan1: ["int gmp_scan1(resource a, int start)", "Finds first non-zero bit"],
    gmp_setbit: ["void gmp_setbit(resource &a, int index[, bool set_clear])", "Sets or clear bit in a"],
    gmp_sign: ["int gmp_sign(resource a)", "Gets the sign of the number"],
    gmp_sqrt: ["resource gmp_sqrt(resource a)", "Takes integer part of square root of a"],
    gmp_sqrtrem: ["array gmp_sqrtrem(resource a)", "Square root with remainder"],
    gmp_strval: ["string gmp_strval(resource gmpnumber [, int base])", "Gets string representation of GMP number"],
    gmp_sub: ["resource gmp_sub(resource a, resource b)", "Subtract b from a"],
    gmp_testbit: ["bool gmp_testbit(resource a, int index)", "Tests if bit is set in a"],
    gmp_xor: ["resource gmp_xor(resource a, resource b)", "Calculates logical exclusive OR of a and b"],
    gmstrftime: ["string gmstrftime(string format [, int timestamp])", "Format a GMT/UCT time/date according to locale settings"],
    grapheme_extract: ["string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])", "Function to extract a sequence of default grapheme clusters"],
    grapheme_stripos: ["int grapheme_stripos(string haystack, string needle [, int offset ])", "Find position of first occurrence of a string within another, ignoring case differences"],
    grapheme_stristr: ["string grapheme_stristr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another"],
    grapheme_strlen: ["int grapheme_strlen(string str)", "Get number of graphemes in a string"],
    grapheme_strpos: ["int grapheme_strpos(string haystack, string needle [, int offset ])", "Find position of first occurrence of a string within another"],
    grapheme_strripos: ["int grapheme_strripos(string haystack, string needle [, int offset])", "Find position of last occurrence of a string within another, ignoring case"],
    grapheme_strrpos: ["int grapheme_strrpos(string haystack, string needle [, int offset])", "Find position of last occurrence of a string within another"],
    grapheme_strstr: ["string grapheme_strstr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another"],
    grapheme_substr: ["string grapheme_substr(string str, int start [, int length])", "Returns part of a string"],
    gregoriantojd: ["int gregoriantojd(int month, int day, int year)", "Converts a gregorian calendar date to julian day count"],
    gzcompress: ["string gzcompress(string data [, int level])", "Gzip-compress a string"],
    gzdeflate: ["string gzdeflate(string data [, int level])", "Gzip-compress a string"],
    gzencode: ["string gzencode(string data [, int level [, int encoding_mode]])", "GZ encode a string"],
    gzfile: ["array gzfile(string filename [, int use_include_path])", "Read und uncompress entire .gz-file into an array"],
    gzinflate: ["string gzinflate(string data [, int length])", "Unzip a gzip-compressed string"],
    gzopen: ["resource gzopen(string filename, string mode [, int use_include_path])", "Open a .gz-file and return a .gz-file pointer"],
    gzuncompress: ["string gzuncompress(string data [, int length])", "Unzip a gzip-compressed string"],
    hash: ["string hash(string algo, string data[, bool raw_output = false])", "Generate a hash of a given input string Returns lowercase hexits by default"],
    hash_algos: ["array hash_algos(void)", "Return a list of registered hashing algorithms"],
    hash_copy: ["resource hash_copy(resource context)", "Copy hash resource"],
    hash_file: ["string hash_file(string algo, string filename[, bool raw_output = false])", "Generate a hash of a given file Returns lowercase hexits by default"],
    hash_final: ["string hash_final(resource context[, bool raw_output=false])", "Output resulting digest"],
    hash_hmac: ["string hash_hmac(string algo, string data, string key[, bool raw_output = false])", "Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default"],
    hash_hmac_file: ["string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])", "Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default"],
    hash_init: ["resource hash_init(string algo[, int options, string key])", "Initialize a hashing context"],
    hash_update: ["bool hash_update(resource context, string data)", "Pump data into the hashing algorithm"],
    hash_update_file: ["bool hash_update_file(resource context, string filename[, resource context])", "Pump data into the hashing algorithm from a file"],
    hash_update_stream: ["int hash_update_stream(resource context, resource handle[, integer length])", "Pump data into the hashing algorithm from an open stream"],
    header: ["void header(string header [, bool replace, [int http_response_code]])", "Sends a raw HTTP header"],
    header_remove: ["void header_remove([string name])", "Removes an HTTP header previously set using header()"],
    headers_list: ["array headers_list(void)", "Return list of headers to be sent / already sent"],
    headers_sent: ["bool headers_sent([string &$file [, int &$line]])", "Returns true if headers have already been sent, false otherwise"],
    hebrev: ["string hebrev(string str [, int max_chars_per_line])", "Converts logical Hebrew text to visual text"],
    hebrevc: ["string hebrevc(string str [, int max_chars_per_line])", "Converts logical Hebrew text to visual text with newline conversion"],
    hexdec: ["int hexdec(string hexadecimal_number)", "Returns the decimal equivalent of the hexadecimal number"],
    highlight_file: ["bool highlight_file(string file_name [, bool return] )", "Syntax highlight a source file"],
    highlight_string: ["bool highlight_string(string string [, bool return] )", "Syntax highlight a string or optionally return it"],
    html_entity_decode: ["string html_entity_decode(string string [, int quote_style][, string charset])", "Convert all HTML entities to their applicable characters"],
    htmlentities: ["string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])", "Convert all applicable characters to HTML entities"],
    htmlspecialchars: ["string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])", "Convert special characters to HTML entities"],
    htmlspecialchars_decode: ["string htmlspecialchars_decode(string string [, int quote_style])", "Convert special HTML entities back to characters"],
    http_build_query: ["string http_build_query(mixed formdata [, string prefix [, string arg_separator]])", "Generates a form-encoded query string from an associative array or object."],
    hypot: ["float hypot(float num1, float num2)", "Returns sqrt(num1*num1 + num2*num2)"],
    ibase_add_user: ["bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", "Add a user to security database"],
    ibase_affected_rows: ["int ibase_affected_rows( [ resource link_identifier ] )", "Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement"],
    ibase_backup: ["mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])", "Initiates a backup task in the service manager and returns immediately"],
    ibase_blob_add: ["bool ibase_blob_add(resource blob_handle, string data)", "Add data into created blob"],
    ibase_blob_cancel: ["bool ibase_blob_cancel(resource blob_handle)", "Cancel creating blob"],
    ibase_blob_close: ["string ibase_blob_close(resource blob_handle)", "Close blob"],
    ibase_blob_create: ["resource ibase_blob_create([resource link_identifier])", "Create blob for adding data"],
    ibase_blob_echo: ["bool ibase_blob_echo([ resource link_identifier, ] string blob_id)", "Output blob contents to browser"],
    ibase_blob_get: ["string ibase_blob_get(resource blob_handle, int len)", "Get len bytes data from open blob"],
    ibase_blob_import: ["string ibase_blob_import([ resource link_identifier, ] resource file)", "Create blob, copy file in it, and close it"],
    ibase_blob_info: ["array ibase_blob_info([ resource link_identifier, ] string blob_id)", "Return blob length and other useful info"],
    ibase_blob_open: ["resource ibase_blob_open([ resource link_identifier, ] string blob_id)", "Open blob for retrieving data parts"],
    ibase_close: ["bool ibase_close([resource link_identifier])", "Close an InterBase connection"],
    ibase_commit: ["bool ibase_commit( resource link_identifier )", "Commit transaction"],
    ibase_commit_ret: ["bool ibase_commit_ret( resource link_identifier )", "Commit transaction and retain the transaction context"],
    ibase_connect: ["resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", "Open a connection to an InterBase database"],
    ibase_db_info: ["string ibase_db_info(resource service_handle, string db, int action [, int argument])", "Request statistics about a database"],
    ibase_delete_user: ["bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", "Delete a user from security database"],
    ibase_drop_db: ["bool ibase_drop_db([resource link_identifier])", "Drop an InterBase database"],
    ibase_errcode: ["int ibase_errcode(void)", "Return error code"],
    ibase_errmsg: ["string ibase_errmsg(void)", "Return error message"],
    ibase_execute: ["mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])", "Execute a previously prepared query"],
    ibase_fetch_assoc: ["array ibase_fetch_assoc(resource result [, int fetch_flags])", "Fetch a row  from the results of a query"],
    ibase_fetch_object: ["object ibase_fetch_object(resource result [, int fetch_flags])", "Fetch a object from the results of a query"],
    ibase_fetch_row: ["array ibase_fetch_row(resource result [, int fetch_flags])", "Fetch a row  from the results of a query"],
    ibase_field_info: ["array ibase_field_info(resource query_result, int field_number)", "Get information about a field"],
    ibase_free_event_handler: ["bool ibase_free_event_handler(resource event)", "Frees the event handler set by ibase_set_event_handler()"],
    ibase_free_query: ["bool ibase_free_query(resource query)", "Free memory used by a query"],
    ibase_free_result: ["bool ibase_free_result(resource result)", "Free the memory used by a result"],
    ibase_gen_id: ["int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])", "Increments the named generator and returns its new value"],
    ibase_maintain_db: ["bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])", "Execute a maintenance command on the database server"],
    ibase_modify_user: ["bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", "Modify a user in security database"],
    ibase_name_result: ["bool ibase_name_result(resource result, string name)", "Assign a name to a result for use with ... WHERE CURRENT OF <name> statements"],
    ibase_num_fields: ["int ibase_num_fields(resource query_result)", "Get the number of fields in result"],
    ibase_num_params: ["int ibase_num_params(resource query)", "Get the number of params in a prepared query"],
    ibase_num_rows: ["int ibase_num_rows( resource result_identifier )", "Return the number of rows that are available in a result"],
    ibase_param_info: ["array ibase_param_info(resource query, int field_number)", "Get information about a parameter"],
    ibase_pconnect: ["resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", "Open a persistent connection to an InterBase database"],
    ibase_prepare: ["resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])", "Prepare a query for later execution"],
    ibase_query: ["mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])", "Execute a query"],
    ibase_restore: ["mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])", "Initiates a restore task in the service manager and returns immediately"],
    ibase_rollback: ["bool ibase_rollback( resource link_identifier )", "Rollback transaction"],
    ibase_rollback_ret: ["bool ibase_rollback_ret( resource link_identifier )", "Rollback transaction and retain the transaction context"],
    ibase_server_info: ["string ibase_server_info(resource service_handle, int action)", "Request information about a database server"],
    ibase_service_attach: ["resource ibase_service_attach(string host, string dba_username, string dba_password)", "Connect to the service manager"],
    ibase_service_detach: ["bool ibase_service_detach(resource service_handle)", "Disconnect from the service manager"],
    ibase_set_event_handler: ["resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])", "Register the callback for handling each of the named events"],
    ibase_trans: ["resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])", "Start a transaction over one or several databases"],
    ibase_wait_event: ["string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])", "Waits for any one of the passed Interbase events to be posted by the database, and returns its name"],
    iconv: ["string iconv(string in_charset, string out_charset, string str)", "Returns str converted to the out_charset character set"],
    iconv_get_encoding: ["mixed iconv_get_encoding([string type])", "Get internal encoding and output encoding for ob_iconv_handler()"],
    iconv_mime_decode: ["string iconv_mime_decode(string encoded_string [, int mode, string charset])", "Decodes a mime header field"],
    iconv_mime_decode_headers: ["array iconv_mime_decode_headers(string headers [, int mode, string charset])", "Decodes multiple mime header fields"],
    iconv_mime_encode: ["string iconv_mime_encode(string field_name, string field_value [, array preference])", "Composes a mime header field with field_name and field_value in a specified scheme"],
    iconv_set_encoding: ["bool iconv_set_encoding(string type, string charset)", "Sets internal encoding and output encoding for ob_iconv_handler()"],
    iconv_strlen: ["int iconv_strlen(string str [, string charset])", "Returns the character count of str"],
    iconv_strpos: ["int iconv_strpos(string haystack, string needle [, int offset [, string charset]])", "Finds position of first occurrence of needle within part of haystack beginning with offset"],
    iconv_strrpos: ["int iconv_strrpos(string haystack, string needle [, string charset])", "Finds position of last occurrence of needle within part of haystack beginning with offset"],
    iconv_substr: ["string iconv_substr(string str, int offset, [int length, string charset])", "Returns specified part of a string"],
    idate: ["int idate(string format [, int timestamp])", "Format a local time/date as integer"],
    idn_to_ascii: ["int idn_to_ascii(string domain[, int options])", "Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC"],
    idn_to_utf8: ["int idn_to_utf8(string domain[, int options])", "Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC"],
    ignore_user_abort: ["int ignore_user_abort([string value])", "Set whether we want to ignore a user abort event or not"],
    image2wbmp: ["bool image2wbmp(resource im [, string filename [, int threshold]])", "Output WBMP image to browser or file"],
    image_type_to_extension: ["string image_type_to_extension(int imagetype [, bool include_dot])", "Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype"],
    image_type_to_mime_type: ["string image_type_to_mime_type(int imagetype)", "Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype"],
    imagealphablending: ["bool imagealphablending(resource im, bool on)", "Turn alpha blending mode on or off for the given image"],
    imageantialias: ["bool imageantialias(resource im, bool on)", "Should antialiased functions used or not"],
    imagearc: ["bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)", "Draw a partial ellipse"],
    imagechar: ["bool imagechar(resource im, int font, int x, int y, string c, int col)", "Draw a character"],
    imagecharup: ["bool imagecharup(resource im, int font, int x, int y, string c, int col)", "Draw a character rotated 90 degrees counter-clockwise"],
    imagecolorallocate: ["int imagecolorallocate(resource im, int red, int green, int blue)", "Allocate a color for an image"],
    imagecolorallocatealpha: ["int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)", "Allocate a color with an alpha level.  Works for true color and palette based images"],
    imagecolorat: ["int imagecolorat(resource im, int x, int y)", "Get the index of the color of a pixel"],
    imagecolorclosest: ["int imagecolorclosest(resource im, int red, int green, int blue)", "Get the index of the closest color to the specified color"],
    imagecolorclosestalpha: ["int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)", "Find the closest matching colour with alpha transparency"],
    imagecolorclosesthwb: ["int imagecolorclosesthwb(resource im, int red, int green, int blue)", "Get the index of the color which has the hue, white and blackness nearest to the given color"],
    imagecolordeallocate: ["bool imagecolordeallocate(resource im, int index)", "De-allocate a color for an image"],
    imagecolorexact: ["int imagecolorexact(resource im, int red, int green, int blue)", "Get the index of the specified color"],
    imagecolorexactalpha: ["int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)", "Find exact match for colour with transparency"],
    imagecolormatch: ["bool imagecolormatch(resource im1, resource im2)", "Makes the colors of the palette version of an image more closely match the true color version"],
    imagecolorresolve: ["int imagecolorresolve(resource im, int red, int green, int blue)", "Get the index of the specified color or its closest possible alternative"],
    imagecolorresolvealpha: ["int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)", "Resolve/Allocate a colour with an alpha level.  Works for true colour and palette based images"],
    imagecolorset: ["void imagecolorset(resource im, int col, int red, int green, int blue)", "Set the color for the specified palette index"],
    imagecolorsforindex: ["array imagecolorsforindex(resource im, int col)", "Get the colors for an index"],
    imagecolorstotal: ["int imagecolorstotal(resource im)", "Find out the number of colors in an image's palette"],
    imagecolortransparent: ["int imagecolortransparent(resource im [, int col])", "Define a color as transparent"],
    imageconvolution: ["resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)", "Apply a 3x3 convolution matrix, using coefficient div and offset"],
    imagecopy: ["bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)", "Copy part of an image"],
    imagecopymerge: ["bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", "Merge one part of an image with another"],
    imagecopymergegray: ["bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", "Merge one part of an image with another"],
    imagecopyresampled: ["bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", "Copy and resize part of an image using resampling to help ensure clarity"],
    imagecopyresized: ["bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", "Copy and resize part of an image"],
    imagecreate: ["resource imagecreate(int x_size, int y_size)", "Create a new image"],
    imagecreatefromgd: ["resource imagecreatefromgd(string filename)", "Create a new image from GD file or URL"],
    imagecreatefromgd2: ["resource imagecreatefromgd2(string filename)", "Create a new image from GD2 file or URL"],
    imagecreatefromgd2part: ["resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)", "Create a new image from a given part of GD2 file or URL"],
    imagecreatefromgif: ["resource imagecreatefromgif(string filename)", "Create a new image from GIF file or URL"],
    imagecreatefromjpeg: ["resource imagecreatefromjpeg(string filename)", "Create a new image from JPEG file or URL"],
    imagecreatefrompng: ["resource imagecreatefrompng(string filename)", "Create a new image from PNG file or URL"],
    imagecreatefromstring: ["resource imagecreatefromstring(string image)", "Create a new image from the image stream in the string"],
    imagecreatefromwbmp: ["resource imagecreatefromwbmp(string filename)", "Create a new image from WBMP file or URL"],
    imagecreatefromxbm: ["resource imagecreatefromxbm(string filename)", "Create a new image from XBM file or URL"],
    imagecreatefromxpm: ["resource imagecreatefromxpm(string filename)", "Create a new image from XPM file or URL"],
    imagecreatetruecolor: ["resource imagecreatetruecolor(int x_size, int y_size)", "Create a new true color image"],
    imagedashedline: ["bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a dashed line"],
    imagedestroy: ["bool imagedestroy(resource im)", "Destroy an image"],
    imageellipse: ["bool imageellipse(resource im, int cx, int cy, int w, int h, int color)", "Draw an ellipse"],
    imagefill: ["bool imagefill(resource im, int x, int y, int col)", "Flood fill"],
    imagefilledarc: ["bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)", "Draw a filled partial ellipse"],
    imagefilledellipse: ["bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)", "Draw an ellipse"],
    imagefilledpolygon: ["bool imagefilledpolygon(resource im, array point, int num_points, int col)", "Draw a filled polygon"],
    imagefilledrectangle: ["bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a filled rectangle"],
    imagefilltoborder: ["bool imagefilltoborder(resource im, int x, int y, int border, int col)", "Flood fill to specific color"],
    imagefilter: ["bool imagefilter(resource src_im, int filtertype, [args] )", "Applies Filter an image using a custom angle"],
    imagefontheight: ["int imagefontheight(int font)", "Get font height"],
    imagefontwidth: ["int imagefontwidth(int font)", "Get font width"],
    imageftbbox: ["array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])", "Give the bounding box of a text using fonts via freetype2"],
    imagefttext: ["array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])", "Write text to the image using fonts via freetype2"],
    imagegammacorrect: ["bool imagegammacorrect(resource im, float inputgamma, float outputgamma)", "Apply a gamma correction to a GD image"],
    imagegd: ["bool imagegd(resource im [, string filename])", "Output GD image to browser or file"],
    imagegd2: ["bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])", "Output GD2 image to browser or file"],
    imagegif: ["bool imagegif(resource im [, string filename])", "Output GIF image to browser or file"],
    imagegrabscreen: ["resource imagegrabscreen()", "Grab a screenshot"],
    imagegrabwindow: ["resource imagegrabwindow(int window_handle [, int client_area])", "Grab a window or its client area using a windows handle (HWND property in COM instance)"],
    imageinterlace: ["int imageinterlace(resource im [, int interlace])", "Enable or disable interlace"],
    imageistruecolor: ["bool imageistruecolor(resource im)", "return true if the image uses truecolor"],
    imagejpeg: ["bool imagejpeg(resource im [, string filename [, int quality]])", "Output JPEG image to browser or file"],
    imagelayereffect: ["bool imagelayereffect(resource im, int effect)", "Set the alpha blending flag to use the bundled libgd layering effects"],
    imageline: ["bool imageline(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a line"],
    imageloadfont: ["int imageloadfont(string filename)", "Load a new font"],
    imagepalettecopy: ["void imagepalettecopy(resource dst, resource src)", "Copy the palette from the src image onto the dst image"],
    imagepng: ["bool imagepng(resource im [, string filename])", "Output PNG image to browser or file"],
    imagepolygon: ["bool imagepolygon(resource im, array point, int num_points, int col)", "Draw a polygon"],
    imagepsbbox: ["array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])", "Return the bounding box needed by a string if rasterized"],
    imagepscopyfont: ["int imagepscopyfont(int font_index)", "Make a copy of a font for purposes like extending or reenconding"],
    imagepsencodefont: ["bool imagepsencodefont(resource font_index, string filename)", "To change a fonts character encoding vector"],
    imagepsextendfont: ["bool imagepsextendfont(resource font_index, float extend)", "Extend or or condense (if extend < 1) a font"],
    imagepsfreefont: ["bool imagepsfreefont(resource font_index)", "Free memory used by a font"],
    imagepsloadfont: ["resource imagepsloadfont(string pathname)", "Load a new font from specified file"],
    imagepsslantfont: ["bool imagepsslantfont(resource font_index, float slant)", "Slant a font"],
    imagepstext: ["array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])", "Rasterize a string over an image"],
    imagerectangle: ["bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)", "Draw a rectangle"],
    imagerotate: ["resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])", "Rotate an image using a custom angle"],
    imagesavealpha: ["bool imagesavealpha(resource im, bool on)", "Include alpha channel to a saved image"],
    imagesetbrush: ["bool imagesetbrush(resource image, resource brush)", 'Set the brush image to $brush when filling $image with the "IMG_COLOR_BRUSHED" color'],
    imagesetpixel: ["bool imagesetpixel(resource im, int x, int y, int col)", "Set a single pixel"],
    imagesetstyle: ["bool imagesetstyle(resource im, array styles)", "Set the line drawing styles for use with imageline and IMG_COLOR_STYLED."],
    imagesetthickness: ["bool imagesetthickness(resource im, int thickness)", "Set line thickness for drawing lines, ellipses, rectangles, polygons etc."],
    imagesettile: ["bool imagesettile(resource image, resource tile)", 'Set the tile image to $tile when filling $image with the "IMG_COLOR_TILED" color'],
    imagestring: ["bool imagestring(resource im, int font, int x, int y, string str, int col)", "Draw a string horizontally"],
    imagestringup: ["bool imagestringup(resource im, int font, int x, int y, string str, int col)", "Draw a string vertically - rotated 90 degrees counter-clockwise"],
    imagesx: ["int imagesx(resource im)", "Get image width"],
    imagesy: ["int imagesy(resource im)", "Get image height"],
    imagetruecolortopalette: ["void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)", "Convert a true colour image to a palette based image with a number of colours, optionally using dithering."],
    imagettfbbox: ["array imagettfbbox(float size, float angle, string font_file, string text)", "Give the bounding box of a text using TrueType fonts"],
    imagettftext: ["array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)", "Write text to the image using a TrueType font"],
    imagetypes: ["int imagetypes(void)", "Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM"],
    imagewbmp: ["bool imagewbmp(resource im [, string filename, [, int foreground]])", "Output WBMP image to browser or file"],
    imagexbm: ["int imagexbm(int im, string filename [, int foreground])", "Output XBM image to browser or file"],
    imap_8bit: ["string imap_8bit(string text)", "Convert an 8-bit string to a quoted-printable string"],
    imap_alerts: ["array imap_alerts(void)", "Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called."],
    imap_append: ["bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])", "Append a new message to a specified mailbox"],
    imap_base64: ["string imap_base64(string text)", "Decode BASE64 encoded text"],
    imap_binary: ["string imap_binary(string text)", "Convert an 8bit string to a base64 string"],
    imap_body: ["string imap_body(resource stream_id, int msg_no [, int options])", "Read the message body"],
    imap_bodystruct: ["object imap_bodystruct(resource stream_id, int msg_no, string section)", "Read the structure of a specified body section of a specific message"],
    imap_check: ["object imap_check(resource stream_id)", "Get mailbox properties"],
    imap_clearflag_full: ["bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])", "Clears flags on messages"],
    imap_close: ["bool imap_close(resource stream_id [, int options])", "Close an IMAP stream"],
    imap_createmailbox: ["bool imap_createmailbox(resource stream_id, string mailbox)", "Create a new mailbox"],
    imap_delete: ["bool imap_delete(resource stream_id, int msg_no [, int options])", "Mark a message for deletion"],
    imap_deletemailbox: ["bool imap_deletemailbox(resource stream_id, string mailbox)", "Delete a mailbox"],
    imap_errors: ["array imap_errors(void)", "Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called."],
    imap_expunge: ["bool imap_expunge(resource stream_id)", "Permanently delete all messages marked for deletion"],
    imap_fetch_overview: ["array imap_fetch_overview(resource stream_id, string sequence [, int options])", "Read an overview of the information in the headers of the given message sequence"],
    imap_fetchbody: ["string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])", "Get a specific body section"],
    imap_fetchheader: ["string imap_fetchheader(resource stream_id, int msg_no [, int options])", "Get the full unfiltered header for a message"],
    imap_fetchstructure: ["object imap_fetchstructure(resource stream_id, int msg_no [, int options])", "Read the full structure of a message"],
    imap_gc: ["bool imap_gc(resource stream_id, int flags)", "This function garbage collects (purges) the cache of entries of a specific type."],
    imap_get_quota: ["array imap_get_quota(resource stream_id, string qroot)", "Returns the quota set to the mailbox account qroot"],
    imap_get_quotaroot: ["array imap_get_quotaroot(resource stream_id, string mbox)", "Returns the quota set to the mailbox account mbox"],
    imap_getacl: ["array imap_getacl(resource stream_id, string mailbox)", "Gets the ACL for a given mailbox"],
    imap_getmailboxes: ["array imap_getmailboxes(resource stream_id, string ref, string pattern)", "Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter"],
    imap_getsubscribed: ["array imap_getsubscribed(resource stream_id, string ref, string pattern)", "Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()"],
    imap_headerinfo: ["object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])", "Read the headers of the message"],
    imap_headers: ["array imap_headers(resource stream_id)", "Returns headers for all messages in a mailbox"],
    imap_last_error: ["string imap_last_error(void)", "Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call."],
    imap_list: ["array imap_list(resource stream_id, string ref, string pattern)", "Read the list of mailboxes"],
    imap_listscan: ["array imap_listscan(resource stream_id, string ref, string pattern, string content)", "Read list of mailboxes containing a certain string"],
    imap_lsub: ["array imap_lsub(resource stream_id, string ref, string pattern)", "Return a list of subscribed mailboxes"],
    imap_mail: ["bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])", "Send an email message"],
    imap_mail_compose: ["string imap_mail_compose(array envelope, array body)", "Create a MIME message based on given envelope and body sections"],
    imap_mail_copy: ["bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])", "Copy specified message to a mailbox"],
    imap_mail_move: ["bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])", "Move specified message to a mailbox"],
    imap_mailboxmsginfo: ["object imap_mailboxmsginfo(resource stream_id)", "Returns info about the current mailbox"],
    imap_mime_header_decode: ["array imap_mime_header_decode(string str)", "Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'"],
    imap_msgno: ["int imap_msgno(resource stream_id, int unique_msg_id)", "Get the sequence number associated with a UID"],
    imap_mutf7_to_utf8: ["string imap_mutf7_to_utf8(string in)", "Decode a modified UTF-7 string to UTF-8"],
    imap_num_msg: ["int imap_num_msg(resource stream_id)", "Gives the number of messages in the current mailbox"],
    imap_num_recent: ["int imap_num_recent(resource stream_id)", "Gives the number of recent messages in current mailbox"],
    imap_open: ["resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])", "Open an IMAP stream to a mailbox"],
    imap_ping: ["bool imap_ping(resource stream_id)", "Check if the IMAP stream is still active"],
    imap_qprint: ["string imap_qprint(string text)", "Convert a quoted-printable string to an 8-bit string"],
    imap_renamemailbox: ["bool imap_renamemailbox(resource stream_id, string old_name, string new_name)", "Rename a mailbox"],
    imap_reopen: ["bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])", "Reopen an IMAP stream to a new mailbox"],
    imap_rfc822_parse_adrlist: ["array imap_rfc822_parse_adrlist(string address_string, string default_host)", "Parses an address string"],
    imap_rfc822_parse_headers: ["object imap_rfc822_parse_headers(string headers [, string default_host])", "Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()"],
    imap_rfc822_write_address: ["string imap_rfc822_write_address(string mailbox, string host, string personal)", "Returns a properly formatted email address given the mailbox, host, and personal info"],
    imap_savebody: ['bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = ""[, int options = 0]])', "Save a specific body section to a file"],
    imap_search: ["array imap_search(resource stream_id, string criteria [, int options [, string charset]])", "Return a list of messages matching the given criteria"],
    imap_set_quota: ["bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)", "Will set the quota for qroot mailbox"],
    imap_setacl: ["bool imap_setacl(resource stream_id, string mailbox, string id, string rights)", "Sets the ACL for a given mailbox"],
    imap_setflag_full: ["bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])", "Sets flags on messages"],
    imap_sort: ["array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])", "Sort an array of message headers, optionally including only messages that meet specified criteria."],
    imap_status: ["object imap_status(resource stream_id, string mailbox, int options)", "Get status info from a mailbox"],
    imap_subscribe: ["bool imap_subscribe(resource stream_id, string mailbox)", "Subscribe to a mailbox"],
    imap_thread: ["array imap_thread(resource stream_id [, int options])", "Return threaded by REFERENCES tree"],
    imap_timeout: ["mixed imap_timeout(int timeout_type [, int timeout])", "Set or fetch imap timeout"],
    imap_uid: ["int imap_uid(resource stream_id, int msg_no)", "Get the unique message id associated with a standard sequential message number"],
    imap_undelete: ["bool imap_undelete(resource stream_id, int msg_no [, int flags])", "Remove the delete flag from a message"],
    imap_unsubscribe: ["bool imap_unsubscribe(resource stream_id, string mailbox)", "Unsubscribe from a mailbox"],
    imap_utf7_decode: ["string imap_utf7_decode(string buf)", "Decode a modified UTF-7 string"],
    imap_utf7_encode: ["string imap_utf7_encode(string buf)", "Encode a string in modified UTF-7"],
    imap_utf8: ["string imap_utf8(string mime_encoded_text)", "Convert a mime-encoded text to UTF-8"],
    imap_utf8_to_mutf7: ["string imap_utf8_to_mutf7(string in)", "Encode a UTF-8 string to modified UTF-7"],
    implode: ["string implode([string glue,] array pieces)", "Joins array elements placing glue string between items and return one string"],
    import_request_variables: ["bool import_request_variables(string types [, string prefix])", "Import GET/POST/Cookie variables into the global scope"],
    in_array: ["bool in_array(mixed needle, array haystack [, bool strict])", "Checks if the given value exists in the array"],
    include: ["bool include(string path)", "Includes and evaluates the specified file"],
    include_once: ["bool include_once(string path)", "Includes and evaluates the specified file"],
    inet_ntop: ["string inet_ntop(string in_addr)", "Converts a packed inet address to a human readable IP address string"],
    inet_pton: ["string inet_pton(string ip_address)", "Converts a human readable IP address to a packed binary string"],
    ini_get: ["string ini_get(string varname)", "Get a configuration option"],
    ini_get_all: ["array ini_get_all([string extension[, bool details = true]])", "Get all configuration options"],
    ini_restore: ["void ini_restore(string varname)", "Restore the value of a configuration option specified by varname"],
    ini_set: ["string ini_set(string varname, string newvalue)", "Set a configuration option, returns false on error and the old value of the configuration option on success"],
    interface_exists: ["bool interface_exists(string classname [, bool autoload])", "Checks if the class exists"],
    intl_error_name: ["string intl_error_name()", "* Return a string for a given error code.  * The string will be the same as the name of the error code constant."],
    intl_get_error_code: ["int intl_get_error_code()", "* Get code of the last occured error."],
    intl_get_error_message: ["string intl_get_error_message()", "* Get text description of the last occured error."],
    intl_is_failure: ["bool intl_is_failure()", "* Check whether the given error code indicates a failure.  * Returns true if it does, and false if the code  * indicates success or a warning."],
    intval: ["int intval(mixed var [, int base])", "Get the integer value of a variable using the optional base for the conversion"],
    ip2long: ["int ip2long(string ip_address)", "Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address"],
    iptcembed: ["array iptcembed(string iptcdata, string jpeg_file_name [, int spool])", "Embed binary IPTC data into a JPEG image."],
    iptcparse: ["array iptcparse(string iptcdata)", "Parse binary IPTC-data into associative array"],
    is_a: ["bool is_a(object object, string class_name)", "Returns true if the object is of this class or has this class as one of its parents"],
    is_array: ["bool is_array(mixed var)", "Returns true if variable is an array"],
    is_bool: ["bool is_bool(mixed var)", "Returns true if variable is a boolean"],
    is_callable: ["bool is_callable(mixed var [, bool syntax_only [, string callable_name]])", "Returns true if var is callable."],
    is_dir: ["bool is_dir(string filename)", "Returns true if file is directory"],
    is_executable: ["bool is_executable(string filename)", "Returns true if file is executable"],
    is_file: ["bool is_file(string filename)", "Returns true if file is a regular file"],
    is_finite: ["bool is_finite(float val)", "Returns whether argument is finite"],
    is_float: ["bool is_float(mixed var)", "Returns true if variable is float point"],
    is_infinite: ["bool is_infinite(float val)", "Returns whether argument is infinite"],
    is_link: ["bool is_link(string filename)", "Returns true if file is symbolic link"],
    is_long: ["bool is_long(mixed var)", "Returns true if variable is a long (integer)"],
    is_nan: ["bool is_nan(float val)", "Returns whether argument is not a number"],
    is_null: ["bool is_null(mixed var)", "Returns true if variable is null"],
    is_numeric: ["bool is_numeric(mixed value)", "Returns true if value is a number or a numeric string"],
    is_object: ["bool is_object(mixed var)", "Returns true if variable is an object"],
    is_readable: ["bool is_readable(string filename)", "Returns true if file can be read"],
    is_resource: ["bool is_resource(mixed var)", "Returns true if variable is a resource"],
    is_scalar: ["bool is_scalar(mixed value)", "Returns true if value is a scalar"],
    is_string: ["bool is_string(mixed var)", "Returns true if variable is a string"],
    is_subclass_of: ["bool is_subclass_of(object object, string class_name)", "Returns true if the object has this class as one of its parents"],
    is_uploaded_file: ["bool is_uploaded_file(string path)", "Check if file was created by rfc1867 upload"],
    is_writable: ["bool is_writable(string filename)", "Returns true if file can be written"],
    isset: ["bool isset(mixed var [, mixed var])", "Determine whether a variable is set"],
    iterator_apply: ["int iterator_apply(Traversable it, mixed function [, mixed params])", "Calls a function for every element in an iterator"],
    iterator_count: ["int iterator_count(Traversable it)", "Count the elements in an iterator"],
    iterator_to_array: ["array iterator_to_array(Traversable it [, bool use_keys = true])", "Copy the iterator into an array"],
    jddayofweek: ["mixed jddayofweek(int juliandaycount [, int mode])", "Returns name or number of day of week from julian day count"],
    jdmonthname: ["string jdmonthname(int juliandaycount, int mode)", "Returns name of month for julian day count"],
    jdtofrench: ["string jdtofrench(int juliandaycount)", "Converts a julian day count to a french republic calendar date"],
    jdtogregorian: ["string jdtogregorian(int juliandaycount)", "Converts a julian day count to a gregorian calendar date"],
    jdtojewish: ["string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])", "Converts a julian day count to a jewish calendar date"],
    jdtojulian: ["string jdtojulian(int juliandaycount)", "Convert a julian day count to a julian calendar date"],
    jdtounix: ["int jdtounix(int jday)", "Convert Julian Day to UNIX timestamp"],
    jewishtojd: ["int jewishtojd(int month, int day, int year)", "Converts a jewish calendar date to a julian day count"],
    join: ["string join(array src, string glue)", "An alias for implode"],
    jpeg2wbmp: ["bool jpeg2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)", "Convert JPEG image to WBMP image"],
    json_decode: ["mixed json_decode(string json [, bool assoc [, long depth]])", "Decodes the JSON representation into a PHP value"],
    json_encode: ["string json_encode(mixed data [, int options])", "Returns the JSON representation of a value"],
    json_last_error: ["int json_last_error()", "Returns the error code of the last json_decode()."],
    juliantojd: ["int juliantojd(int month, int day, int year)", "Converts a julian calendar date to julian day count"],
    key: ["mixed key(array array_arg)", "Return the key of the element currently pointed to by the internal array pointer"],
    krsort: ["bool krsort(array &array_arg [, int sort_flags])", "Sort an array by key value in reverse order"],
    ksort: ["bool ksort(array &array_arg [, int sort_flags])", "Sort an array by key"],
    lcfirst: ["string lcfirst(string str)", "Make a string's first character lowercase"],
    lcg_value: ["float lcg_value()", "Returns a value from the combined linear congruential generator"],
    lchgrp: ["bool lchgrp(string filename, mixed group)", "Change symlink group"],
    ldap_8859_to_t61: ["string ldap_8859_to_t61(string value)", "Translate 8859 characters to t61 characters"],
    ldap_add: ["bool ldap_add(resource link, string dn, array entry)", "Add entries to LDAP directory"],
    ldap_bind: ["bool ldap_bind(resource link [, string dn [, string password]])", "Bind to LDAP directory"],
    ldap_compare: ["bool ldap_compare(resource link, string dn, string attr, string value)", "Determine if an entry has a specific value for one of its attributes"],
    ldap_connect: ["resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])", "Connect to an LDAP server"],
    ldap_count_entries: ["int ldap_count_entries(resource link, resource result)", "Count the number of entries in a search result"],
    ldap_delete: ["bool ldap_delete(resource link, string dn)", "Delete an entry from a directory"],
    ldap_dn2ufn: ["string ldap_dn2ufn(string dn)", "Convert DN to User Friendly Naming format"],
    ldap_err2str: ["string ldap_err2str(int errno)", "Convert error number to error string"],
    ldap_errno: ["int ldap_errno(resource link)", "Get the current ldap error number"],
    ldap_error: ["string ldap_error(resource link)", "Get the current ldap error string"],
    ldap_explode_dn: ["array ldap_explode_dn(string dn, int with_attrib)", "Splits DN into its component parts"],
    ldap_first_attribute: ["string ldap_first_attribute(resource link, resource result_entry)", "Return first attribute"],
    ldap_first_entry: ["resource ldap_first_entry(resource link, resource result)", "Return first result id"],
    ldap_first_reference: ["resource ldap_first_reference(resource link, resource result)", "Return first reference"],
    ldap_free_result: ["bool ldap_free_result(resource result)", "Free result memory"],
    ldap_get_attributes: ["array ldap_get_attributes(resource link, resource result_entry)", "Get attributes from a search result entry"],
    ldap_get_dn: ["string ldap_get_dn(resource link, resource result_entry)", "Get the DN of a result entry"],
    ldap_get_entries: ["array ldap_get_entries(resource link, resource result)", "Get all result entries"],
    ldap_get_option: ["bool ldap_get_option(resource link, int option, mixed retval)", "Get the current value of various session-wide parameters"],
    ldap_get_values_len: ["array ldap_get_values_len(resource link, resource result_entry, string attribute)", "Get all values with lengths from a result entry"],
    ldap_list: ["resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", "Single-level search"],
    ldap_mod_add: ["bool ldap_mod_add(resource link, string dn, array entry)", "Add attribute values to current"],
    ldap_mod_del: ["bool ldap_mod_del(resource link, string dn, array entry)", "Delete attribute values"],
    ldap_mod_replace: ["bool ldap_mod_replace(resource link, string dn, array entry)", "Replace attribute values with new ones"],
    ldap_next_attribute: ["string ldap_next_attribute(resource link, resource result_entry)", "Get the next attribute in result"],
    ldap_next_entry: ["resource ldap_next_entry(resource link, resource result_entry)", "Get next result entry"],
    ldap_next_reference: ["resource ldap_next_reference(resource link, resource reference_entry)", "Get next reference"],
    ldap_parse_reference: ["bool ldap_parse_reference(resource link, resource reference_entry, array referrals)", "Extract information from reference entry"],
    ldap_parse_result: ["bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)", "Extract information from result"],
    ldap_read: ["resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", "Read an entry"],
    ldap_rename: ["bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn);", "Modify the name of an entry"],
    ldap_sasl_bind: ["bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])", "Bind to LDAP directory using SASL"],
    ldap_search: ["resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", "Search LDAP tree under base_dn"],
    ldap_set_option: ["bool ldap_set_option(resource link, int option, mixed newval)", "Set the value of various session-wide parameters"],
    ldap_set_rebind_proc: ["bool ldap_set_rebind_proc(resource link, string callback)", "Set a callback function to do re-binds on referral chasing."],
    ldap_sort: ["bool ldap_sort(resource link, resource result, string sortfilter)", "Sort LDAP result entries"],
    ldap_start_tls: ["bool ldap_start_tls(resource link)", "Start TLS"],
    ldap_t61_to_8859: ["string ldap_t61_to_8859(string value)", "Translate t61 characters to 8859 characters"],
    ldap_unbind: ["bool ldap_unbind(resource link)", "Unbind from LDAP directory"],
    leak: ["void leak(int num_bytes=3)", "Cause an intentional memory leak, for testing/debugging purposes"],
    levenshtein: ["int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])", "Calculate Levenshtein distance between two strings"],
    libxml_clear_errors: ["void libxml_clear_errors()", "Clear last error from libxml"],
    libxml_disable_entity_loader: ["bool libxml_disable_entity_loader([boolean disable])", "Disable/Enable ability to load external entities"],
    libxml_get_errors: ["object libxml_get_errors()", "Retrieve array of errors"],
    libxml_get_last_error: ["object libxml_get_last_error()", "Retrieve last error from libxml"],
    libxml_set_streams_context: ["void libxml_set_streams_context(resource streams_context)", "Set the streams context for the next libxml document load or write"],
    libxml_use_internal_errors: ["bool libxml_use_internal_errors([boolean use_errors])", "Disable libxml errors and allow user to fetch error information as needed"],
    link: ["int link(string target, string link)", "Create a hard link"],
    linkinfo: ["int linkinfo(string filename)", "Returns the st_dev field of the UNIX C stat structure describing the link"],
    litespeed_request_headers: ["array litespeed_request_headers(void)", "Fetch all HTTP request headers"],
    litespeed_response_headers: ["array litespeed_response_headers(void)", "Fetch all HTTP response headers"],
    locale_accept_from_http: ["string locale_accept_from_http(string $http_accept)", null],
    locale_canonicalize: ["static string locale_canonicalize(Locale $loc, string $locale)", "* @param string $locale The locale string to canonicalize"],
    locale_filter_matches: ["boolean locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])", "* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm"],
    locale_get_all_variants: ["static array locale_get_all_variants($locale)", "* gets an array containing the list of variants, or null"],
    locale_get_default: ["static string locale_get_default( )", "Get default locale"],
    locale_get_keywords: ["static array locale_get_keywords(string $locale) {", "* return an associative array containing keyword-value  * pairs for this locale. The keys are keys to the array (doh!)"],
    locale_get_primary_language: ["static string locale_get_primary_language($locale)", "* gets the primary language for the $locale"],
    locale_get_region: ["static string locale_get_region($locale)", "* gets the region for the $locale"],
    locale_get_script: ["static string locale_get_script($locale)", "* gets the script for the $locale"],
    locale_lookup: ["string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])", "* Searchs the items in $langtag for the best match to the language * range"],
    locale_set_default: ["static string locale_set_default( string $locale )", "Set default locale"],
    localeconv: ["array localeconv(void)", "Returns numeric formatting information based on the current locale"],
    localtime: ["array localtime([int timestamp [, bool associative_array]])", "Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array"],
    log: ["float log(float number, [float base])", "Returns the natural logarithm of the number, or the base log if base is specified"],
    log10: ["float log10(float number)", "Returns the base-10 logarithm of the number"],
    log1p: ["float log1p(float number)", "Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero"],
    long2ip: ["string long2ip(int proper_address)", "Converts an (IPv4) Internet network address into a string in Internet standard dotted format"],
    lstat: ["array lstat(string filename)", "Give information about a file or symbolic link"],
    ltrim: ["string ltrim(string str [, string character_mask])", "Strips whitespace from the beginning of a string"],
    mail: ["int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", "Send an email message"],
    max: ["mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])", "Return the highest value in an array or a series of arguments"],
    mb_check_encoding: ["bool mb_check_encoding([string var[, string encoding]])", "Check if the string is valid for the specified encoding"],
    mb_convert_case: ["string mb_convert_case(string sourcestring, int mode [, string encoding])", "Returns a case-folded version of sourcestring"],
    mb_convert_encoding: ["string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])", "Returns converted string in desired encoding"],
    mb_convert_kana: ["string mb_convert_kana(string str [, string option] [, string encoding])", "Conversion between full-width character and half-width character (Japanese)"],
    mb_convert_variables: ["string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])", "Converts the string resource in variables to desired encoding"],
    mb_decode_mimeheader: ["string mb_decode_mimeheader(string string)", 'Decodes the MIME "encoded-word" in the string'],
    mb_decode_numericentity: ["string mb_decode_numericentity(string string, array convmap [, string encoding])", "Converts HTML numeric entities to character code"],
    mb_detect_encoding: ["string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])", "Encodings of the given string is returned (as a string)"],
    mb_detect_order: ["bool|array mb_detect_order([mixed encoding-list])", "Sets the current detect_order or Return the current detect_order as a array"],
    mb_encode_mimeheader: ["string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])", 'Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?='],
    mb_encode_numericentity: ["string mb_encode_numericentity(string string, array convmap [, string encoding])", "Converts specified characters to HTML numeric entities"],
    mb_encoding_aliases: ["array mb_encoding_aliases(string encoding)", "Returns an array of the aliases of a given encoding name"],
    mb_ereg: ["int mb_ereg(string pattern, string string [, array registers])", "Regular expression match for multibyte string"],
    mb_ereg_match: ["bool mb_ereg_match(string pattern, string string [,string option])", "Regular expression match for multibyte string"],
    mb_ereg_replace: ["string mb_ereg_replace(string pattern, string replacement, string string [, string option])", "Replace regular expression for multibyte string"],
    mb_ereg_search: ["bool mb_ereg_search([string pattern[, string option]])", "Regular expression search for multibyte string"],
    mb_ereg_search_getpos: ["int mb_ereg_search_getpos(void)", "Get search start position"],
    mb_ereg_search_getregs: ["array mb_ereg_search_getregs(void)", "Get matched substring of the last time"],
    mb_ereg_search_init: ["bool mb_ereg_search_init(string string [, string pattern[, string option]])", "Initialize string and regular expression for search."],
    mb_ereg_search_pos: ["array mb_ereg_search_pos([string pattern[, string option]])", "Regular expression search for multibyte string"],
    mb_ereg_search_regs: ["array mb_ereg_search_regs([string pattern[, string option]])", "Regular expression search for multibyte string"],
    mb_ereg_search_setpos: ["bool mb_ereg_search_setpos(int position)", "Set search start position"],
    mb_eregi: ["int mb_eregi(string pattern, string string [, array registers])", "Case-insensitive regular expression match for multibyte string"],
    mb_eregi_replace: ["string mb_eregi_replace(string pattern, string replacement, string string)", "Case insensitive replace regular expression for multibyte string"],
    mb_get_info: ["mixed mb_get_info([string type])", "Returns the current settings of mbstring"],
    mb_http_input: ["mixed mb_http_input([string type])", "Returns the input encoding"],
    mb_http_output: ["string mb_http_output([string encoding])", "Sets the current output_encoding or returns the current output_encoding as a string"],
    mb_internal_encoding: ["string mb_internal_encoding([string encoding])", "Sets the current internal encoding or Returns the current internal encoding as a string"],
    mb_language: ["string mb_language([string language])", "Sets the current language or Returns the current language as a string"],
    mb_list_encodings: ["mixed mb_list_encodings()", "Returns an array of all supported entity encodings"],
    mb_output_handler: ["string mb_output_handler(string contents, int status)", "Returns string in output buffer converted to the http_output encoding"],
    mb_parse_str: ["bool mb_parse_str(string encoded_string [, array result])", "Parses GET/POST/COOKIE data and sets global variables"],
    mb_preferred_mime_name: ["string mb_preferred_mime_name(string encoding)", "Return the preferred MIME name (charset) as a string"],
    mb_regex_encoding: ["string mb_regex_encoding([string encoding])", "Returns the current encoding for regex as a string."],
    mb_regex_set_options: ["string mb_regex_set_options([string options])", "Set or get the default options for mbregex functions"],
    mb_send_mail: ["int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", "*  Sends an email message with MIME scheme"],
    mb_split: ["array mb_split(string pattern, string string [, int limit])", "split multibyte string into array by regular expression"],
    mb_strcut: ["string mb_strcut(string str, int start [, int length [, string encoding]])", "Returns part of a string"],
    mb_strimwidth: ["string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])", "Trim the string in terminal width"],
    mb_stripos: ["int mb_stripos(string haystack, string needle [, int offset [, string encoding]])", "Finds position of first occurrence of a string within another, case insensitive"],
    mb_stristr: ["string mb_stristr(string haystack, string needle[, bool part[, string encoding]])", "Finds first occurrence of a string within another, case insensitive"],
    mb_strlen: ["int mb_strlen(string str [, string encoding])", "Get character numbers of a string"],
    mb_strpos: ["int mb_strpos(string haystack, string needle [, int offset [, string encoding]])", "Find position of first occurrence of a string within another"],
    mb_strrchr: ["string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])", "Finds the last occurrence of a character in a string within another"],
    mb_strrichr: ["string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])", "Finds the last occurrence of a character in a string within another, case insensitive"],
    mb_strripos: ["int mb_strripos(string haystack, string needle [, int offset [, string encoding]])", "Finds position of last occurrence of a string within another, case insensitive"],
    mb_strrpos: ["int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])", "Find position of last occurrence of a string within another"],
    mb_strstr: ["string mb_strstr(string haystack, string needle[, bool part[, string encoding]])", "Finds first occurrence of a string within another"],
    mb_strtolower: ["string mb_strtolower(string sourcestring [, string encoding])", "*  Returns a lowercased version of sourcestring"],
    mb_strtoupper: ["string mb_strtoupper(string sourcestring [, string encoding])", "*  Returns a uppercased version of sourcestring"],
    mb_strwidth: ["int mb_strwidth(string str [, string encoding])", "Gets terminal width of a string"],
    mb_substitute_character: ["mixed mb_substitute_character([mixed substchar])", "Sets the current substitute_character or returns the current substitute_character"],
    mb_substr: ["string mb_substr(string str, int start [, int length [, string encoding]])", "Returns part of a string"],
    mb_substr_count: ["int mb_substr_count(string haystack, string needle [, string encoding])", "Count the number of substring occurrences"],
    mcrypt_cbc: ["string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)", "CBC crypt/decrypt data using key key with cipher cipher starting with iv"],
    mcrypt_cfb: ["string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)", "CFB crypt/decrypt data using key key with cipher cipher starting with iv"],
    mcrypt_create_iv: ["string mcrypt_create_iv(int size, int source)", "Create an initialization vector (IV)"],
    mcrypt_decrypt: ["string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)", "OFB crypt/decrypt data using key key with cipher cipher starting with iv"],
    mcrypt_ecb: ["string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)", "ECB crypt/decrypt data using key key with cipher cipher starting with iv"],
    mcrypt_enc_get_algorithms_name: ["string mcrypt_enc_get_algorithms_name(resource td)", "Returns the name of the algorithm specified by the descriptor td"],
    mcrypt_enc_get_block_size: ["int mcrypt_enc_get_block_size(resource td)", "Returns the block size of the cipher specified by the descriptor td"],
    mcrypt_enc_get_iv_size: ["int mcrypt_enc_get_iv_size(resource td)", "Returns the size of the IV in bytes of the algorithm specified by the descriptor td"],
    mcrypt_enc_get_key_size: ["int mcrypt_enc_get_key_size(resource td)", "Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td"],
    mcrypt_enc_get_modes_name: ["string mcrypt_enc_get_modes_name(resource td)", "Returns the name of the mode specified by the descriptor td"],
    mcrypt_enc_get_supported_key_sizes: ["array mcrypt_enc_get_supported_key_sizes(resource td)", "This function decrypts the crypttext"],
    mcrypt_enc_is_block_algorithm: ["bool mcrypt_enc_is_block_algorithm(resource td)", "Returns TRUE if the alrogithm is a block algorithms"],
    mcrypt_enc_is_block_algorithm_mode: ["bool mcrypt_enc_is_block_algorithm_mode(resource td)", "Returns TRUE if the mode is for use with block algorithms"],
    mcrypt_enc_is_block_mode: ["bool mcrypt_enc_is_block_mode(resource td)", "Returns TRUE if the mode outputs blocks"],
    mcrypt_enc_self_test: ["int mcrypt_enc_self_test(resource td)", "This function runs the self test on the algorithm specified by the descriptor td"],
    mcrypt_encrypt: ["string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)", "OFB crypt/decrypt data using key key with cipher cipher starting with iv"],
    mcrypt_generic: ["string mcrypt_generic(resource td, string data)", "This function encrypts the plaintext"],
    mcrypt_generic_deinit: ["bool mcrypt_generic_deinit(resource td)", "This function terminates encrypt specified by the descriptor td"],
    mcrypt_generic_init: ["int mcrypt_generic_init(resource td, string key, string iv)", "This function initializes all buffers for the specific module"],
    mcrypt_get_block_size: ["int mcrypt_get_block_size(string cipher, string module)", "Get the key size of cipher"],
    mcrypt_get_cipher_name: ["string mcrypt_get_cipher_name(string cipher)", "Get the key size of cipher"],
    mcrypt_get_iv_size: ["int mcrypt_get_iv_size(string cipher, string module)", "Get the IV size of cipher (Usually the same as the blocksize)"],
    mcrypt_get_key_size: ["int mcrypt_get_key_size(string cipher, string module)", "Get the key size of cipher"],
    mcrypt_list_algorithms: ["array mcrypt_list_algorithms([string lib_dir])", 'List all algorithms in "module_dir"'],
    mcrypt_list_modes: ["array mcrypt_list_modes([string lib_dir])", 'List all modes "module_dir"'],
    mcrypt_module_close: ["bool mcrypt_module_close(resource td)", "Free the descriptor td"],
    mcrypt_module_get_algo_block_size: ["int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])", "Returns the block size of the algorithm"],
    mcrypt_module_get_algo_key_size: ["int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])", "Returns the maximum supported key size of the algorithm"],
    mcrypt_module_get_supported_key_sizes: ["array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])", "This function decrypts the crypttext"],
    mcrypt_module_is_block_algorithm: ["bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])", "Returns TRUE if the algorithm is a block algorithm"],
    mcrypt_module_is_block_algorithm_mode: ["bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])", "Returns TRUE if the mode is for use with block algorithms"],
    mcrypt_module_is_block_mode: ["bool mcrypt_module_is_block_mode(string mode [, string lib_dir])", "Returns TRUE if the mode outputs blocks of bytes"],
    mcrypt_module_open: ["resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)", "Opens the module of the algorithm and the mode to be used"],
    mcrypt_module_self_test: ["bool mcrypt_module_self_test(string algorithm [, string lib_dir])", 'Does a self test of the module "module"'],
    mcrypt_ofb: ["string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)", "OFB crypt/decrypt data using key key with cipher cipher starting with iv"],
    md5: ["string md5(string str, [ bool raw_output])", "Calculate the md5 hash of a string"],
    md5_file: ["string md5_file(string filename [, bool raw_output])", "Calculate the md5 hash of given filename"],
    mdecrypt_generic: ["string mdecrypt_generic(resource td, string data)", "This function decrypts the plaintext"],
    memory_get_peak_usage: ["int memory_get_peak_usage([real_usage])", "Returns the peak allocated by PHP memory"],
    memory_get_usage: ["int memory_get_usage([real_usage])", "Returns the allocated by PHP memory"],
    metaphone: ["string metaphone(string text[, int phones])", "Break english phrases down into their phonemes"],
    method_exists: ["bool method_exists(object object, string method)", "Checks if the class method exists"],
    mhash: ["string mhash(int hash, string data [, string key])", "Hash data with hash"],
    mhash_count: ["int mhash_count(void)", "Gets the number of available hashes"],
    mhash_get_block_size: ["int mhash_get_block_size(int hash)", "Gets the block size of hash"],
    mhash_get_hash_name: ["string mhash_get_hash_name(int hash)", "Gets the name of hash"],
    mhash_keygen_s2k: ["string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)", "Generates a key using hash functions"],
    microtime: ["mixed microtime([bool get_as_float])", "Returns either a string or a float containing the current time in seconds and microseconds"],
    mime_content_type: ["string mime_content_type(string filename|resource stream)", "Return content-type for file"],
    min: ["mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])", "Return the lowest value in an array or a series of arguments"],
    mkdir: ["bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])", "Create a directory"],
    mktime: ["int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", "Get UNIX timestamp for a date"],
    money_format: ["string money_format(string format , float value)", "Convert monetary value(s) to string"],
    move_uploaded_file: ["bool move_uploaded_file(string path, string new_path)", "Move a file if and only if it was created by an upload"],
    msg_get_queue: ["resource msg_get_queue(int key [, int perms])", "Attach to a message queue"],
    msg_queue_exists: ["bool msg_queue_exists(int key)", "Check whether a message queue exists"],
    msg_receive: ["mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])", "Send a message of type msgtype (must be > 0) to a message queue"],
    msg_remove_queue: ["bool msg_remove_queue(resource queue)", "Destroy the queue"],
    msg_send: ["bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])", "Send a message of type msgtype (must be > 0) to a message queue"],
    msg_set_queue: ["bool msg_set_queue(resource queue, array data)", "Set information for a message queue"],
    msg_stat_queue: ["array msg_stat_queue(resource queue)", "Returns information about a message queue"],
    msgfmt_create: ["MessageFormatter msgfmt_create( string $locale, string $pattern )", "* Create formatter."],
    msgfmt_format: ["mixed msgfmt_format( MessageFormatter $nf, array $args )", "* Format a message."],
    msgfmt_format_message: ["mixed msgfmt_format_message( string $locale, string $pattern, array $args )", "* Format a message."],
    msgfmt_get_error_code: ["int msgfmt_get_error_code( MessageFormatter $nf )", "* Get formatter's last error code."],
    msgfmt_get_error_message: ["string msgfmt_get_error_message( MessageFormatter $coll )", "* Get text description for formatter's last error code."],
    msgfmt_get_locale: ["string msgfmt_get_locale(MessageFormatter $mf)", "* Get formatter locale."],
    msgfmt_get_pattern: ["string msgfmt_get_pattern( MessageFormatter $mf )", "* Get formatter pattern."],
    msgfmt_parse: ["array msgfmt_parse( MessageFormatter $nf, string $source )", "* Parse a message."],
    msgfmt_set_pattern: ["bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )", "* Set formatter pattern."],
    mssql_bind: ["bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])", "Adds a parameter to a stored procedure or a remote stored procedure"],
    mssql_close: ["bool mssql_close([resource conn_id])", "Closes a connection to a MS-SQL server"],
    mssql_connect: ["int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])", "Establishes a connection to a MS-SQL server"],
    mssql_data_seek: ["bool mssql_data_seek(resource result_id, int offset)", "Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number"],
    mssql_execute: ["mixed mssql_execute(resource stmt [, bool skip_results = false])", "Executes a stored procedure on a MS-SQL server database"],
    mssql_fetch_array: ["array mssql_fetch_array(resource result_id [, int result_type])", "Returns an associative array of the current row in the result set specified by result_id"],
    mssql_fetch_assoc: ["array mssql_fetch_assoc(resource result_id)", "Returns an associative array of the current row in the result set specified by result_id"],
    mssql_fetch_batch: ["int mssql_fetch_batch(resource result_index)", "Returns the next batch of records"],
    mssql_fetch_field: ["object mssql_fetch_field(resource result_id [, int offset])", "Gets information about certain fields in a query result"],
    mssql_fetch_object: ["object mssql_fetch_object(resource result_id)", "Returns a pseudo-object of the current row in the result set specified by result_id"],
    mssql_fetch_row: ["array mssql_fetch_row(resource result_id)", "Returns an array of the current row in the result set specified by result_id"],
    mssql_field_length: ["int mssql_field_length(resource result_id [, int offset])", "Get the length of a MS-SQL field"],
    mssql_field_name: ["string mssql_field_name(resource result_id [, int offset])", "Returns the name of the field given by offset in the result set given by result_id"],
    mssql_field_seek: ["bool mssql_field_seek(resource result_id, int offset)", "Seeks to the specified field offset"],
    mssql_field_type: ["string mssql_field_type(resource result_id [, int offset])", "Returns the type of a field"],
    mssql_free_result: ["bool mssql_free_result(resource result_index)", "Free a MS-SQL result index"],
    mssql_free_statement: ["bool mssql_free_statement(resource result_index)", "Free a MS-SQL statement index"],
    mssql_get_last_message: ["string mssql_get_last_message(void)", "Gets the last message from the MS-SQL server"],
    mssql_guid_string: ["string mssql_guid_string(string binary [,bool short_format])", "Converts a 16 byte binary GUID to a string"],
    mssql_init: ["int mssql_init(string sp_name [, resource conn_id])", "Initializes a stored procedure or a remote stored procedure"],
    mssql_min_error_severity: ["void mssql_min_error_severity(int severity)", "Sets the lower error severity"],
    mssql_min_message_severity: ["void mssql_min_message_severity(int severity)", "Sets the lower message severity"],
    mssql_next_result: ["bool mssql_next_result(resource result_id)", "Move the internal result pointer to the next result"],
    mssql_num_fields: ["int mssql_num_fields(resource mssql_result_index)", "Returns the number of fields fetched in from the result id specified"],
    mssql_num_rows: ["int mssql_num_rows(resource mssql_result_index)", "Returns the number of rows fetched in from the result id specified"],
    mssql_pconnect: ["int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])", "Establishes a persistent connection to a MS-SQL server"],
    mssql_query: ["resource mssql_query(string query [, resource conn_id [, int batch_size]])", "Perform an SQL query on a MS-SQL server database"],
    mssql_result: ["string mssql_result(resource result_id, int row, mixed field)", "Returns the contents of one cell from a MS-SQL result set"],
    mssql_rows_affected: ["int mssql_rows_affected(resource conn_id)", "Returns the number of records affected by the query"],
    mssql_select_db: ["bool mssql_select_db(string database_name [, resource conn_id])", "Select a MS-SQL database"],
    mt_getrandmax: ["int mt_getrandmax(void)", "Returns the maximum value a random number from Mersenne Twister can have"],
    mt_rand: ["int mt_rand([int min, int max])", "Returns a random number from Mersenne Twister"],
    mt_srand: ["void mt_srand([int seed])", "Seeds Mersenne Twister random number generator"],
    mysql_affected_rows: ["int mysql_affected_rows([int link_identifier])", "Gets number of affected rows in previous MySQL operation"],
    mysql_client_encoding: ["string mysql_client_encoding([int link_identifier])", "Returns the default character set for the current connection"],
    mysql_close: ["bool mysql_close([int link_identifier])", "Close a MySQL connection"],
    mysql_connect: ["resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])", "Opens a connection to a MySQL Server"],
    mysql_create_db: ["bool mysql_create_db(string database_name [, int link_identifier])", "Create a MySQL database"],
    mysql_data_seek: ["bool mysql_data_seek(resource result, int row_number)", "Move internal result pointer"],
    mysql_db_query: ["resource mysql_db_query(string database_name, string query [, int link_identifier])", "Sends an SQL query to MySQL"],
    mysql_drop_db: ["bool mysql_drop_db(string database_name [, int link_identifier])", "Drops (delete) a MySQL database"],
    mysql_errno: ["int mysql_errno([int link_identifier])", "Returns the number of the error message from previous MySQL operation"],
    mysql_error: ["string mysql_error([int link_identifier])", "Returns the text of the error message from previous MySQL operation"],
    mysql_escape_string: ["string mysql_escape_string(string to_be_escaped)", "Escape string for mysql query"],
    mysql_fetch_array: ["array mysql_fetch_array(resource result [, int result_type])", "Fetch a result row as an array (associative, numeric or both)"],
    mysql_fetch_assoc: ["array mysql_fetch_assoc(resource result)", "Fetch a result row as an associative array"],
    mysql_fetch_field: ["object mysql_fetch_field(resource result [, int field_offset])", "Gets column information from a result and return as an object"],
    mysql_fetch_lengths: ["array mysql_fetch_lengths(resource result)", "Gets max data size of each column in a result"],
    mysql_fetch_object: ["object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])", "Fetch a result row as an object"],
    mysql_fetch_row: ["array mysql_fetch_row(resource result)", "Gets a result row as an enumerated array"],
    mysql_field_flags: ["string mysql_field_flags(resource result, int field_offset)", "Gets the flags associated with the specified field in a result"],
    mysql_field_len: ["int mysql_field_len(resource result, int field_offset)", "Returns the length of the specified field"],
    mysql_field_name: ["string mysql_field_name(resource result, int field_index)", "Gets the name of the specified field in a result"],
    mysql_field_seek: ["bool mysql_field_seek(resource result, int field_offset)", "Sets result pointer to a specific field offset"],
    mysql_field_table: ["string mysql_field_table(resource result, int field_offset)", "Gets name of the table the specified field is in"],
    mysql_field_type: ["string mysql_field_type(resource result, int field_offset)", "Gets the type of the specified field in a result"],
    mysql_free_result: ["bool mysql_free_result(resource result)", "Free result memory"],
    mysql_get_client_info: ["string mysql_get_client_info(void)", "Returns a string that represents the client library version"],
    mysql_get_host_info: ["string mysql_get_host_info([int link_identifier])", "Returns a string describing the type of connection in use, including the server host name"],
    mysql_get_proto_info: ["int mysql_get_proto_info([int link_identifier])", "Returns the protocol version used by current connection"],
    mysql_get_server_info: ["string mysql_get_server_info([int link_identifier])", "Returns a string that represents the server version number"],
    mysql_info: ["string mysql_info([int link_identifier])", "Returns a string containing information about the most recent query"],
    mysql_insert_id: ["int mysql_insert_id([int link_identifier])", "Gets the ID generated from the previous INSERT operation"],
    mysql_list_dbs: ["resource mysql_list_dbs([int link_identifier])", "List databases available on a MySQL server"],
    mysql_list_fields: ["resource mysql_list_fields(string database_name, string table_name [, int link_identifier])", "List MySQL result fields"],
    mysql_list_processes: ["resource mysql_list_processes([int link_identifier])", "Returns a result set describing the current server threads"],
    mysql_list_tables: ["resource mysql_list_tables(string database_name [, int link_identifier])", "List tables in a MySQL database"],
    mysql_num_fields: ["int mysql_num_fields(resource result)", "Gets number of fields in a result"],
    mysql_num_rows: ["int mysql_num_rows(resource result)", "Gets number of rows in a result"],
    mysql_pconnect: ["resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])", "Opens a persistent connection to a MySQL Server"],
    mysql_ping: ["bool mysql_ping([int link_identifier])", "Ping a server connection. If no connection then reconnect."],
    mysql_query: ["resource mysql_query(string query [, int link_identifier])", "Sends an SQL query to MySQL"],
    mysql_real_escape_string: ["string mysql_real_escape_string(string to_be_escaped [, int link_identifier])", "Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection"],
    mysql_result: ["mixed mysql_result(resource result, int row [, mixed field])", "Gets result data"],
    mysql_select_db: ["bool mysql_select_db(string database_name [, int link_identifier])", "Selects a MySQL database"],
    mysql_set_charset: ["bool mysql_set_charset(string csname [, int link_identifier])", "sets client character set"],
    mysql_stat: ["string mysql_stat([int link_identifier])", "Returns a string containing status information"],
    mysql_thread_id: ["int mysql_thread_id([int link_identifier])", "Returns the thread id of current connection"],
    mysql_unbuffered_query: ["resource mysql_unbuffered_query(string query [, int link_identifier])", "Sends an SQL query to MySQL, without fetching and buffering the result rows"],
    mysqli_affected_rows: ["mixed mysqli_affected_rows(object link)", "Get number of affected rows in previous MySQL operation"],
    mysqli_autocommit: ["bool mysqli_autocommit(object link, bool mode)", "Turn auto commit on or of"],
    mysqli_cache_stats: ["array mysqli_cache_stats(void)", "Returns statistics about the zval cache"],
    mysqli_change_user: ["bool mysqli_change_user(object link, string user, string password, string database)", "Change logged-in user of the active connection"],
    mysqli_character_set_name: ["string mysqli_character_set_name(object link)", "Returns the name of the character set used for this connection"],
    mysqli_close: ["bool mysqli_close(object link)", "Close connection"],
    mysqli_commit: ["bool mysqli_commit(object link)", "Commit outstanding actions and close transaction"],
    mysqli_connect: ["object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])", "Open a connection to a mysql server"],
    mysqli_connect_errno: ["int mysqli_connect_errno(void)", "Returns the numerical value of the error message from last connect command"],
    mysqli_connect_error: ["string mysqli_connect_error(void)", "Returns the text of the error message from previous MySQL operation"],
    mysqli_data_seek: ["bool mysqli_data_seek(object result, int offset)", "Move internal result pointer"],
    mysqli_debug: ["void mysqli_debug(string debug)", ""],
    mysqli_dump_debug_info: ["bool mysqli_dump_debug_info(object link)", ""],
    mysqli_embedded_server_end: ["void mysqli_embedded_server_end(void)", ""],
    mysqli_embedded_server_start: ["bool mysqli_embedded_server_start(bool start, array arguments, array groups)", "initialize and start embedded server"],
    mysqli_errno: ["int mysqli_errno(object link)", "Returns the numerical value of the error message from previous MySQL operation"],
    mysqli_error: ["string mysqli_error(object link)", "Returns the text of the error message from previous MySQL operation"],
    mysqli_fetch_all: ["mixed mysqli_fetch_all (object result [,int resulttype])", "Fetches all result rows as an associative array, a numeric array, or both"],
    mysqli_fetch_array: ["mixed mysqli_fetch_array (object result [,int resulttype])", "Fetch a result row as an associative array, a numeric array, or both"],
    mysqli_fetch_assoc: ["mixed mysqli_fetch_assoc (object result)", "Fetch a result row as an associative array"],
    mysqli_fetch_field: ["mixed mysqli_fetch_field (object result)", "Get column information from a result and return as an object"],
    mysqli_fetch_field_direct: ["mixed mysqli_fetch_field_direct (object result, int offset)", "Fetch meta-data for a single field"],
    mysqli_fetch_fields: ["mixed mysqli_fetch_fields (object result)", "Return array of objects containing field meta-data"],
    mysqli_fetch_lengths: ["mixed mysqli_fetch_lengths (object result)", "Get the length of each output in a result"],
    mysqli_fetch_object: ["mixed mysqli_fetch_object (object result [, string class_name [, NULL|array ctor_params]])", "Fetch a result row as an object"],
    mysqli_fetch_row: ["array mysqli_fetch_row (object result)", "Get a result row as an enumerated array"],
    mysqli_field_count: ["int mysqli_field_count(object link)", "Fetch the number of fields returned by the last query for the given link"],
    mysqli_field_seek: ["int mysqli_field_seek(object result, int fieldnr)", "Set result pointer to a specified field offset"],
    mysqli_field_tell: ["int mysqli_field_tell(object result)", "Get current field offset of result pointer"],
    mysqli_free_result: ["void mysqli_free_result(object result)", "Free query result memory for the given result handle"],
    mysqli_get_charset: ["object mysqli_get_charset(object link)", "returns a character set object"],
    mysqli_get_client_info: ["string mysqli_get_client_info(void)", "Get MySQL client info"],
    mysqli_get_client_stats: ["array mysqli_get_client_stats(void)", "Returns statistics about the zval cache"],
    mysqli_get_client_version: ["int mysqli_get_client_version(void)", "Get MySQL client info"],
    mysqli_get_connection_stats: ["array mysqli_get_connection_stats(void)", "Returns statistics about the zval cache"],
    mysqli_get_host_info: ["string mysqli_get_host_info (object link)", "Get MySQL host info"],
    mysqli_get_proto_info: ["int mysqli_get_proto_info(object link)", "Get MySQL protocol information"],
    mysqli_get_server_info: ["string mysqli_get_server_info(object link)", "Get MySQL server info"],
    mysqli_get_server_version: ["int mysqli_get_server_version(object link)", "Return the MySQL version for the server referenced by the given link"],
    mysqli_get_warnings: ["object mysqli_get_warnings(object link) */", 'PHP_FUNCTION(mysqli_get_warnings) {  MY_MYSQL   *mysql;  zval    *mysql_link;  MYSQLI_RESOURCE  *mysqli_resource;  MYSQLI_WARNING  *w;   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {   return;  }  MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);   if (mysql_warning_count(mysql->mysql)) {   w = php_get_warnings(mysql->mysql TSRMLS_CC);   } else {   RETURN_FALSE;  }  mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));  mysqli_resource->ptr = mysqli_resource->info = (void *)w;  mysqli_resource->status = MYSQLI_STATUS_VALID;  MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry);  } /* }}}'],
    mysqli_info: ["string mysqli_info(object link)", "Get information about the most recent query"],
    mysqli_init: ["resource mysqli_init(void)", "Initialize mysqli and return a resource for use with mysql_real_connect"],
    mysqli_insert_id: ["mixed mysqli_insert_id(object link)", "Get the ID generated from the previous INSERT operation"],
    mysqli_kill: ["bool mysqli_kill(object link, int processid)", "Kill a mysql process on the server"],
    mysqli_link_construct: ["object mysqli_link_construct()", ""],
    mysqli_more_results: ["bool mysqli_more_results(object link)", "check if there any more query results from a multi query"],
    mysqli_multi_query: ["bool mysqli_multi_query(object link, string query)", "allows to execute multiple queries"],
    mysqli_next_result: ["bool mysqli_next_result(object link)", "read next result from multi_query"],
    mysqli_num_fields: ["int mysqli_num_fields(object result)", "Get number of fields in result"],
    mysqli_num_rows: ["mixed mysqli_num_rows(object result)", "Get number of rows in result"],
    mysqli_options: ["bool mysqli_options(object link, int flags, mixed values)", "Set options"],
    mysqli_ping: ["bool mysqli_ping(object link)", "Ping a server connection or reconnect if there is no connection"],
    mysqli_poll: ["int mysqli_poll(array read, array write, array error, long sec [, long usec])", "Poll connections"],
    mysqli_prepare: ["mixed mysqli_prepare(object link, string query)", "Prepare a SQL statement for execution"],
    mysqli_query: ["mixed mysqli_query(object link, string query [,int resultmode]) */", 'PHP_FUNCTION(mysqli_query) {  MY_MYSQL   *mysql;  zval    *mysql_link;  MYSQLI_RESOURCE  *mysqli_resource;  MYSQL_RES    *result;  char    *query = NULL;  unsigned int   query_len;  unsigned long   resultmode = MYSQLI_STORE_RESULT;   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &mysql_link, mysqli_link_class_entry, &query, &query_len, &resultmode) == FAILURE) {   return;  }   if (!query_len) {   php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty query");   RETURN_FALSE;  }  if ((resultmode & ~MYSQLI_ASYNC) != MYSQLI_USE_RESULT && (resultmode & ~MYSQLI_ASYNC) != MYSQLI_STORE_RESULT) {   php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid value for resultmode");   RETURN_FALSE;  }   MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);   MYSQLI_DISABLE_MQ;   #ifdef MYSQLI_USE_MYSQLND  if (resultmode & MYSQLI_ASYNC) {   if (mysqli_async_query(mysql->mysql, query, query_len)) {    MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);    RETURN_FALSE;   }   mysql->async_result_fetch_type = resultmode & ~MYSQLI_ASYNC;   RETURN_TRUE;  } #endif   if (mysql_real_query(mysql->mysql, query, query_len)) {   MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);   RETURN_FALSE;  }   if (!mysql_field_count(mysql->mysql)) {   /* no result set - not a SELECT'],
    mysqli_real_connect: ["bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])", "Open a connection to a mysql server"],
    mysqli_real_escape_string: ["string mysqli_real_escape_string(object link, string escapestr)", "Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection"],
    mysqli_real_query: ["bool mysqli_real_query(object link, string query)", "Binary-safe version of mysql_query()"],
    mysqli_reap_async_query: ["int mysqli_reap_async_query(object link)", "Poll connections"],
    mysqli_refresh: ["bool mysqli_refresh(object link, long options)", "Flush tables or caches, or reset replication server information"],
    mysqli_report: ["bool mysqli_report(int flags)", "sets report level"],
    mysqli_rollback: ["bool mysqli_rollback(object link)", "Undo actions from current transaction"],
    mysqli_select_db: ["bool mysqli_select_db(object link, string dbname)", "Select a MySQL database"],
    mysqli_set_charset: ["bool mysqli_set_charset(object link, string csname)", "sets client character set"],
    mysqli_set_local_infile_default: ["void mysqli_set_local_infile_default(object link)", "unsets user defined handler for load local infile command"],
    mysqli_set_local_infile_handler: ["bool mysqli_set_local_infile_handler(object link, callback read_func)", "Set callback functions for LOAD DATA LOCAL INFILE"],
    mysqli_sqlstate: ["string mysqli_sqlstate(object link)", "Returns the SQLSTATE error from previous MySQL operation"],
    mysqli_ssl_set: ["bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])", ""],
    mysqli_stat: ["mixed mysqli_stat(object link)", "Get current system status"],
    mysqli_stmt_affected_rows: ["mixed mysqli_stmt_affected_rows(object stmt)", "Return the number of rows affected in the last query for the given link"],
    mysqli_stmt_attr_get: ["int mysqli_stmt_attr_get(object stmt, long attr)", ""],
    mysqli_stmt_attr_set: ["int mysqli_stmt_attr_set(object stmt, long attr, long mode)", ""],
    mysqli_stmt_bind_param: ["bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])", "Bind variables to a prepared statement as parameters"],
    mysqli_stmt_bind_result: ["bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])", "Bind variables to a prepared statement for result storage"],
    mysqli_stmt_close: ["bool mysqli_stmt_close(object stmt)", "Close statement"],
    mysqli_stmt_data_seek: ["void mysqli_stmt_data_seek(object stmt, int offset)", "Move internal result pointer"],
    mysqli_stmt_errno: ["int mysqli_stmt_errno(object stmt)", ""],
    mysqli_stmt_error: ["string mysqli_stmt_error(object stmt)", ""],
    mysqli_stmt_execute: ["bool mysqli_stmt_execute(object stmt)", "Execute a prepared statement"],
    mysqli_stmt_fetch: ["mixed mysqli_stmt_fetch(object stmt)", "Fetch results from a prepared statement into the bound variables"],
    mysqli_stmt_field_count: ["int mysqli_stmt_field_count(object stmt) {", "Return the number of result columns for the given statement"],
    mysqli_stmt_free_result: ["void mysqli_stmt_free_result(object stmt)", "Free stored result memory for the given statement handle"],
    mysqli_stmt_get_result: ["object mysqli_stmt_get_result(object link)", "Buffer result set on client"],
    mysqli_stmt_get_warnings: ["object mysqli_stmt_get_warnings(object link) */", 'PHP_FUNCTION(mysqli_stmt_get_warnings) {  MY_STMT    *stmt;  zval    *stmt_link;  MYSQLI_RESOURCE  *mysqli_resource;  MYSQLI_WARNING  *w;   if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &stmt_link, mysqli_stmt_class_entry) == FAILURE) {   return;  }  MYSQLI_FETCH_RESOURCE(stmt, MY_STMT*, &stmt_link, "mysqli_stmt", MYSQLI_STATUS_VALID);   if (mysqli_stmt_warning_count(stmt->stmt)) {   w = php_get_warnings(mysqli_stmt_get_connection(stmt->stmt) TSRMLS_CC);   } else {   RETURN_FALSE;  }  mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));  mysqli_resource->ptr = mysqli_resource->info = (void *)w;  mysqli_resource->status = MYSQLI_STATUS_VALID;  MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}'],
    mysqli_stmt_init: ["mixed mysqli_stmt_init(object link)", "Initialize statement object"],
    mysqli_stmt_insert_id: ["mixed mysqli_stmt_insert_id(object stmt)", "Get the ID generated from the previous INSERT operation"],
    mysqli_stmt_next_result: ["bool mysqli_stmt_next_result(object link)", "read next result from multi_query"],
    mysqli_stmt_num_rows: ["mixed mysqli_stmt_num_rows(object stmt)", "Return the number of rows in statements result set"],
    mysqli_stmt_param_count: ["int mysqli_stmt_param_count(object stmt)", "Return the number of parameter for the given statement"],
    mysqli_stmt_prepare: ["bool mysqli_stmt_prepare(object stmt, string query)", "prepare server side statement with query"],
    mysqli_stmt_reset: ["bool mysqli_stmt_reset(object stmt)", "reset a prepared statement"],
    mysqli_stmt_result_metadata: ["mixed mysqli_stmt_result_metadata(object stmt)", "return result set from statement"],
    mysqli_stmt_send_long_data: ["bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)", ""],
    mysqli_stmt_sqlstate: ["string mysqli_stmt_sqlstate(object stmt)", ""],
    mysqli_stmt_store_result: ["bool mysqli_stmt_store_result(stmt)", ""],
    mysqli_store_result: ["object mysqli_store_result(object link)", "Buffer result set on client"],
    mysqli_thread_id: ["int mysqli_thread_id(object link)", "Return the current thread ID"],
    mysqli_thread_safe: ["bool mysqli_thread_safe(void)", "Return whether thread safety is given or not"],
    mysqli_use_result: ["mixed mysqli_use_result(object link)", "Directly retrieve query results - do not buffer results on client side"],
    mysqli_warning_count: ["int mysqli_warning_count (object link)", "Return number of warnings from the last query for the given link"],
    natcasesort: ["void natcasesort(array &array_arg)", "Sort an array using case-insensitive natural sort"],
    natsort: ["void natsort(array &array_arg)", "Sort an array using natural sort"],
    next: ["mixed next(array array_arg)", "Move array argument's internal pointer to the next element and return it"],
    ngettext: ["string ngettext(string MSGID1, string MSGID2, int N)", "Plural version of gettext()"],
    nl2br: ["string nl2br(string str [, bool is_xhtml])", "Converts newlines to HTML line breaks"],
    nl_langinfo: ["string nl_langinfo(int item)", "Query language and locale information"],
    normalizer_is_normalize: ["bool normalizer_is_normalize( string $input [, string $form = FORM_C] )", "* Test if a string is in a given normalization form."],
    normalizer_normalize: ["string normalizer_normalize( string $input [, string $form = FORM_C] )", "* Normalize a string."],
    nsapi_request_headers: ["array nsapi_request_headers(void)", "Get all headers from the request"],
    nsapi_response_headers: ["array nsapi_response_headers(void)", "Get all headers from the response"],
    nsapi_virtual: ["bool nsapi_virtual(string uri)", "Perform an NSAPI sub-request"],
    number_format: ["string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])", "Formats a number with grouped thousands"],
    numfmt_create: ["NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )", "* Create number formatter."],
    numfmt_format: ["mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )", "* Format a number."],
    numfmt_format_currency: ["mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )", "* Format a number as currency."],
    numfmt_get_attribute: ["mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )", "* Get formatter attribute value."],
    numfmt_get_error_code: ["int numfmt_get_error_code( NumberFormatter $nf )", "* Get formatter's last error code."],
    numfmt_get_error_message: ["string numfmt_get_error_message( NumberFormatter $nf )", "* Get text description for formatter's last error code."],
    numfmt_get_locale: ["string numfmt_get_locale( NumberFormatter $nf[, int type] )", "* Get formatter locale."],
    numfmt_get_pattern: ["string numfmt_get_pattern( NumberFormatter $nf )", "* Get formatter pattern."],
    numfmt_get_symbol: ["string numfmt_get_symbol( NumberFormatter $nf, int $attr )", "* Get formatter symbol value."],
    numfmt_get_text_attribute: ["string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )", "* Get formatter attribute value."],
    numfmt_parse: ["mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])", "* Parse a number."],
    numfmt_parse_currency: ["double numfmt_parse_currency( NumberFormatter $nf, string $str, string $&currency[, int $&position] )", "* Parse a number as currency."],
    numfmt_parse_message: ["array numfmt_parse_message( string $locale, string $pattern, string $source )", "* Parse a message."],
    numfmt_set_attribute: ["bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )", "* Get formatter attribute value."],
    numfmt_set_pattern: ["bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )", "* Set formatter pattern."],
    numfmt_set_symbol: ["bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )", "* Set formatter symbol value."],
    numfmt_set_text_attribute: ["bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )", "* Get formatter attribute value."],
    ob_clean: ["bool ob_clean(void)", "Clean (delete) the current output buffer"],
    ob_end_clean: ["bool ob_end_clean(void)", "Clean the output buffer, and delete current output buffer"],
    ob_end_flush: ["bool ob_end_flush(void)", "Flush (send) the output buffer, and delete current output buffer"],
    ob_flush: ["bool ob_flush(void)", "Flush (send) contents of the output buffer. The last buffer content is sent to next buffer"],
    ob_get_clean: ["bool ob_get_clean(void)", "Get current buffer contents and delete current output buffer"],
    ob_get_contents: ["string ob_get_contents(void)", "Return the contents of the output buffer"],
    ob_get_flush: ["bool ob_get_flush(void)", "Get current buffer contents, flush (send) the output buffer, and delete current output buffer"],
    ob_get_length: ["int ob_get_length(void)", "Return the length of the output buffer"],
    ob_get_level: ["int ob_get_level(void)", "Return the nesting level of the output buffer"],
    ob_get_status: ["false|array ob_get_status([bool full_status])", "Return the status of the active or all output buffers"],
    ob_gzhandler: ["string ob_gzhandler(string str, int mode)", "Encode str based on accept-encoding setting - designed to be called from ob_start()"],
    ob_iconv_handler: ["string ob_iconv_handler(string contents, int status)", "Returns str in output buffer converted to the iconv.output_encoding character set"],
    ob_implicit_flush: ["void ob_implicit_flush([int flag])", "Turn implicit flush on/off and is equivalent to calling flush() after every output call"],
    ob_list_handlers: ["false|array ob_list_handlers()", "*  List all output_buffers in an array"],
    ob_start: ["bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])", "Turn on Output Buffering (specifying an optional output handler)."],
    oci_bind_array_by_name: ["bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])", "Bind a PHP array to an Oracle PL/SQL type by name"],
    oci_bind_by_name: ["bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])", "Bind a PHP variable to an Oracle placeholder by name"],
    oci_cancel: ["bool oci_cancel(resource stmt)", "Cancel reading from a cursor"],
    oci_close: ["bool oci_close(resource connection)", "Disconnect from database"],
    oci_collection_append: ["bool oci_collection_append(string value)", "Append an object to the collection"],
    oci_collection_assign: ["bool oci_collection_assign(object from)", "Assign a collection from another existing collection"],
    oci_collection_element_assign: ["bool oci_collection_element_assign(int index, string val)", "Assign element val to collection at index ndx"],
    oci_collection_element_get: ["string oci_collection_element_get(int ndx)", "Retrieve the value at collection index ndx"],
    oci_collection_max: ["int oci_collection_max()", "Return the max value of a collection. For a varray this is the maximum length of the array"],
    oci_collection_size: ["int oci_collection_size()", "Return the size of a collection"],
    oci_collection_trim: ["bool oci_collection_trim(int num)", "Trim num elements from the end of a collection"],
    oci_commit: ["bool oci_commit(resource connection)", "Commit the current context"],
    oci_connect: ["resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])", "Connect to an Oracle database and log on. Returns a new session."],
    oci_define_by_name: ["bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])", "Define a PHP variable to an Oracle column by name"],
    oci_error: ["array oci_error([resource stmt|connection|global])", "Return the last error of stmt|connection|global. If no error happened returns false."],
    oci_execute: ["bool oci_execute(resource stmt [, int mode])", "Execute a parsed statement"],
    oci_fetch: ["bool oci_fetch(resource stmt)", "Prepare a new row of data for reading"],
    oci_fetch_all: ["int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])", "Fetch all rows of result data into an array"],
    oci_fetch_array: ["array oci_fetch_array( resource stmt [, int mode ])", "Fetch a result row as an array"],
    oci_fetch_assoc: ["array oci_fetch_assoc( resource stmt )", "Fetch a result row as an associative array"],
    oci_fetch_object: ["object oci_fetch_object( resource stmt )", "Fetch a result row as an object"],
    oci_fetch_row: ["array oci_fetch_row( resource stmt )", "Fetch a result row as an enumerated array"],
    oci_field_is_null: ["bool oci_field_is_null(resource stmt, int col)", "Tell whether a column is NULL"],
    oci_field_name: ["string oci_field_name(resource stmt, int col)", "Tell the name of a column"],
    oci_field_precision: ["int oci_field_precision(resource stmt, int col)", "Tell the precision of a column"],
    oci_field_scale: ["int oci_field_scale(resource stmt, int col)", "Tell the scale of a column"],
    oci_field_size: ["int oci_field_size(resource stmt, int col)", "Tell the maximum data size of a column"],
    oci_field_type: ["mixed oci_field_type(resource stmt, int col)", "Tell the data type of a column"],
    oci_field_type_raw: ["int oci_field_type_raw(resource stmt, int col)", "Tell the raw oracle data type of a column"],
    oci_free_collection: ["bool oci_free_collection()", "Deletes collection object"],
    oci_free_descriptor: ["bool oci_free_descriptor()", "Deletes large object description"],
    oci_free_statement: ["bool oci_free_statement(resource stmt)", "Free all resources associated with a statement"],
    oci_internal_debug: ["void oci_internal_debug(int onoff)", "Toggle internal debugging output for the OCI extension"],
    oci_lob_append: ["bool oci_lob_append( object lob )", "Appends data from a LOB to another LOB"],
    oci_lob_close: ["bool oci_lob_close()", "Closes lob descriptor"],
    oci_lob_copy: ["bool oci_lob_copy( object lob_to, object lob_from [, int length ] )", "Copies data from a LOB to another LOB"],
    oci_lob_eof: ["bool oci_lob_eof()", "Checks if EOF is reached"],
    oci_lob_erase: ["int oci_lob_erase( [ int offset [, int length ] ] )", "Erases a specified portion of the internal LOB, starting at a specified offset"],
    oci_lob_export: ["bool oci_lob_export([string filename [, int start [, int length]]])", "Writes a large object into a file"],
    oci_lob_flush: ["bool oci_lob_flush( [ int flag ] )", "Flushes the LOB buffer"],
    oci_lob_import: ["bool oci_lob_import( string filename )", "Loads file into a LOB"],
    oci_lob_is_equal: ["bool oci_lob_is_equal( object lob1, object lob2 )", "Tests to see if two LOB/FILE locators are equal"],
    oci_lob_load: ["string oci_lob_load()", "Loads a large object"],
    oci_lob_read: ["string oci_lob_read( int length )", "Reads particular part of a large object"],
    oci_lob_rewind: ["bool oci_lob_rewind()", "Rewind pointer of a LOB"],
    oci_lob_save: ["bool oci_lob_save( string data [, int offset ])", "Saves a large object"],
    oci_lob_seek: ["bool oci_lob_seek( int offset [, int whence ])", "Moves the pointer of a LOB"],
    oci_lob_size: ["int oci_lob_size()", "Returns size of a large object"],
    oci_lob_tell: ["int oci_lob_tell()", "Tells LOB pointer position"],
    oci_lob_truncate: ["bool oci_lob_truncate( [ int length ])", "Truncates a LOB"],
    oci_lob_write: ["int oci_lob_write( string string [, int length ])", "Writes data to current position of a LOB"],
    oci_lob_write_temporary: ["bool oci_lob_write_temporary(string var [, int lob_type])", "Writes temporary blob"],
    oci_new_collection: ["object oci_new_collection(resource connection, string tdo [, string schema])", "Initialize a new collection"],
    oci_new_connect: ["resource oci_new_connect(string user, string pass [, string db])", "Connect to an Oracle database and log on. Returns a new session."],
    oci_new_cursor: ["resource oci_new_cursor(resource connection)", "Return a new cursor (Statement-Handle) - use this to bind ref-cursors!"],
    oci_new_descriptor: ["object oci_new_descriptor(resource connection [, int type])", "Initialize a new empty descriptor LOB/FILE (LOB is default)"],
    oci_num_fields: ["int oci_num_fields(resource stmt)", "Return the number of result columns in a statement"],
    oci_num_rows: ["int oci_num_rows(resource stmt)", "Return the row count of an OCI statement"],
    oci_parse: ["resource oci_parse(resource connection, string query)", "Parse a query and return a statement"],
    oci_password_change: ["bool oci_password_change(resource connection, string username, string old_password, string new_password)", "Changes the password of an account"],
    oci_pconnect: ["resource oci_pconnect(string user, string pass [, string db [, string charset ]])", "Connect to an Oracle database using a persistent connection and log on. Returns a new session."],
    oci_result: ["string oci_result(resource stmt, mixed column)", "Return a single column of result data"],
    oci_rollback: ["bool oci_rollback(resource connection)", "Rollback the current context"],
    oci_server_version: ["string oci_server_version(resource connection)", "Return a string containing server version information"],
    oci_set_action: ["bool oci_set_action(resource connection, string value)", "Sets the action attribute on the connection"],
    oci_set_client_identifier: ["bool oci_set_client_identifier(resource connection, string value)", "Sets the client identifier attribute on the connection"],
    oci_set_client_info: ["bool oci_set_client_info(resource connection, string value)", "Sets the client info attribute on the connection"],
    oci_set_edition: ["bool oci_set_edition(string value)", "Sets the edition attribute for all subsequent connections created"],
    oci_set_module_name: ["bool oci_set_module_name(resource connection, string value)", "Sets the module attribute on the connection"],
    oci_set_prefetch: ["bool oci_set_prefetch(resource stmt, int prefetch_rows)", "Sets the number of rows to be prefetched on execute to prefetch_rows for stmt"],
    oci_statement_type: ["string oci_statement_type(resource stmt)", "Return the query type of an OCI statement"],
    ocifetchinto: ["int ocifetchinto(resource stmt, array &output [, int mode])", "Fetch a row of result data into an array"],
    ocigetbufferinglob: ["bool ocigetbufferinglob()", "Returns current state of buffering for a LOB"],
    ocisetbufferinglob: ["bool ocisetbufferinglob( boolean flag )", "Enables/disables buffering for a LOB"],
    octdec: ["int octdec(string octal_number)", "Returns the decimal equivalent of an octal string"],
    odbc_autocommit: ["mixed odbc_autocommit(resource connection_id [, int OnOff])", "Toggle autocommit mode or get status"],
    odbc_binmode: ["bool odbc_binmode(int result_id, int mode)", "Handle binary column data"],
    odbc_close: ["void odbc_close(resource connection_id)", "Close an ODBC connection"],
    odbc_close_all: ["void odbc_close_all(void)", "Close all ODBC connections"],
    odbc_columnprivileges: ["resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)", "Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table"],
    odbc_columns: ["resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])", "Returns a result identifier that can be used to fetch a list of column names in specified tables"],
    odbc_commit: ["bool odbc_commit(resource connection_id)", "Commit an ODBC transaction"],
    odbc_connect: ["resource odbc_connect(string DSN, string user, string password [, int cursor_option])", "Connect to a datasource"],
    odbc_cursor: ["string odbc_cursor(resource result_id)", "Get cursor name"],
    odbc_data_source: ["array odbc_data_source(resource connection_id, int fetch_type)", "Return information about the currently connected data source"],
    odbc_error: ["string odbc_error([resource connection_id])", "Get the last error code"],
    odbc_errormsg: ["string odbc_errormsg([resource connection_id])", "Get the last error message"],
    odbc_exec: ["resource odbc_exec(resource connection_id, string query [, int flags])", "Prepare and execute an SQL statement"],
    odbc_execute: ["bool odbc_execute(resource result_id [, array parameters_array])", "Execute a prepared statement"],
    odbc_fetch_array: ["array odbc_fetch_array(int result [, int rownumber])", "Fetch a result row as an associative array"],
    odbc_fetch_into: ["int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])", "Fetch one result row into an array"],
    odbc_fetch_object: ["object odbc_fetch_object(int result [, int rownumber])", "Fetch a result row as an object"],
    odbc_fetch_row: ["bool odbc_fetch_row(resource result_id [, int row_number])", "Fetch a row"],
    odbc_field_len: ["int odbc_field_len(resource result_id, int field_number)", "Get the length (precision) of a column"],
    odbc_field_name: ["string odbc_field_name(resource result_id, int field_number)", "Get a column name"],
    odbc_field_num: ["int odbc_field_num(resource result_id, string field_name)", "Return column number"],
    odbc_field_scale: ["int odbc_field_scale(resource result_id, int field_number)", "Get the scale of a column"],
    odbc_field_type: ["string odbc_field_type(resource result_id, int field_number)", "Get the datatype of a column"],
    odbc_foreignkeys: ["resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)", "Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table"],
    odbc_free_result: ["bool odbc_free_result(resource result_id)", "Free resources associated with a result"],
    odbc_gettypeinfo: ["resource odbc_gettypeinfo(resource connection_id [, int data_type])", "Returns a result identifier containing information about data types supported by the data source"],
    odbc_longreadlen: ["bool odbc_longreadlen(int result_id, int length)", "Handle LONG columns"],
    odbc_next_result: ["bool odbc_next_result(resource result_id)", "Checks if multiple results are avaiable"],
    odbc_num_fields: ["int odbc_num_fields(resource result_id)", "Get number of columns in a result"],
    odbc_num_rows: ["int odbc_num_rows(resource result_id)", "Get number of rows in a result"],
    odbc_pconnect: ["resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])", "Establish a persistent connection to a datasource"],
    odbc_prepare: ["resource odbc_prepare(resource connection_id, string query)", "Prepares a statement for execution"],
    odbc_primarykeys: ["resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)", "Returns a result identifier listing the column names that comprise the primary key for a table"],
    odbc_procedurecolumns: ["resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])", "Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures"],
    odbc_procedures: ["resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])", "Returns a result identifier containg the list of procedure names in a datasource"],
    odbc_result: ["mixed odbc_result(resource result_id, mixed field)", "Get result data"],
    odbc_result_all: ["int odbc_result_all(resource result_id [, string format])", "Print result as HTML table"],
    odbc_rollback: ["bool odbc_rollback(resource connection_id)", "Rollback a transaction"],
    odbc_setoption: ["bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)", "Sets connection or statement options"],
    odbc_specialcolumns: ["resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)", "Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction"],
    odbc_statistics: ["resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)", "Returns a result identifier that contains statistics about a single table and the indexes associated with the table"],
    odbc_tableprivileges: ["resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)", "Returns a result identifier containing a list of tables and the privileges associated with each table"],
    odbc_tables: ["resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])", "Call the SQLTables function"],
    opendir: ["mixed opendir(string path[, resource context])", "Open a directory and return a dir_handle"],
    openlog: ["bool openlog(string ident, int option, int facility)", "Open connection to system logger"],
    openssl_csr_export: ["bool openssl_csr_export(resource csr, string &out [, bool notext=true])", "Exports a CSR to file or a var"],
    openssl_csr_export_to_file: ["bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])", "Exports a CSR to file"],
    openssl_csr_get_public_key: ["mixed openssl_csr_get_public_key(mixed csr)", "Returns the subject of a CERT or FALSE on error"],
    openssl_csr_get_subject: ["mixed openssl_csr_get_subject(mixed csr)", "Returns the subject of a CERT or FALSE on error"],
    openssl_csr_new: ["bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])", "Generates a privkey and CSR"],
    openssl_csr_sign: ["resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])", "Signs a cert with another CERT"],
    openssl_decrypt: ["string openssl_decrypt(string data, string method, string password [, bool raw_input=false])", "Takes raw or base64 encoded string and dectupt it using given method and key"],
    openssl_dh_compute_key: ["string openssl_dh_compute_key(string pub_key, resource dh_key)", "Computes shared sicret for public value of remote DH key and local DH key"],
    openssl_digest: ["string openssl_digest(string data, string method [, bool raw_output=false])", "Computes digest hash value for given data using given method, returns raw or binhex encoded string"],
    openssl_encrypt: ["string openssl_encrypt(string data, string method, string password [, bool raw_output=false])", "Encrypts given data with given method and key, returns raw or base64 encoded string"],
    openssl_error_string: ["mixed openssl_error_string(void)", "Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages"],
    openssl_get_cipher_methods: ["array openssl_get_cipher_methods([bool aliases = false])", "Return array of available cipher methods"],
    openssl_get_md_methods: ["array openssl_get_md_methods([bool aliases = false])", "Return array of available digest methods"],
    openssl_open: ["bool openssl_open(string data, &string opendata, string ekey, mixed privkey)", "Opens data"],
    openssl_pkcs12_export: ["bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])", "Creates and exports a PKCS12 to a var"],
    openssl_pkcs12_export_to_file: ["bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])", "Creates and exports a PKCS to file"],
    openssl_pkcs12_read: ["bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)", "Parses a PKCS12 to an array"],
    openssl_pkcs7_decrypt: ["bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])", "Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename.  recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key"],
    openssl_pkcs7_encrypt: ["bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])", "Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile"],
    openssl_pkcs7_sign: ["bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])", "Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum"],
    openssl_pkcs7_verify: ["bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])", "Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers"],
    openssl_pkey_export: ["bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])", "Gets an exportable representation of a key into a string or file"],
    openssl_pkey_export_to_file: ["bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)", "Gets an exportable representation of a key into a file"],
    openssl_pkey_free: ["void openssl_pkey_free(int key)", "Frees a key"],
    openssl_pkey_get_details: ["resource openssl_pkey_get_details(resource key)", "returns an array with the key details (bits, pkey, type)"],
    openssl_pkey_get_private: ["int openssl_pkey_get_private(string key [, string passphrase])", "Gets private keys"],
    openssl_pkey_get_public: ["int openssl_pkey_get_public(mixed cert)", "Gets public key from X.509 certificate"],
    openssl_pkey_new: ["resource openssl_pkey_new([array configargs])", "Generates a new private key"],
    openssl_private_decrypt: ["bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])", "Decrypts data with private key"],
    openssl_private_encrypt: ["bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])", "Encrypts data with private key"],
    openssl_public_decrypt: ["bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])", "Decrypts data with public key"],
    openssl_public_encrypt: ["bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])", "Encrypts data with public key"],
    openssl_random_pseudo_bytes: ["string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])", "Returns a string of the length specified filled with random pseudo bytes"],
    openssl_seal: ["int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)", "Seals data"],
    openssl_sign: ["bool openssl_sign(string data, &string signature, mixed key[, mixed method])", "Signs data"],
    openssl_verify: ["int openssl_verify(string data, string signature, mixed key[, mixed method])", "Verifys data"],
    openssl_x509_check_private_key: ["bool openssl_x509_check_private_key(mixed cert, mixed key)", "Checks if a private key corresponds to a CERT"],
    openssl_x509_checkpurpose: ["int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])", "Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs"],
    openssl_x509_export: ["bool openssl_x509_export(mixed x509, string &out [, bool notext = true])", "Exports a CERT to file or a var"],
    openssl_x509_export_to_file: ["bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])", "Exports a CERT to file or a var"],
    openssl_x509_free: ["void openssl_x509_free(resource x509)", "Frees X.509 certificates"],
    openssl_x509_parse: ["array openssl_x509_parse(mixed x509 [, bool shortnames=true])", "Returns an array of the fields/values of the CERT"],
    openssl_x509_read: ["resource openssl_x509_read(mixed cert)", "Reads X.509 certificates"],
    ord: ["int ord(string character)", "Returns ASCII value of character"],
    output_add_rewrite_var: ["bool output_add_rewrite_var(string name, string value)", "Add URL rewriter values"],
    output_reset_rewrite_vars: ["bool output_reset_rewrite_vars(void)", "Reset(clear) URL rewriter values"],
    pack: ["string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])", "Takes one or more arguments and packs them into a binary string according to the format argument"],
    parse_ini_file: ["array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])", "Parse configuration file"],
    parse_ini_string: ["array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])", "Parse configuration string"],
    parse_locale: ["static array parse_locale($locale)", "* parses a locale-id into an array the different parts of it"],
    parse_str: ["void parse_str(string encoded_string [, array result])", "Parses GET/POST/COOKIE data and sets global variables"],
    parse_url: ["mixed parse_url(string url, [int url_component])", "Parse a URL and return its components"],
    passthru: ["void passthru(string command [, int &return_value])", "Execute an external program and display raw output"],
    pathinfo: ["array pathinfo(string path[, int options])", "Returns information about a certain string"],
    pclose: ["int pclose(resource fp)", "Close a file pointer opened by popen()"],
    pcnlt_sigwaitinfo: ["int pcnlt_sigwaitinfo(array set[, array &siginfo])", "Synchronously wait for queued signals"],
    pcntl_alarm: ["int pcntl_alarm(int seconds)", "Set an alarm clock for delivery of a signal"],
    pcntl_exec: ["bool pcntl_exec(string path [, array args [, array envs]])", "Executes specified program in current process space as defined by exec(2)"],
    pcntl_fork: ["int pcntl_fork(void)", "Forks the currently running process following the same behavior as the UNIX fork() system call"],
    pcntl_getpriority: ["int pcntl_getpriority([int pid [, int process_identifier]])", "Get the priority of any process"],
    pcntl_setpriority: ["bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])", "Change the priority of any process"],
    pcntl_signal: ["bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])", "Assigns a system signal handler to a PHP function"],
    pcntl_signal_dispatch: ["bool pcntl_signal_dispatch()", "Dispatch signals to signal handlers"],
    pcntl_sigprocmask: ["bool pcntl_sigprocmask(int how, array set[, array &oldset])", "Examine and change blocked signals"],
    pcntl_sigtimedwait: ["int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])", "Wait for queued signals"],
    pcntl_wait: ["int pcntl_wait(int &status)", "Waits on or returns the status of a forked child as defined by the waitpid() system call"],
    pcntl_waitpid: ["int pcntl_waitpid(int pid, int &status, int options)", "Waits on or returns the status of a forked child as defined by the waitpid() system call"],
    pcntl_wexitstatus: ["int pcntl_wexitstatus(int status)", "Returns the status code of a child's exit"],
    pcntl_wifexited: ["bool pcntl_wifexited(int status)", "Returns true if the child status code represents a successful exit"],
    pcntl_wifsignaled: ["bool pcntl_wifsignaled(int status)", "Returns true if the child status code represents a process that was terminated due to a signal"],
    pcntl_wifstopped: ["bool pcntl_wifstopped(int status)", "Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)"],
    pcntl_wstopsig: ["int pcntl_wstopsig(int status)", "Returns the number of the signal that caused the process to stop who's status code is passed"],
    pcntl_wtermsig: ["int pcntl_wtermsig(int status)", "Returns the number of the signal that terminated the process who's status code is passed"],
    pdo_drivers: ["array pdo_drivers()", "Return array of available PDO drivers"],
    pfsockopen: ["resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", "Open persistent Internet or Unix domain socket connection"],
    pg_affected_rows: ["int pg_affected_rows(resource result)", "Returns the number of affected tuples"],
    pg_cancel_query: ["bool pg_cancel_query(resource connection)", "Cancel request"],
    pg_client_encoding: ["string pg_client_encoding([resource connection])", "Get the current client encoding"],
    pg_close: ["bool pg_close([resource connection])", "Close a PostgreSQL connection"],
    pg_connect: ["resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)", "Open a PostgreSQL connection"],
    pg_connection_busy: ["bool pg_connection_busy(resource connection)", "Get connection is busy or not"],
    pg_connection_reset: ["bool pg_connection_reset(resource connection)", "Reset connection (reconnect)"],
    pg_connection_status: ["int pg_connection_status(resource connnection)", "Get connection status"],
    pg_convert: ["array pg_convert(resource db, string table, array values[, int options])", "Check and convert values for PostgreSQL SQL statement"],
    pg_copy_from: ["bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])", "Copy table from array"],
    pg_copy_to: ["array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])", "Copy table to array"],
    pg_dbname: ["string pg_dbname([resource connection])", "Get the database name"],
    pg_delete: ["mixed pg_delete(resource db, string table, array ids[, int options])", "Delete records has ids (id=>value)"],
    pg_end_copy: ["bool pg_end_copy([resource connection])", "Sync with backend. Completes the Copy command"],
    pg_escape_bytea: ["string pg_escape_bytea([resource connection,] string data)", "Escape binary for bytea type"],
    pg_escape_string: ["string pg_escape_string([resource connection,] string data)", "Escape string for text/char type"],
    pg_execute: ["resource pg_execute([resource connection,] string stmtname, array params)", "Execute a prepared query"],
    pg_fetch_all: ["array pg_fetch_all(resource result)", "Fetch all rows into array"],
    pg_fetch_all_columns: ["array pg_fetch_all_columns(resource result [, int column_number])", "Fetch all rows into array"],
    pg_fetch_array: ["array pg_fetch_array(resource result [, int row [, int result_type]])", "Fetch a row as an array"],
    pg_fetch_assoc: ["array pg_fetch_assoc(resource result [, int row])", "Fetch a row as an assoc array"],
    pg_fetch_object: ["object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])", "Fetch a row as an object"],
    pg_fetch_result: ["mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)", "Returns values from a result identifier"],
    pg_fetch_row: ["array pg_fetch_row(resource result [, int row [, int result_type]])", "Get a row as an enumerated array"],
    pg_field_is_null: ["int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)", "Test if a field is NULL"],
    pg_field_name: ["string pg_field_name(resource result, int field_number)", "Returns the name of the field"],
    pg_field_num: ["int pg_field_num(resource result, string field_name)", "Returns the field number of the named field"],
    pg_field_prtlen: ["int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)", "Returns the printed length"],
    pg_field_size: ["int pg_field_size(resource result, int field_number)", "Returns the internal size of the field"],
    pg_field_table: ["mixed pg_field_table(resource result, int field_number[, bool oid_only])", "Returns the name of the table field belongs to, or table's oid if oid_only is true"],
    pg_field_type: ["string pg_field_type(resource result, int field_number)", "Returns the type name for the given field"],
    pg_field_type_oid: ["string pg_field_type_oid(resource result, int field_number)", "Returns the type oid for the given field"],
    pg_free_result: ["bool pg_free_result(resource result)", "Free result memory"],
    pg_get_notify: ["array pg_get_notify([resource connection[, result_type]])", "Get asynchronous notification"],
    pg_get_pid: ["int pg_get_pid([resource connection)", "Get backend(server) pid"],
    pg_get_result: ["resource pg_get_result(resource connection)", "Get asynchronous query result"],
    pg_host: ["string pg_host([resource connection])", "Returns the host name associated with the connection"],
    pg_insert: ["mixed pg_insert(resource db, string table, array values[, int options])", "Insert values (filed=>value) to table"],
    pg_last_error: ["string pg_last_error([resource connection])", "Get the error message string"],
    pg_last_notice: ["string pg_last_notice(resource connection)", "Returns the last notice set by the backend"],
    pg_last_oid: ["string pg_last_oid(resource result)", "Returns the last object identifier"],
    pg_lo_close: ["bool pg_lo_close(resource large_object)", "Close a large object"],
    pg_lo_create: ["mixed pg_lo_create([resource connection],[mixed large_object_oid])", "Create a large object"],
    pg_lo_export: ["bool pg_lo_export([resource connection, ] int objoid, string filename)", "Export large object direct to filesystem"],
    pg_lo_import: ["int pg_lo_import([resource connection, ] string filename [, mixed oid])", "Import large object direct from filesystem"],
    pg_lo_open: ["resource pg_lo_open([resource connection,] int large_object_oid, string mode)", "Open a large object and return fd"],
    pg_lo_read: ["string pg_lo_read(resource large_object [, int len])", "Read a large object"],
    pg_lo_read_all: ["int pg_lo_read_all(resource large_object)", "Read a large object and send straight to browser"],
    pg_lo_seek: ["bool pg_lo_seek(resource large_object, int offset [, int whence])", "Seeks position of large object"],
    pg_lo_tell: ["int pg_lo_tell(resource large_object)", "Returns current position of large object"],
    pg_lo_unlink: ["bool pg_lo_unlink([resource connection,] string large_object_oid)", "Delete a large object"],
    pg_lo_write: ["int pg_lo_write(resource large_object, string buf [, int len])", "Write a large object"],
    pg_meta_data: ["array pg_meta_data(resource db, string table)", "Get meta_data"],
    pg_num_fields: ["int pg_num_fields(resource result)", "Return the number of fields in the result"],
    pg_num_rows: ["int pg_num_rows(resource result)", "Return the number of rows in the result"],
    pg_options: ["string pg_options([resource connection])", "Get the options associated with the connection"],
    pg_parameter_status: ["string|false pg_parameter_status([resource connection,] string param_name)", "Returns the value of a server parameter"],
    pg_pconnect: ["resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)", "Open a persistent PostgreSQL connection"],
    pg_ping: ["bool pg_ping([resource connection])", "Ping database. If connection is bad, try to reconnect."],
    pg_port: ["int pg_port([resource connection])", "Return the port number associated with the connection"],
    pg_prepare: ["resource pg_prepare([resource connection,] string stmtname, string query)", "Prepare a query for future execution"],
    pg_put_line: ["bool pg_put_line([resource connection,] string query)", "Send null-terminated string to backend server"],
    pg_query: ["resource pg_query([resource connection,] string query)", "Execute a query"],
    pg_query_params: ["resource pg_query_params([resource connection,] string query, array params)", "Execute a query"],
    pg_result_error: ["string pg_result_error(resource result)", "Get error message associated with result"],
    pg_result_error_field: ["string pg_result_error_field(resource result, int fieldcode)", "Get error message field associated with result"],
    pg_result_seek: ["bool pg_result_seek(resource result, int offset)", "Set internal row offset"],
    pg_result_status: ["mixed pg_result_status(resource result[, long result_type])", "Get status of query result"],
    pg_select: ["mixed pg_select(resource db, string table, array ids[, int options])", "Select records that has ids (id=>value)"],
    pg_send_execute: ["bool pg_send_execute(resource connection, string stmtname, array params)", "Executes prevriously prepared stmtname asynchronously"],
    pg_send_prepare: ["bool pg_send_prepare(resource connection, string stmtname, string query)", "Asynchronously prepare a query for future execution"],
    pg_send_query: ["bool pg_send_query(resource connection, string query)", "Send asynchronous query"],
    pg_send_query_params: ["bool pg_send_query_params(resource connection, string query, array params)", "Send asynchronous parameterized query"],
    pg_set_client_encoding: ["int pg_set_client_encoding([resource connection,] string encoding)", "Set client encoding"],
    pg_set_error_verbosity: ["int pg_set_error_verbosity([resource connection,] int verbosity)", "Set error verbosity"],
    pg_trace: ["bool pg_trace(string filename [, string mode [, resource connection]])", "Enable tracing a PostgreSQL connection"],
    pg_transaction_status: ["int pg_transaction_status(resource connnection)", "Get transaction status"],
    pg_tty: ["string pg_tty([resource connection])", "Return the tty name associated with the connection"],
    pg_unescape_bytea: ["string pg_unescape_bytea(string data)", "Unescape binary for bytea type"],
    pg_untrace: ["bool pg_untrace([resource connection])", "Disable tracing of a PostgreSQL connection"],
    pg_update: ["mixed pg_update(resource db, string table, array fields, array ids[, int options])", "Update table using values (field=>value) and ids (id=>value)"],
    pg_version: ["array pg_version([resource connection])", "Returns an array with client, protocol and server version (when available)"],
    php_egg_logo_guid: ["string php_egg_logo_guid(void)", "Return the special ID used to request the PHP logo in phpinfo screens"],
    php_ini_loaded_file: ["string php_ini_loaded_file(void)", "Return the actual loaded ini filename"],
    php_ini_scanned_files: ["string php_ini_scanned_files(void)", "Return comma-separated string of .ini files parsed from the additional ini dir"],
    php_logo_guid: ["string php_logo_guid(void)", "Return the special ID used to request the PHP logo in phpinfo screens"],
    php_real_logo_guid: ["string php_real_logo_guid(void)", "Return the special ID used to request the PHP logo in phpinfo screens"],
    php_sapi_name: ["string php_sapi_name(void)", "Return the current SAPI module name"],
    php_snmpv3: ["void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)", "* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET   snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT   snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK   snmp3_walk() - walk the mib and return a single dimensional array  *                       containing the values. * st=SNMP_CMD_REALWALK   snmp3_real_walk() - walk the mib and return an  *                            array of oid,value pairs. * st=SNMP_CMD_SET  snmp3_set() - query an agent and set a single value *"],
    php_strip_whitespace: ["string php_strip_whitespace(string file_name)", "Return source with stripped comments and whitespace"],
    php_uname: ["string php_uname(void)", "Return information about the system PHP was built on"],
    phpcredits: ["void phpcredits([int flag])", "Prints the list of people who've contributed to the PHP project"],
    phpinfo: ["void phpinfo([int what])", "Output a page of useful information about PHP and the current request"],
    phpversion: ["string phpversion([string extension])", "Return the current PHP version"],
    pi: ["float pi(void)", "Returns an approximation of pi"],
    png2wbmp: ["bool png2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)", "Convert PNG image to WBMP image"],
    popen: ["resource popen(string command, string mode)", "Execute a command and open either a read or a write pipe to it"],
    posix_access: ["bool posix_access(string file [, int mode])", "Determine accessibility of a file (POSIX.1 5.6.3)"],
    posix_ctermid: ["string posix_ctermid(void)", "Generate terminal path name (POSIX.1, 4.7.1)"],
    posix_get_last_error: ["int posix_get_last_error(void)", "Retrieve the error number set by the last posix function which failed."],
    posix_getcwd: ["string posix_getcwd(void)", "Get working directory pathname (POSIX.1, 5.2.2)"],
    posix_getegid: ["int posix_getegid(void)", "Get the current effective group id (POSIX.1, 4.2.1)"],
    posix_geteuid: ["int posix_geteuid(void)", "Get the current effective user id (POSIX.1, 4.2.1)"],
    posix_getgid: ["int posix_getgid(void)", "Get the current group id (POSIX.1, 4.2.1)"],
    posix_getgrgid: ["array posix_getgrgid(long gid)", "Group database access (POSIX.1, 9.2.1)"],
    posix_getgrnam: ["array posix_getgrnam(string groupname)", "Group database access (POSIX.1, 9.2.1)"],
    posix_getgroups: ["array posix_getgroups(void)", "Get supplementary group id's (POSIX.1, 4.2.3)"],
    posix_getlogin: ["string posix_getlogin(void)", "Get user name (POSIX.1, 4.2.4)"],
    posix_getpgid: ["int posix_getpgid(void)", "Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)"],
    posix_getpgrp: ["int posix_getpgrp(void)", "Get current process group id (POSIX.1, 4.3.1)"],
    posix_getpid: ["int posix_getpid(void)", "Get the current process id (POSIX.1, 4.1.1)"],
    posix_getppid: ["int posix_getppid(void)", "Get the parent process id (POSIX.1, 4.1.1)"],
    posix_getpwnam: ["array posix_getpwnam(string groupname)", "User database access (POSIX.1, 9.2.2)"],
    posix_getpwuid: ["array posix_getpwuid(long uid)", "User database access (POSIX.1, 9.2.2)"],
    posix_getrlimit: ["array posix_getrlimit(void)", "Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)"],
    posix_getsid: ["int posix_getsid(void)", "Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)"],
    posix_getuid: ["int posix_getuid(void)", "Get the current user id (POSIX.1, 4.2.1)"],
    posix_initgroups: ["bool posix_initgroups(string name, int base_group_id)", "Calculate the group access list for the user specified in name."],
    posix_isatty: ["bool posix_isatty(int fd)", "Determine if filedesc is a tty (POSIX.1, 4.7.1)"],
    posix_kill: ["bool posix_kill(int pid, int sig)", "Send a signal to a process (POSIX.1, 3.3.2)"],
    posix_mkfifo: ["bool posix_mkfifo(string pathname, int mode)", "Make a FIFO special file (POSIX.1, 5.4.2)"],
    posix_mknod: ["bool posix_mknod(string pathname, int mode [, int major [, int minor]])", "Make a special or ordinary file (POSIX.1)"],
    posix_setegid: ["bool posix_setegid(long uid)", "Set effective group id"],
    posix_seteuid: ["bool posix_seteuid(long uid)", "Set effective user id"],
    posix_setgid: ["bool posix_setgid(int uid)", "Set group id (POSIX.1, 4.2.2)"],
    posix_setpgid: ["bool posix_setpgid(int pid, int pgid)", "Set process group id for job control (POSIX.1, 4.3.3)"],
    posix_setsid: ["int posix_setsid(void)", "Create session and set process group id (POSIX.1, 4.3.2)"],
    posix_setuid: ["bool posix_setuid(long uid)", "Set user id (POSIX.1, 4.2.2)"],
    posix_strerror: ["string posix_strerror(int errno)", "Retrieve the system error message associated with the given errno."],
    posix_times: ["array posix_times(void)", "Get process times (POSIX.1, 4.5.2)"],
    posix_ttyname: ["string posix_ttyname(int fd)", "Determine terminal device name (POSIX.1, 4.7.2)"],
    posix_uname: ["array posix_uname(void)", "Get system name (POSIX.1, 4.4.1)"],
    pow: ["number pow(number base, number exponent)", "Returns base raised to the power of exponent. Returns integer result when possible"],
    preg_filter: ["mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", "Perform Perl-style regular expression replacement and only return matches."],
    preg_grep: ["array preg_grep(string regex, array input [, int flags])", "Searches array and returns entries which match regex"],
    preg_last_error: ["int preg_last_error()", "Returns the error code of the last regexp execution."],
    preg_match: ["int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])", "Perform a Perl-style regular expression match"],
    preg_match_all: ["int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])", "Perform a Perl-style global regular expression match"],
    preg_quote: ["string preg_quote(string str [, string delim_char])", "Quote regular expression characters plus an optional character"],
    preg_replace: ["mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", "Perform Perl-style regular expression replacement."],
    preg_replace_callback: ["mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])", "Perform Perl-style regular expression replacement using replacement callback."],
    preg_split: ["array preg_split(string pattern, string subject [, int limit [, int flags]])", "Split string into an array using a perl-style regular expression as a delimiter"],
    prev: ["mixed prev(array array_arg)", "Move array argument's internal pointer to the previous element and return it"],
    print: ["int print(string arg)", "Output a string"],
    print_r: ["mixed print_r(mixed var [, bool return])", "Prints out or returns information about the specified variable"],
    printf: ["int printf(string format [, mixed arg1 [, mixed ...]])", "Output a formatted string"],
    proc_close: ["int proc_close(resource process)", "close a process opened by proc_open"],
    proc_get_status: ["array proc_get_status(resource process)", "get information about a process opened by proc_open"],
    proc_nice: ["bool proc_nice(int priority)", "Change the priority of the current process"],
    proc_open: ["resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])", "Run a process with more control over it's file descriptors"],
    proc_terminate: ["bool proc_terminate(resource process [, long signal])", "kill a process opened by proc_open"],
    property_exists: ["bool property_exists(mixed object_or_class, string property_name)", "Checks if the object or class has a property"],
    pspell_add_to_personal: ["bool pspell_add_to_personal(int pspell, string word)", "Adds a word to a personal list"],
    pspell_add_to_session: ["bool pspell_add_to_session(int pspell, string word)", "Adds a word to the current session"],
    pspell_check: ["bool pspell_check(int pspell, string word)", "Returns true if word is valid"],
    pspell_clear_session: ["bool pspell_clear_session(int pspell)", "Clears the current session"],
    pspell_config_create: ["int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])", "Create a new config to be used later to create a manager"],
    pspell_config_data_dir: ["bool pspell_config_data_dir(int conf, string directory)", "location of language data files"],
    pspell_config_dict_dir: ["bool pspell_config_dict_dir(int conf, string directory)", "location of the main word list"],
    pspell_config_ignore: ["bool pspell_config_ignore(int conf, int ignore)", "Ignore words <= n chars"],
    pspell_config_mode: ["bool pspell_config_mode(int conf, long mode)", "Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)"],
    pspell_config_personal: ["bool pspell_config_personal(int conf, string personal)", "Use a personal dictionary for this config"],
    pspell_config_repl: ["bool pspell_config_repl(int conf, string repl)", "Use a personal dictionary with replacement pairs for this config"],
    pspell_config_runtogether: ["bool pspell_config_runtogether(int conf, bool runtogether)", "Consider run-together words as valid components"],
    pspell_config_save_repl: ["bool pspell_config_save_repl(int conf, bool save)", "Save replacement pairs when personal list is saved for this config"],
    pspell_new: ["int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", "Load a dictionary"],
    pspell_new_config: ["int pspell_new_config(int config)", "Load a dictionary based on the given config"],
    pspell_new_personal: ["int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", "Load a dictionary with a personal wordlist"],
    pspell_save_wordlist: ["bool pspell_save_wordlist(int pspell)", "Saves the current (personal) wordlist"],
    pspell_store_replacement: ["bool pspell_store_replacement(int pspell, string misspell, string correct)", "Notify the dictionary of a user-selected replacement"],
    pspell_suggest: ["array pspell_suggest(int pspell, string word)", "Returns array of suggestions"],
    putenv: ["bool putenv(string setting)", "Set the value of an environment variable"],
    quoted_printable_decode: ["string quoted_printable_decode(string str)", "Convert a quoted-printable string to an 8 bit string"],
    quoted_printable_encode: ["string quoted_printable_encode(string str) */", 'PHP_FUNCTION(quoted_printable_encode) {  char *str, *new_str;  int str_len;  size_t new_str_len;   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) != SUCCESS) {   return;  }   if (!str_len) {   RETURN_EMPTY_STRING();  }   new_str = (char *)php_quot_print_encode((unsigned char *)str, (size_t)str_len, &new_str_len);  RETURN_STRINGL(new_str, new_str_len, 0); } /* }}}'],
    quotemeta: ["string quotemeta(string str)", "Quotes meta characters"],
    rad2deg: ["float rad2deg(float number)", "Converts the radian number to the equivalent number in degrees"],
    rand: ["int rand([int min, int max])", "Returns a random number"],
    range: ["array range(mixed low, mixed high[, int step])", "Create an array containing the range of integers or characters from low to high (inclusive)"],
    rawurldecode: ["string rawurldecode(string str)", "Decodes URL-encodes string"],
    rawurlencode: ["string rawurlencode(string str)", "URL-encodes string"],
    readdir: ["string readdir([resource dir_handle])", "Read directory entry from dir_handle"],
    readfile: ["int readfile(string filename [, bool use_include_path[, resource context]])", "Output a file or a URL"],
    readgzfile: ["int readgzfile(string filename [, int use_include_path])", "Output a .gz-file"],
    readline: ["string readline([string prompt])", "Reads a line"],
    readline_add_history: ["bool readline_add_history(string prompt)", "Adds a line to the history"],
    readline_callback_handler_install: ["void readline_callback_handler_install(string prompt, mixed callback)", "Initializes the readline callback interface and terminal, prints the prompt and returns immediately"],
    readline_callback_handler_remove: ["bool readline_callback_handler_remove()", "Removes a previously installed callback handler and restores terminal settings"],
    readline_callback_read_char: ["void readline_callback_read_char()", "Informs the readline callback interface that a character is ready for input"],
    readline_clear_history: ["bool readline_clear_history(void)", "Clears the history"],
    readline_completion_function: ["bool readline_completion_function(string funcname)", "Readline completion function?"],
    readline_info: ["mixed readline_info([string varname [, string newvalue]])", "Gets/sets various internal readline variables."],
    readline_list_history: ["array readline_list_history(void)", "Lists the history"],
    readline_on_new_line: ["void readline_on_new_line(void)", "Inform readline that the cursor has moved to a new line"],
    readline_read_history: ["bool readline_read_history([string filename])", "Reads the history"],
    readline_redisplay: ["void readline_redisplay(void)", "Ask readline to redraw the display"],
    readline_write_history: ["bool readline_write_history([string filename])", "Writes the history"],
    readlink: ["string readlink(string filename)", "Return the target of a symbolic link"],
    realpath: ["string realpath(string path)", "Return the resolved path"],
    realpath_cache_get: ["bool realpath_cache_get()", "Get current size of realpath cache"],
    realpath_cache_size: ["bool realpath_cache_size()", "Get current size of realpath cache"],
    recode_file: ["bool recode_file(string request, resource input, resource output)", "Recode file input into file output according to request"],
    recode_string: ["string recode_string(string request, string str)", "Recode string str according to request string"],
    register_shutdown_function: ["void register_shutdown_function(string function_name)", "Register a user-level function to be called on request termination"],
    register_tick_function: ["bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])", "Registers a tick callback function"],
    rename: ["bool rename(string old_name, string new_name[, resource context])", "Rename a file"],
    require: ["bool require(string path)", "Includes and evaluates the specified file, erroring if the file cannot be included"],
    require_once: ["bool require_once(string path)", "Includes and evaluates the specified file, erroring if the file cannot be included"],
    reset: ["mixed reset(array array_arg)", "Set array argument's internal pointer to the first element and return it"],
    restore_error_handler: ["void restore_error_handler(void)", "Restores the previously defined error handler function"],
    restore_exception_handler: ["void restore_exception_handler(void)", "Restores the previously defined exception handler function"],
    restore_include_path: ["void restore_include_path()", "Restore the value of the include_path configuration option"],
    rewind: ["bool rewind(resource fp)", "Rewind the position of a file pointer"],
    rewinddir: ["void rewinddir([resource dir_handle])", "Rewind dir_handle back to the start"],
    rmdir: ["bool rmdir(string dirname[, resource context])", "Remove a directory"],
    round: ["float round(float number [, int precision [, int mode]])", "Returns the number rounded to specified precision"],
    rsort: ["bool rsort(array &array_arg [, int sort_flags])", "Sort an array in reverse order"],
    rtrim: ["string rtrim(string str [, string character_mask])", "Removes trailing whitespace"],
    scandir: ["array scandir(string dir [, int sorting_order [, resource context]])", "List files & directories inside the specified path"],
    sem_acquire: ["bool sem_acquire(resource id)", "Acquires the semaphore with the given id, blocking if necessary"],
    sem_get: ["resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])", "Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously"],
    sem_release: ["bool sem_release(resource id)", "Releases the semaphore with the given id"],
    sem_remove: ["bool sem_remove(resource id)", "Removes semaphore from Unix systems"],
    serialize: ["string serialize(mixed variable)", "Returns a string representation of variable (which can later be unserialized)"],
    session_cache_expire: ["int session_cache_expire([int new_cache_expire])", "Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire"],
    session_cache_limiter: ["string session_cache_limiter([string new_cache_limiter])", "Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter"],
    session_decode: ["bool session_decode(string data)", "Deserializes data and reinitializes the variables"],
    session_destroy: ["bool session_destroy(void)", "Destroy the current session and all data associated with it"],
    session_encode: ["string session_encode(void)", "Serializes the current setup and returns the serialized representation"],
    session_get_cookie_params: ["array session_get_cookie_params(void)", "Return the session cookie parameters"],
    session_id: ["string session_id([string newid])", "Return the current session id. If newid is given, the session id is replaced with newid"],
    session_is_registered: ["bool session_is_registered(string varname)", "Checks if a variable is registered in session"],
    session_module_name: ["string session_module_name([string newname])", "Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname"],
    session_name: ["string session_name([string newname])", "Return the current session name. If newname is given, the session name is replaced with newname"],
    session_regenerate_id: ["bool session_regenerate_id([bool delete_old_session])", "Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session."],
    session_register: ["bool session_register(mixed var_names [, mixed ...])", "Adds varname(s) to the list of variables which are freezed at the session end"],
    session_save_path: ["string session_save_path([string newname])", "Return the current save path passed to module_name. If newname is given, the save path is replaced with newname"],
    session_set_cookie_params: ["void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])", "Set session cookie parameters"],
    session_set_save_handler: ["void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)", "Sets user-level functions"],
    session_start: ["bool session_start(void)", "Begin session - reinitializes freezed variables, registers browsers etc"],
    session_unregister: ["bool session_unregister(string varname)", "Removes varname from the list of variables which are freezed at the session end"],
    session_unset: ["void session_unset(void)", "Unset all registered variables"],
    session_write_close: ["void session_write_close(void)", "Write session data and end session"],
    set_error_handler: ["string set_error_handler(string error_handler [, int error_types])", "Sets a user-defined error handler function.  Returns the previously defined error handler, or false on error"],
    set_exception_handler: ["string set_exception_handler(callable exception_handler)", "Sets a user-defined exception handler function.  Returns the previously defined exception handler, or false on error"],
    set_include_path: ["string set_include_path(string new_include_path)", "Sets the include_path configuration option"],
    set_magic_quotes_runtime: ["bool set_magic_quotes_runtime(int new_setting)", "Set the current active configuration setting of magic_quotes_runtime and return previous"],
    set_time_limit: ["bool set_time_limit(int seconds)", "Sets the maximum time a script can run"],
    setcookie: ["bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", "Send a cookie"],
    setlocale: ["string setlocale(mixed category, string locale [, string ...])", "Set locale information"],
    setrawcookie: ["bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", "Send a cookie with no url encoding of the value"],
    settype: ["bool settype(mixed var, string type)", "Set the type of the variable"],
    sha1: ["string sha1(string str [, bool raw_output])", "Calculate the sha1 hash of a string"],
    sha1_file: ["string sha1_file(string filename [, bool raw_output])", "Calculate the sha1 hash of given filename"],
    shell_exec: ["string shell_exec(string cmd)", "Execute command via shell and return complete output as string"],
    shm_attach: ["int shm_attach(int key [, int memsize [, int perm]])", "Creates or open a shared memory segment"],
    shm_detach: ["bool shm_detach(resource shm_identifier)", "Disconnects from shared memory segment"],
    shm_get_var: ["mixed shm_get_var(resource id, int variable_key)", "Returns a variable from shared memory"],
    shm_has_var: ["bool shm_has_var(resource id, int variable_key)", "Checks whether a specific entry exists"],
    shm_put_var: ["bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)", "Inserts or updates a variable in shared memory"],
    shm_remove: ["bool shm_remove(resource shm_identifier)", "Removes shared memory from Unix systems"],
    shm_remove_var: ["bool shm_remove_var(resource id, int variable_key)", "Removes variable from shared memory"],
    shmop_close: ["void shmop_close (int shmid)", "closes a shared memory segment"],
    shmop_delete: ["bool shmop_delete (int shmid)", "mark segment for deletion"],
    shmop_open: ["int shmop_open (int key, string flags, int mode, int size)", "gets and attaches a shared memory segment"],
    shmop_read: ["string shmop_read (int shmid, int start, int count)", "reads from a shm segment"],
    shmop_size: ["int shmop_size (int shmid)", "returns the shm size"],
    shmop_write: ["int shmop_write (int shmid, string data, int offset)", "writes to a shared memory segment"],
    shuffle: ["bool shuffle(array array_arg)", "Randomly shuffle the contents of an array"],
    similar_text: ["int similar_text(string str1, string str2 [, float percent])", "Calculates the similarity between two strings"],
    simplexml_import_dom: ["simplemxml_element simplexml_import_dom(domNode node [, string class_name])", "Get a simplexml_element object from dom to allow for processing"],
    simplexml_load_file: ["simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])", "Load a filename and return a simplexml_element object to allow for processing"],
    simplexml_load_string: ["simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])", "Load a string and return a simplexml_element object to allow for processing"],
    sin: ["float sin(float number)", "Returns the sine of the number in radians"],
    sinh: ["float sinh(float number)", "Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2"],
    sleep: ["void sleep(int seconds)", "Delay for a given number of seconds"],
    smfi_addheader: ["bool smfi_addheader(string headerf, string headerv)", "Adds a header to the current message."],
    smfi_addrcpt: ["bool smfi_addrcpt(string rcpt)", "Add a recipient to the message envelope."],
    smfi_chgheader: ["bool smfi_chgheader(string headerf, string headerv)", "Changes a header's value for the current message."],
    smfi_delrcpt: ["bool smfi_delrcpt(string rcpt)", "Removes the named recipient from the current message's envelope."],
    smfi_getsymval: ["string smfi_getsymval(string macro)", "Returns the value of the given macro or NULL if the macro is not defined."],
    smfi_replacebody: ["bool smfi_replacebody(string body)", "Replaces the body of the current message. If called more than once,    subsequent calls result in data being appended to the new body."],
    smfi_setflags: ["void smfi_setflags(long flags)", "Sets the flags describing the actions the filter may take."],
    smfi_setreply: ["bool smfi_setreply(string rcode, string xcode, string message)", "Directly set the SMTP error reply code for this connection.    This code will be used on subsequent error replies resulting from actions taken by this filter."],
    smfi_settimeout: ["void smfi_settimeout(long timeout)", "Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket."],
    snmp2_get: ["string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object"],
    snmp2_getnext: ["string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object"],
    snmp2_real_walk: ["array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects including their respective object id withing the specified one"],
    snmp2_set: ["int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", "Set the value of a SNMP object"],
    snmp2_walk: ["array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects under the specified object id"],
    snmp3_get: ["int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object"],
    snmp3_getnext: ["int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object"],
    snmp3_real_walk: ["int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object"],
    snmp3_set: ["int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])", "Fetch the value of a SNMP object"],
    snmp3_walk: ["int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", "Fetch the value of a SNMP object"],
    snmp_get_quick_print: ["bool snmp_get_quick_print(void)", "Return the current status of quick_print"],
    snmp_get_valueretrieval: ["int snmp_get_valueretrieval()", "Return the method how the SNMP values will be returned"],
    snmp_read_mib: ["int snmp_read_mib(string filename)", "Reads and parses a MIB file into the active MIB tree."],
    snmp_set_enum_print: ["void snmp_set_enum_print(int enum_print)", "Return all values that are enums with their enum value instead of the raw integer"],
    snmp_set_oid_output_format: ["void snmp_set_oid_output_format(int oid_format)", "Set the OID output format."],
    snmp_set_quick_print: ["void snmp_set_quick_print(int quick_print)", "Return all objects including their respective object id withing the specified one"],
    snmp_set_valueretrieval: ["void snmp_set_valueretrieval(int method)", "Specify the method how the SNMP values will be returned"],
    snmpget: ["string snmpget(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object"],
    snmpgetnext: ["string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])", "Fetch a SNMP object"],
    snmprealwalk: ["array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects including their respective object id withing the specified one"],
    snmpset: ["int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", "Set the value of a SNMP object"],
    snmpwalk: ["array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])", "Return all objects under the specified object id"],
    socket_accept: ["resource socket_accept(resource socket)", "Accepts a connection on the listening socket fd"],
    socket_bind: ["bool socket_bind(resource socket, string addr [, int port])", "Binds an open socket to a listening port, port is only specified in AF_INET family."],
    socket_clear_error: ["void socket_clear_error([resource socket])", "Clears the error on the socket or the last error code."],
    socket_close: ["void socket_close(resource socket)", "Closes a file descriptor"],
    socket_connect: ["bool socket_connect(resource socket, string addr [, int port])", "Opens a connection to addr:port on the socket specified by socket"],
    socket_create: ["resource socket_create(int domain, int type, int protocol)", "Creates an endpoint for communication in the domain specified by domain, of type specified by type"],
    socket_create_listen: ["resource socket_create_listen(int port[, int backlog])", "Opens a socket on port to accept connections"],
    socket_create_pair: ["bool socket_create_pair(int domain, int type, int protocol, array &fd)", "Creates a pair of indistinguishable sockets and stores them in fds."],
    socket_get_option: ["mixed socket_get_option(resource socket, int level, int optname)", "Gets socket options for the socket"],
    socket_getpeername: ["bool socket_getpeername(resource socket, string &addr[, int &port])", "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type."],
    socket_getsockname: ["bool socket_getsockname(resource socket, string &addr[, int &port])", "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type."],
    socket_last_error: ["int socket_last_error([resource socket])", "Returns the last socket error (either the last used or the provided socket resource)"],
    socket_listen: ["bool socket_listen(resource socket[, int backlog])", "Sets the maximum number of connections allowed to be waited for on the socket specified by fd"],
    socket_read: ["string socket_read(resource socket, int length [, int type])", "Reads a maximum of length bytes from socket"],
    socket_recv: ["int socket_recv(resource socket, string &buf, int len, int flags)", "Receives data from a connected socket"],
    socket_recvfrom: ["int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])", "Receives data from a socket, connected or not"],
    socket_select: ["int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])", "Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec"],
    socket_send: ["int socket_send(resource socket, string buf, int len, int flags)", "Sends data to a connected socket"],
    socket_sendto: ["int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])", "Sends a message to a socket, whether it is connected or not"],
    socket_set_block: ["bool socket_set_block(resource socket)", "Sets blocking mode on a socket resource"],
    socket_set_nonblock: ["bool socket_set_nonblock(resource socket)", "Sets nonblocking mode on a socket resource"],
    socket_set_option: ["bool socket_set_option(resource socket, int level, int optname, int|array optval)", "Sets socket options for the socket"],
    socket_shutdown: ["bool socket_shutdown(resource socket[, int how])", "Shuts down a socket for receiving, sending, or both."],
    socket_strerror: ["string socket_strerror(int errno)", "Returns a string describing an error"],
    socket_write: ["int socket_write(resource socket, string buf[, int length])", "Writes the buffer to the socket resource, length is optional"],
    solid_fetch_prev: ["bool solid_fetch_prev(resource result_id)", ""],
    sort: ["bool sort(array &array_arg [, int sort_flags])", "Sort an array"],
    soundex: ["string soundex(string str)", "Calculate the soundex key of a string"],
    spl_autoload: ["void spl_autoload(string class_name [, string file_extensions])", "Default implementation for __autoload()"],
    spl_autoload_call: ["void spl_autoload_call(string class_name)", "Try all registerd autoload function to load the requested class"],
    spl_autoload_extensions: ["string spl_autoload_extensions([string file_extensions])", "Register and return default file extensions for spl_autoload"],
    spl_autoload_functions: ["false|array spl_autoload_functions()", "Return all registered __autoload() functionns"],
    spl_autoload_register: ['bool spl_autoload_register([mixed autoload_function = "spl_autoload" [, throw = true [, prepend]]])', "Register given function as __autoload() implementation"],
    spl_autoload_unregister: ["bool spl_autoload_unregister(mixed autoload_function)", "Unregister given function as __autoload() implementation"],
    spl_classes: ["array spl_classes()", "Return an array containing the names of all clsses and interfaces defined in SPL"],
    spl_object_hash: ["string spl_object_hash(object obj)", "Return hash id for given object"],
    split: ["array split(string pattern, string string [, int limit])", "Split string into array by regular expression"],
    spliti: ["array spliti(string pattern, string string [, int limit])", "Split string into array by regular expression case-insensitive"],
    sprintf: ["string sprintf(string format [, mixed arg1 [, mixed ...]])", "Return a formatted string"],
    sql_regcase: ["string sql_regcase(string string)", "Make regular expression for case insensitive match"],
    sqlite_array_query: ["array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])", "Executes a query against a given database and returns an array of arrays."],
    sqlite_busy_timeout: ["void sqlite_busy_timeout(resource db, int ms)", "Set busy timeout duration. If ms <= 0, all busy handlers are disabled."],
    sqlite_changes: ["int sqlite_changes(resource db)", "Returns the number of rows that were changed by the most recent SQL statement."],
    sqlite_close: ["void sqlite_close(resource db)", "Closes an open sqlite database."],
    sqlite_column: ["mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])", "Fetches a column from the current row of a result set."],
    sqlite_create_aggregate: ["bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])", "Registers an aggregate function for queries."],
    sqlite_create_function: ["bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])", 'Registers a "regular" function for queries.'],
    sqlite_current: ["array sqlite_current(resource result [, int result_type [, bool decode_binary]])", "Fetches the current row from a result set as an array."],
    sqlite_error_string: ["string sqlite_error_string(int error_code)", "Returns the textual description of an error code."],
    sqlite_escape_string: ["string sqlite_escape_string(string item)", "Escapes a string for use as a query parameter."],
    sqlite_exec: ["boolean sqlite_exec(string query, resource db[, string &error_message])", "Executes a result-less query against a given database"],
    sqlite_factory: ["object sqlite_factory(string filename [, int mode [, string &error_message]])", "Opens a SQLite database and creates an object for it. Will create the database if it does not exist."],
    sqlite_fetch_all: ["array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])", "Fetches all rows from a result set as an array of arrays."],
    sqlite_fetch_array: ["array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])", "Fetches the next row from a result set as an array."],
    sqlite_fetch_column_types: ["resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])", "Return an array of column types from a particular table."],
    sqlite_fetch_object: ["object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])", "Fetches the next row from a result set as an object."],
    sqlite_fetch_single: ["string sqlite_fetch_single(resource result [, bool decode_binary])", "Fetches the first column of a result set as a string."],
    sqlite_field_name: ["string sqlite_field_name(resource result, int field_index)", "Returns the name of a particular field of a result set."],
    sqlite_has_prev: ["bool sqlite_has_prev(resource result)", "* Returns whether a previous row is available."],
    sqlite_key: ["int sqlite_key(resource result)", "Return the current row index of a buffered result."],
    sqlite_last_error: ["int sqlite_last_error(resource db)", "Returns the error code of the last error for a database."],
    sqlite_last_insert_rowid: ["int sqlite_last_insert_rowid(resource db)", "Returns the rowid of the most recently inserted row."],
    sqlite_libencoding: ["string sqlite_libencoding()", "Returns the encoding (iso8859 or UTF-8) of the linked SQLite library."],
    sqlite_libversion: ["string sqlite_libversion()", "Returns the version of the linked SQLite library."],
    sqlite_next: ["bool sqlite_next(resource result)", "Seek to the next row number of a result set."],
    sqlite_num_fields: ["int sqlite_num_fields(resource result)", "Returns the number of fields in a result set."],
    sqlite_num_rows: ["int sqlite_num_rows(resource result)", "Returns the number of rows in a buffered result set."],
    sqlite_open: ["resource sqlite_open(string filename [, int mode [, string &error_message]])", "Opens a SQLite database. Will create the database if it does not exist."],
    sqlite_popen: ["resource sqlite_popen(string filename [, int mode [, string &error_message]])", "Opens a persistent handle to a SQLite database. Will create the database if it does not exist."],
    sqlite_prev: ["bool sqlite_prev(resource result)", "* Seek to the previous row number of a result set."],
    sqlite_query: ["resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])", "Executes a query against a given database and returns a result handle."],
    sqlite_rewind: ["bool sqlite_rewind(resource result)", "Seek to the first row number of a buffered result set."],
    sqlite_seek: ["bool sqlite_seek(resource result, int row)", "Seek to a particular row number of a buffered result set."],
    sqlite_single_query: ["array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])", "Executes a query and returns either an array for one single column or the value of the first row."],
    sqlite_udf_decode_binary: ["string sqlite_udf_decode_binary(string data)", "Decode binary encoding on a string parameter passed to an UDF."],
    sqlite_udf_encode_binary: ["string sqlite_udf_encode_binary(string data)", "Apply binary encoding (if required) to a string to return from an UDF."],
    sqlite_unbuffered_query: ["resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])", "Executes a query that does not prefetch and buffer all data."],
    sqlite_valid: ["bool sqlite_valid(resource result)", "Returns whether more rows are available."],
    sqrt: ["float sqrt(float number)", "Returns the square root of the number"],
    srand: ["void srand([int seed])", "Seeds random number generator"],
    sscanf: ["mixed sscanf(string str, string format [, string ...])", "Implements an ANSI C compatible sscanf"],
    stat: ["array stat(string filename)", "Give information about a file"],
    str_getcsv: ["array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])", "Parse a CSV string into an array"],
    str_ireplace: ["mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])", "Replaces all occurrences of search in haystack with replace / case-insensitive"],
    str_pad: ["string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])", "Returns input string padded on the left or right to specified length with pad_string"],
    str_repeat: ["string str_repeat(string input, int mult)", "Returns the input string repeat mult times"],
    str_replace: ["mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])", "Replaces all occurrences of search in haystack with replace"],
    str_rot13: ["string str_rot13(string str)", "Perform the rot13 transform on a string"],
    str_shuffle: ["void str_shuffle(string str)", "Shuffles string. One permutation of all possible is created"],
    str_split: ["array str_split(string str [, int split_length])", "Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long."],
    str_word_count: ["mixed str_word_count(string str, [int format [, string charlist]])", 'Counts the number of words inside a string. If format of 1 is specified,     then the function will return an array containing all the words     found inside the string. If format of 2 is specified, then the function     will return an associated array where the position of the word is the key     and the word itself is the value.          For the purpose of this function, \'word\' is defined as a locale dependent     string containing alphabetic characters, which also may contain, but not start     with "\'" and "-" characters.'],
    strcasecmp: ["int strcasecmp(string str1, string str2)", "Binary safe case-insensitive string comparison"],
    strchr: ["string strchr(string haystack, string needle)", "An alias for strstr"],
    strcmp: ["int strcmp(string str1, string str2)", "Binary safe string comparison"],
    strcoll: ["int strcoll(string str1, string str2)", "Compares two strings using the current locale"],
    strcspn: ["int strcspn(string str, string mask [, start [, len]])", "Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)"],
    stream_bucket_append: ["void stream_bucket_append(resource brigade, resource bucket)", "Append bucket to brigade"],
    stream_bucket_make_writeable: ["object stream_bucket_make_writeable(resource brigade)", "Return a bucket object from the brigade for operating on"],
    stream_bucket_new: ["resource stream_bucket_new(resource stream, string buffer)", "Create a new bucket for use on the current stream"],
    stream_bucket_prepend: ["void stream_bucket_prepend(resource brigade, resource bucket)", "Prepend bucket to brigade"],
    stream_context_create: ["resource stream_context_create([array options[, array params]])", "Create a file context and optionally set parameters"],
    stream_context_get_default: ["resource stream_context_get_default([array options])", "Get a handle on the default file/stream context and optionally set parameters"],
    stream_context_get_options: ["array stream_context_get_options(resource context|resource stream)", "Retrieve options for a stream/wrapper/context"],
    stream_context_get_params: ["array stream_context_get_params(resource context|resource stream)", "Get parameters of a file context"],
    stream_context_set_default: ["resource stream_context_set_default(array options)", "Set default file/stream context, returns the context as a resource"],
    stream_context_set_option: ["bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)", "Set an option for a wrapper"],
    stream_context_set_params: ["bool stream_context_set_params(resource context|resource stream, array options)", "Set parameters for a file context"],
    stream_copy_to_stream: ["long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])", "Reads up to maxlen bytes from source stream and writes them to dest stream."],
    stream_filter_append: ["resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])", "Append a filter to a stream"],
    stream_filter_prepend: ["resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])", "Prepend a filter to a stream"],
    stream_filter_register: ["bool stream_filter_register(string filtername, string classname)", "Registers a custom filter handler class"],
    stream_filter_remove: ["bool stream_filter_remove(resource stream_filter)", "Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource"],
    stream_get_contents: ["string stream_get_contents(resource source [, long maxlen [, long offset]])", "Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string."],
    stream_get_filters: ["array stream_get_filters(void)", "Returns a list of registered filters"],
    stream_get_line: ["string stream_get_line(resource stream, int maxlen [, string ending])", "Read up to maxlen bytes from a stream or until the ending string is found"],
    stream_get_meta_data: ["array stream_get_meta_data(resource fp)", "Retrieves header/meta data from streams/file pointers"],
    stream_get_transports: ["array stream_get_transports()", "Retrieves list of registered socket transports"],
    stream_get_wrappers: ["array stream_get_wrappers()", "Retrieves list of registered stream wrappers"],
    stream_is_local: ["bool stream_is_local(resource stream|string url)", ""],
    stream_resolve_include_path: ["string stream_resolve_include_path(string filename)", "Determine what file will be opened by calls to fopen() with a relative path"],
    stream_select: ["int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])", "Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec"],
    stream_set_blocking: ["bool stream_set_blocking(resource socket, int mode)", "Set blocking/non-blocking mode on a socket or stream"],
    stream_set_timeout: ["bool stream_set_timeout(resource stream, int seconds [, int microseconds])", "Set timeout on stream read to seconds + microseonds"],
    stream_set_write_buffer: ["int stream_set_write_buffer(resource fp, int buffer)", "Set file write buffer"],
    stream_socket_accept: ["resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])", "Accept a client connection from a server socket"],
    stream_socket_client: ["resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])", "Open a client connection to a remote address"],
    stream_socket_enable_crypto: ["int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])", "Enable or disable a specific kind of crypto on the stream"],
    stream_socket_get_name: ["string stream_socket_get_name(resource stream, bool want_peer)", "Returns either the locally bound or remote name for a socket stream"],
    stream_socket_pair: ["array stream_socket_pair(int domain, int type, int protocol)", "Creates a pair of connected, indistinguishable socket streams"],
    stream_socket_recvfrom: ["string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])", "Receives data from a socket stream"],
    stream_socket_sendto: ["long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])", "Send data to a socket stream.  If target_addr is specified it must be in dotted quad (or [ipv6]) format"],
    stream_socket_server: ["resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])", "Create a server socket bound to localaddress"],
    stream_socket_shutdown: ["int stream_socket_shutdown(resource stream, int how)", "causes all or part of a full-duplex connection on the socket associated  with stream to be shut down.  If how is SHUT_RD,  further receptions will  be disallowed. If how is SHUT_WR, further transmissions will be disallowed.  If how is SHUT_RDWR,  further  receptions and transmissions will be  disallowed."],
    stream_supports_lock: ["bool stream_supports_lock(resource stream)", "Tells whether the stream supports locking through flock()."],
    stream_wrapper_register: ["bool stream_wrapper_register(string protocol, string classname[, integer flags])", "Registers a custom URL protocol handler class"],
    stream_wrapper_restore: ["bool stream_wrapper_restore(string protocol)", "Restore the original protocol handler, overriding if necessary"],
    stream_wrapper_unregister: ["bool stream_wrapper_unregister(string protocol)", "Unregister a wrapper for the life of the current request."],
    strftime: ["string strftime(string format [, int timestamp])", "Format a local time/date according to locale settings"],
    strip_tags: ["string strip_tags(string str [, string allowable_tags])", "Strips HTML and PHP tags from a string"],
    stripcslashes: ["string stripcslashes(string str)", "Strips backslashes from a string. Uses C-style conventions"],
    stripos: ["int stripos(string haystack, string needle [, int offset])", "Finds position of first occurrence of a string within another, case insensitive"],
    stripslashes: ["string stripslashes(string str)", "Strips backslashes from a string"],
    stristr: ["string stristr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another, case insensitive"],
    strlen: ["int strlen(string str)", "Get string length"],
    strnatcasecmp: ["int strnatcasecmp(string s1, string s2)", "Returns the result of case-insensitive string comparison using 'natural' algorithm"],
    strnatcmp: ["int strnatcmp(string s1, string s2)", "Returns the result of string comparison using 'natural' algorithm"],
    strncasecmp: ["int strncasecmp(string str1, string str2, int len)", "Binary safe string comparison"],
    strncmp: ["int strncmp(string str1, string str2, int len)", "Binary safe string comparison"],
    strpbrk: ["array strpbrk(string haystack, string char_list)", "Search a string for any of a set of characters"],
    strpos: ["int strpos(string haystack, string needle [, int offset])", "Finds position of first occurrence of a string within another"],
    strptime: ["string strptime(string timestamp, string format)", "Parse a time/date generated with strftime()"],
    strrchr: ["string strrchr(string haystack, string needle)", "Finds the last occurrence of a character in a string within another"],
    strrev: ["string strrev(string str)", "Reverse a string"],
    strripos: ["int strripos(string haystack, string needle [, int offset])", "Finds position of last occurrence of a string within another string"],
    strrpos: ["int strrpos(string haystack, string needle [, int offset])", "Finds position of last occurrence of a string within another string"],
    strspn: ["int strspn(string str, string mask [, start [, len]])", "Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)"],
    strstr: ["string strstr(string haystack, string needle[, bool part])", "Finds first occurrence of a string within another"],
    strtok: ["string strtok([string str,] string token)", "Tokenize a string"],
    strtolower: ["string strtolower(string str)", "Makes a string lowercase"],
    strtotime: ["int strtotime(string time [, int now ])", "Convert string representation of date and time to a timestamp"],
    strtoupper: ["string strtoupper(string str)", "Makes a string uppercase"],
    strtr: ["string strtr(string str, string from[, string to])", "Translates characters in str using given translation tables"],
    strval: ["string strval(mixed var)", "Get the string value of a variable"],
    substr: ["string substr(string str, int start [, int length])", "Returns part of a string"],
    substr_compare: ["int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])", "Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters"],
    substr_count: ["int substr_count(string haystack, string needle [, int offset [, int length]])", "Returns the number of times a substring occurs in the string"],
    substr_replace: ["mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])", "Replaces part of a string with another string"],
    sybase_affected_rows: ["int sybase_affected_rows([resource link_id])", "Get number of affected rows in last query"],
    sybase_close: ["bool sybase_close([resource link_id])", "Close Sybase connection"],
    sybase_connect: ["int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])", "Open Sybase server connection"],
    sybase_data_seek: ["bool sybase_data_seek(resource result, int offset)", "Move internal row pointer"],
    sybase_deadlock_retry_count: ["void sybase_deadlock_retry_count(int retry_count)", "Sets deadlock retry count"],
    sybase_fetch_array: ["array sybase_fetch_array(resource result)", "Fetch row as array"],
    sybase_fetch_assoc: ["array sybase_fetch_assoc(resource result)", "Fetch row as array without numberic indices"],
    sybase_fetch_field: ["object sybase_fetch_field(resource result [, int offset])", "Get field information"],
    sybase_fetch_object: ["object sybase_fetch_object(resource result [, mixed object])", "Fetch row as object"],
    sybase_fetch_row: ["array sybase_fetch_row(resource result)", "Get row as enumerated array"],
    sybase_field_seek: ["bool sybase_field_seek(resource result, int offset)", "Set field offset"],
    sybase_free_result: ["bool sybase_free_result(resource result)", "Free result memory"],
    sybase_get_last_message: ["string sybase_get_last_message(void)", "Returns the last message from server (over min_message_severity)"],
    sybase_min_client_severity: ["void sybase_min_client_severity(int severity)", "Sets minimum client severity"],
    sybase_min_server_severity: ["void sybase_min_server_severity(int severity)", "Sets minimum server severity"],
    sybase_num_fields: ["int sybase_num_fields(resource result)", "Get number of fields in result"],
    sybase_num_rows: ["int sybase_num_rows(resource result)", "Get number of rows in result"],
    sybase_pconnect: ["int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])", "Open persistent Sybase connection"],
    sybase_query: ["int sybase_query(string query [, resource link_id])", "Send Sybase query"],
    sybase_result: ["string sybase_result(resource result, int row, mixed field)", "Get result data"],
    sybase_select_db: ["bool sybase_select_db(string database [, resource link_id])", "Select Sybase database"],
    sybase_set_message_handler: ["bool sybase_set_message_handler(mixed error_func [, resource connection])", "Set the error handler, to be called when a server message is raised.     If error_func is NULL the handler will be deleted"],
    sybase_unbuffered_query: ["int sybase_unbuffered_query(string query [, resource link_id])", "Send Sybase query"],
    symlink: ["int symlink(string target, string link)", "Create a symbolic link"],
    sys_get_temp_dir: ["string sys_get_temp_dir()", "Returns directory path used for temporary files"],
    sys_getloadavg: ["array sys_getloadavg()", ""],
    syslog: ["bool syslog(int priority, string message)", "Generate a system log message"],
    system: ["int system(string command [, int &return_value])", "Execute an external program and display output"],
    tan: ["float tan(float number)", "Returns the tangent of the number in radians"],
    tanh: ["float tanh(float number)", "Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)"],
    tempnam: ["string tempnam(string dir, string prefix)", "Create a unique filename in a directory"],
    textdomain: ["string textdomain(string domain)", 'Set the textdomain to "domain". Returns the current domain'],
    tidy_access_count: ["int tidy_access_count()", "Returns the Number of Tidy accessibility warnings encountered for specified document."],
    tidy_clean_repair: ["boolean tidy_clean_repair()", "Execute configured cleanup and repair operations on parsed markup"],
    tidy_config_count: ["int tidy_config_count()", "Returns the Number of Tidy configuration errors encountered for specified document."],
    tidy_diagnose: ["boolean tidy_diagnose()", "Run configured diagnostics on parsed and repaired markup."],
    tidy_error_count: ["int tidy_error_count()", "Returns the Number of Tidy errors encountered for specified document."],
    tidy_get_body: ["TidyNode tidy_get_body(resource tidy)", "Returns a TidyNode Object starting from the <BODY> tag of the tidy parse tree"],
    tidy_get_config: ["array tidy_get_config()", "Get current Tidy configuarion"],
    tidy_get_error_buffer: ["string tidy_get_error_buffer([boolean detailed])", "Return warnings and errors which occured parsing the specified document"],
    tidy_get_head: ["TidyNode tidy_get_head()", "Returns a TidyNode Object starting from the <HEAD> tag of the tidy parse tree"],
    tidy_get_html: ["TidyNode tidy_get_html()", "Returns a TidyNode Object starting from the <HTML> tag of the tidy parse tree"],
    tidy_get_html_ver: ["int tidy_get_html_ver()", "Get the Detected HTML version for the specified document."],
    tidy_get_opt_doc: ["string tidy_get_opt_doc(tidy resource, string optname)", "Returns the documentation for the given option name"],
    tidy_get_output: ["string tidy_get_output()", "Return a string representing the parsed tidy markup"],
    tidy_get_release: ["string tidy_get_release()", "Get release date (version) for Tidy library"],
    tidy_get_root: ["TidyNode tidy_get_root()", "Returns a TidyNode Object representing the root of the tidy parse tree"],
    tidy_get_status: ["int tidy_get_status()", "Get status of specfied document."],
    tidy_getopt: ["mixed tidy_getopt(string option)", "Returns the value of the specified configuration option for the tidy document."],
    tidy_is_xhtml: ["boolean tidy_is_xhtml()", "Indicates if the document is a XHTML document."],
    tidy_is_xml: ["boolean tidy_is_xml()", "Indicates if the document is a generic (non HTML/XHTML) XML document."],
    tidy_parse_file: ["boolean tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])", "Parse markup in file or URI"],
    tidy_parse_string: ["bool tidy_parse_string(string input [, mixed config_options [, string encoding]])", "Parse a document stored in a string"],
    tidy_repair_file: ["boolean tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])", "Repair a file using an optionally provided configuration file"],
    tidy_repair_string: ["boolean tidy_repair_string(string data [, mixed config_file [, string encoding]])", "Repair a string using an optionally provided configuration file"],
    tidy_warning_count: ["int tidy_warning_count()", "Returns the Number of Tidy warnings encountered for specified document."],
    time: ["int time(void)", "Return current UNIX timestamp"],
    time_nanosleep: ["mixed time_nanosleep(long seconds, long nanoseconds)", "Delay for a number of seconds and nano seconds"],
    time_sleep_until: ["mixed time_sleep_until(float timestamp)", "Make the script sleep until the specified time"],
    timezone_abbreviations_list: ["array timezone_abbreviations_list()", "Returns associative array containing dst, offset and the timezone name"],
    timezone_identifiers_list: ["array timezone_identifiers_list([long what[, string country]])", "Returns numerically index array with all timezone identifiers."],
    timezone_location_get: ["array timezone_location_get()", "Returns location information for a timezone, including country code, latitude/longitude and comments"],
    timezone_name_from_abbr: ["string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])", "Returns the timezone name from abbrevation"],
    timezone_name_get: ["string timezone_name_get(DateTimeZone object)", "Returns the name of the timezone."],
    timezone_offset_get: ["long timezone_offset_get(DateTimeZone object, DateTime object)", "Returns the timezone offset."],
    timezone_open: ["DateTimeZone timezone_open(string timezone)", "Returns new DateTimeZone object"],
    timezone_transitions_get: ["array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])", "Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone."],
    timezone_version_get: ["array timezone_version_get()", "Returns the Olson database version number."],
    tmpfile: ["resource tmpfile(void)", "Create a temporary file that will be deleted automatically after use"],
    token_get_all: ["array token_get_all(string source)", ""],
    token_name: ["string token_name(int type)", ""],
    touch: ["bool touch(string filename [, int time [, int atime]])", "Set modification time of file"],
    trigger_error: ["void trigger_error(string messsage [, int error_type])", "Generates a user-level error/warning/notice message"],
    trim: ["string trim(string str [, string character_mask])", "Strips whitespace from the beginning and end of a string"],
    uasort: ["bool uasort(array array_arg, string cmp_function)", "Sort an array with a user-defined comparison function and maintain index association"],
    ucfirst: ["string ucfirst(string str)", "Make a string's first character lowercase"],
    ucwords: ["string ucwords(string str)", "Uppercase the first character of every word in a string"],
    uksort: ["bool uksort(array array_arg, string cmp_function)", "Sort an array by keys using a user-defined comparison function"],
    umask: ["int umask([int mask])", "Return or change the umask"],
    uniqid: ["string uniqid([string prefix [, bool more_entropy]])", "Generates a unique ID"],
    unixtojd: ["int unixtojd([int timestamp])", "Convert UNIX timestamp to Julian Day"],
    unlink: ["bool unlink(string filename[, context context])", "Delete a file"],
    unpack: ["array unpack(string format, string input)", "Unpack binary string into named array elements according to format argument"],
    unregister_tick_function: ["void unregister_tick_function(string function_name)", "Unregisters a tick callback function"],
    unserialize: ["mixed unserialize(string variable_representation)", "Takes a string representation of variable and recreates it"],
    unset: ["void unset (mixed var [, mixed var])", "Unset a given variable"],
    urldecode: ["string urldecode(string str)", "Decodes URL-encoded string"],
    urlencode: ["string urlencode(string str)", "URL-encodes string"],
    usleep: ["void usleep(int micro_seconds)", "Delay for a given number of micro seconds"],
    usort: ["bool usort(array array_arg, string cmp_function)", "Sort an array by values using a user-defined comparison function"],
    utf8_decode: ["string utf8_decode(string data)", "Converts a UTF-8 encoded string to ISO-8859-1"],
    utf8_encode: ["string utf8_encode(string data)", "Encodes an ISO-8859-1 string to UTF-8"],
    var_dump: ["void var_dump(mixed var)", "Dumps a string representation of variable to output"],
    var_export: ["mixed var_export(mixed var [, bool return])", "Outputs or returns a string representation of a variable"],
    variant_abs: ["mixed variant_abs(mixed left)", "Returns the absolute value of a variant"],
    variant_add: ["mixed variant_add(mixed left, mixed right)", '"Adds" two variant values together and returns the result'],
    variant_and: ["mixed variant_and(mixed left, mixed right)", "performs a bitwise AND operation between two variants and returns the result"],
    variant_cast: ["object variant_cast(object variant, int type)", "Convert a variant into a new variant object of another type"],
    variant_cat: ["mixed variant_cat(mixed left, mixed right)", "concatenates two variant values together and returns the result"],
    variant_cmp: ["int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])", "Compares two variants"],
    variant_date_from_timestamp: ["object variant_date_from_timestamp(int timestamp)", "Returns a variant date representation of a unix timestamp"],
    variant_date_to_timestamp: ["int variant_date_to_timestamp(object variant)", "Converts a variant date/time value to unix timestamp"],
    variant_div: ["mixed variant_div(mixed left, mixed right)", "Returns the result from dividing two variants"],
    variant_eqv: ["mixed variant_eqv(mixed left, mixed right)", "Performs a bitwise equivalence on two variants"],
    variant_fix: ["mixed variant_fix(mixed left)", "Returns the integer part ? of a variant"],
    variant_get_type: ["int variant_get_type(object variant)", "Returns the VT_XXX type code for a variant"],
    variant_idiv: ["mixed variant_idiv(mixed left, mixed right)", "Converts variants to integers and then returns the result from dividing them"],
    variant_imp: ["mixed variant_imp(mixed left, mixed right)", "Performs a bitwise implication on two variants"],
    variant_int: ["mixed variant_int(mixed left)", "Returns the integer portion of a variant"],
    variant_mod: ["mixed variant_mod(mixed left, mixed right)", "Divides two variants and returns only the remainder"],
    variant_mul: ["mixed variant_mul(mixed left, mixed right)", "multiplies the values of the two variants and returns the result"],
    variant_neg: ["mixed variant_neg(mixed left)", "Performs logical negation on a variant"],
    variant_not: ["mixed variant_not(mixed left)", "Performs bitwise not negation on a variant"],
    variant_or: ["mixed variant_or(mixed left, mixed right)", "Performs a logical disjunction on two variants"],
    variant_pow: ["mixed variant_pow(mixed left, mixed right)", "Returns the result of performing the power function with two variants"],
    variant_round: ["mixed variant_round(mixed left, int decimals)", "Rounds a variant to the specified number of decimal places"],
    variant_set: ["void variant_set(object variant, mixed value)", "Assigns a new value for a variant object"],
    variant_set_type: ["void variant_set_type(object variant, int type)", 'Convert a variant into another type.  Variant is modified "in-place"'],
    variant_sub: ["mixed variant_sub(mixed left, mixed right)", "subtracts the value of the right variant from the left variant value and returns the result"],
    variant_xor: ["mixed variant_xor(mixed left, mixed right)", "Performs a logical exclusion on two variants"],
    version_compare: ["int version_compare(string ver1, string ver2 [, string oper])", 'Compares two "PHP-standardized" version number strings'],
    vfprintf: ["int vfprintf(resource stream, string format, array args)", "Output a formatted string into a stream"],
    virtual: ["bool virtual(string filename)", "Perform an Apache sub-request"],
    vprintf: ["int vprintf(string format, array args)", "Output a formatted string"],
    vsprintf: ["string vsprintf(string format, array args)", "Return a formatted string"],
    wddx_add_vars: ["int wddx_add_vars(resource packet_id,  mixed var_names [, mixed ...])", "Serializes given variables and adds them to packet given by packet_id"],
    wddx_deserialize: ["mixed wddx_deserialize(mixed packet)", "Deserializes given packet and returns a PHP value"],
    wddx_packet_end: ["string wddx_packet_end(resource packet_id)", "Ends specified WDDX packet and returns the string containing the packet"],
    wddx_packet_start: ["resource wddx_packet_start([string comment])", "Starts a WDDX packet with optional comment and returns the packet id"],
    wddx_serialize_value: ["string wddx_serialize_value(mixed var [, string comment])", "Creates a new packet and serializes the given value"],
    wddx_serialize_vars: ["string wddx_serialize_vars(mixed var_name [, mixed ...])", "Creates a new packet and serializes given variables into a struct"],
    wordwrap: ["string wordwrap(string str [, int width [, string break [, boolean cut]]])", "Wraps buffer to selected number of characters using string break char"],
    xml_error_string: ["string xml_error_string(int code)", "Get XML parser error string"],
    xml_get_current_byte_index: ["int xml_get_current_byte_index(resource parser)", "Get current byte index for an XML parser"],
    xml_get_current_column_number: ["int xml_get_current_column_number(resource parser)", "Get current column number for an XML parser"],
    xml_get_current_line_number: ["int xml_get_current_line_number(resource parser)", "Get current line number for an XML parser"],
    xml_get_error_code: ["int xml_get_error_code(resource parser)", "Get XML parser error code"],
    xml_parse: ["int xml_parse(resource parser, string data [, int isFinal])", "Start parsing an XML document"],
    xml_parse_into_struct: ["int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])", "Parsing a XML document"],
    xml_parser_create: ["resource xml_parser_create([string encoding])", "Create an XML parser"],
    xml_parser_create_ns: ["resource xml_parser_create_ns([string encoding [, string sep]])", "Create an XML parser"],
    xml_parser_free: ["int xml_parser_free(resource parser)", "Free an XML parser"],
    xml_parser_get_option: ["int xml_parser_get_option(resource parser, int option)", "Get options from an XML parser"],
    xml_parser_set_option: ["int xml_parser_set_option(resource parser, int option, mixed value)", "Set options in an XML parser"],
    xml_set_character_data_handler: ["int xml_set_character_data_handler(resource parser, string hdl)", "Set up character data handler"],
    xml_set_default_handler: ["int xml_set_default_handler(resource parser, string hdl)", "Set up default handler"],
    xml_set_element_handler: ["int xml_set_element_handler(resource parser, string shdl, string ehdl)", "Set up start and end element handlers"],
    xml_set_end_namespace_decl_handler: ["int xml_set_end_namespace_decl_handler(resource parser, string hdl)", "Set up character data handler"],
    xml_set_external_entity_ref_handler: ["int xml_set_external_entity_ref_handler(resource parser, string hdl)", "Set up external entity reference handler"],
    xml_set_notation_decl_handler: ["int xml_set_notation_decl_handler(resource parser, string hdl)", "Set up notation declaration handler"],
    xml_set_object: ["int xml_set_object(resource parser, object &obj)", "Set up object which should be used for callbacks"],
    xml_set_processing_instruction_handler: ["int xml_set_processing_instruction_handler(resource parser, string hdl)", "Set up processing instruction (PI) handler"],
    xml_set_start_namespace_decl_handler: ["int xml_set_start_namespace_decl_handler(resource parser, string hdl)", "Set up character data handler"],
    xml_set_unparsed_entity_decl_handler: ["int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)", "Set up unparsed entity declaration handler"],
    xmlrpc_decode: ["array xmlrpc_decode(string xml [, string encoding])", "Decodes XML into native PHP types"],
    xmlrpc_decode_request: ["array xmlrpc_decode_request(string xml, string& method [, string encoding])", "Decodes XML into native PHP types"],
    xmlrpc_encode: ["string xmlrpc_encode(mixed value)", "Generates XML for a PHP value"],
    xmlrpc_encode_request: ["string xmlrpc_encode_request(string method, mixed params [, array output_options])", "Generates XML for a method request"],
    xmlrpc_get_type: ["string xmlrpc_get_type(mixed value)", "Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings"],
    xmlrpc_is_fault: ["bool xmlrpc_is_fault(array)", "Determines if an array value represents an XMLRPC fault."],
    xmlrpc_parse_method_descriptions: ["array xmlrpc_parse_method_descriptions(string xml)", "Decodes XML into a list of method descriptions"],
    xmlrpc_server_add_introspection_data: ["int xmlrpc_server_add_introspection_data(resource server, array desc)", "Adds introspection documentation"],
    xmlrpc_server_call_method: ["mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])", "Parses XML requests and call methods"],
    xmlrpc_server_create: ["resource xmlrpc_server_create(void)", "Creates an xmlrpc server"],
    xmlrpc_server_destroy: ["int xmlrpc_server_destroy(resource server)", "Destroys server resources"],
    xmlrpc_server_register_introspection_callback: ["bool xmlrpc_server_register_introspection_callback(resource server, string function)", "Register a PHP function to generate documentation"],
    xmlrpc_server_register_method: ["bool xmlrpc_server_register_method(resource server, string method_name, string function)", "Register a PHP function to handle method matching method_name"],
    xmlrpc_set_type: ["bool xmlrpc_set_type(string value, string type)", "Sets xmlrpc type, base64 or datetime, for a PHP string value"],
    xmlwriter_end_attribute: ["bool xmlwriter_end_attribute(resource xmlwriter)", "End attribute - returns FALSE on error"],
    xmlwriter_end_cdata: ["bool xmlwriter_end_cdata(resource xmlwriter)", "End current CDATA - returns FALSE on error"],
    xmlwriter_end_comment: ["bool xmlwriter_end_comment(resource xmlwriter)", "Create end comment - returns FALSE on error"],
    xmlwriter_end_document: ["bool xmlwriter_end_document(resource xmlwriter)", "End current document - returns FALSE on error"],
    xmlwriter_end_dtd: ["bool xmlwriter_end_dtd(resource xmlwriter)", "End current DTD - returns FALSE on error"],
    xmlwriter_end_dtd_attlist: ["bool xmlwriter_end_dtd_attlist(resource xmlwriter)", "End current DTD AttList - returns FALSE on error"],
    xmlwriter_end_dtd_element: ["bool xmlwriter_end_dtd_element(resource xmlwriter)", "End current DTD element - returns FALSE on error"],
    xmlwriter_end_dtd_entity: ["bool xmlwriter_end_dtd_entity(resource xmlwriter)", "End current DTD Entity - returns FALSE on error"],
    xmlwriter_end_element: ["bool xmlwriter_end_element(resource xmlwriter)", "End current element - returns FALSE on error"],
    xmlwriter_end_pi: ["bool xmlwriter_end_pi(resource xmlwriter)", "End current PI - returns FALSE on error"],
    xmlwriter_flush: ["mixed xmlwriter_flush(resource xmlwriter [,bool empty])", "Output current buffer"],
    xmlwriter_full_end_element: ["bool xmlwriter_full_end_element(resource xmlwriter)", "End current element - returns FALSE on error"],
    xmlwriter_open_memory: ["resource xmlwriter_open_memory()", "Create new xmlwriter using memory for string output"],
    xmlwriter_open_uri: ["resource xmlwriter_open_uri(resource xmlwriter, string source)", "Create new xmlwriter using source uri for output"],
    xmlwriter_output_memory: ["string xmlwriter_output_memory(resource xmlwriter [,bool flush])", "Output current buffer as string"],
    xmlwriter_set_indent: ["bool xmlwriter_set_indent(resource xmlwriter, bool indent)", "Toggle indentation on/off - returns FALSE on error"],
    xmlwriter_set_indent_string: ["bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)", "Set string used for indenting - returns FALSE on error"],
    xmlwriter_start_attribute: ["bool xmlwriter_start_attribute(resource xmlwriter, string name)", "Create start attribute - returns FALSE on error"],
    xmlwriter_start_attribute_ns: ["bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)", "Create start namespaced attribute - returns FALSE on error"],
    xmlwriter_start_cdata: ["bool xmlwriter_start_cdata(resource xmlwriter)", "Create start CDATA tag - returns FALSE on error"],
    xmlwriter_start_comment: ["bool xmlwriter_start_comment(resource xmlwriter)", "Create start comment - returns FALSE on error"],
    xmlwriter_start_document: ["bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)", "Create document tag - returns FALSE on error"],
    xmlwriter_start_dtd: ["bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)", "Create start DTD tag - returns FALSE on error"],
    xmlwriter_start_dtd_attlist: ["bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)", "Create start DTD AttList - returns FALSE on error"],
    xmlwriter_start_dtd_element: ["bool xmlwriter_start_dtd_element(resource xmlwriter, string name)", "Create start DTD element - returns FALSE on error"],
    xmlwriter_start_dtd_entity: ["bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)", "Create start DTD Entity - returns FALSE on error"],
    xmlwriter_start_element: ["bool xmlwriter_start_element(resource xmlwriter, string name)", "Create start element tag - returns FALSE on error"],
    xmlwriter_start_element_ns: ["bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)", "Create start namespaced element tag - returns FALSE on error"],
    xmlwriter_start_pi: ["bool xmlwriter_start_pi(resource xmlwriter, string target)", "Create start PI tag - returns FALSE on error"],
    xmlwriter_text: ["bool xmlwriter_text(resource xmlwriter, string content)", "Write text - returns FALSE on error"],
    xmlwriter_write_attribute: ["bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)", "Write full attribute - returns FALSE on error"],
    xmlwriter_write_attribute_ns: ["bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)", "Write full namespaced attribute - returns FALSE on error"],
    xmlwriter_write_cdata: ["bool xmlwriter_write_cdata(resource xmlwriter, string content)", "Write full CDATA tag - returns FALSE on error"],
    xmlwriter_write_comment: ["bool xmlwriter_write_comment(resource xmlwriter, string content)", "Write full comment tag - returns FALSE on error"],
    xmlwriter_write_dtd: ["bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)", "Write full DTD tag - returns FALSE on error"],
    xmlwriter_write_dtd_attlist: ["bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)", "Write full DTD AttList tag - returns FALSE on error"],
    xmlwriter_write_dtd_element: ["bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)", "Write full DTD element tag - returns FALSE on error"],
    xmlwriter_write_dtd_entity: ["bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])", "Write full DTD Entity tag - returns FALSE on error"],
    xmlwriter_write_element: ["bool xmlwriter_write_element(resource xmlwriter, string name[, string content])", "Write full element tag - returns FALSE on error"],
    xmlwriter_write_element_ns: ["bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])", "Write full namespaced element tag - returns FALSE on error"],
    xmlwriter_write_pi: ["bool xmlwriter_write_pi(resource xmlwriter, string target, string content)", "Write full PI tag - returns FALSE on error"],
    xmlwriter_write_raw: ["bool xmlwriter_write_raw(resource xmlwriter, string content)", "Write text - returns FALSE on error"],
    xsl_xsltprocessor_get_parameter: ["string xsl_xsltprocessor_get_parameter(string namespace, string name);", ""],
    xsl_xsltprocessor_has_exslt_support: ["bool xsl_xsltprocessor_has_exslt_support();", ""],
    xsl_xsltprocessor_import_stylesheet: ["void xsl_xsltprocessor_import_stylesheet(domdocument doc);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:"],
    xsl_xsltprocessor_register_php_functions: ["void xsl_xsltprocessor_register_php_functions([mixed $restrict]);", ""],
    xsl_xsltprocessor_remove_parameter: ["bool xsl_xsltprocessor_remove_parameter(string namespace, string name);", ""],
    xsl_xsltprocessor_set_parameter: ["bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value]);", ""],
    xsl_xsltprocessor_set_profiling: ["bool xsl_xsltprocessor_set_profiling(string filename) */", 'PHP_FUNCTION(xsl_xsltprocessor_set_profiling) {  zval *id;  xsl_object *intern;  char *filename = NULL;  int filename_len;  DOM_GET_THIS(id);   if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s!", &filename, &filename_len) == SUCCESS) {   intern = (xsl_object *)zend_object_store_get_object(id TSRMLS_CC);   if (intern->profiling) {    efree(intern->profiling);   }   if (filename != NULL) {    intern->profiling = estrndup(filename,filename_len);   } else {    intern->profiling = NULL;   }   RETURN_TRUE;  } else {   WRONG_PARAM_COUNT;  } } /* }}} end xsl_xsltprocessor_set_profiling'],
    xsl_xsltprocessor_transform_to_doc: ["domdocument xsl_xsltprocessor_transform_to_doc(domnode doc);", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:"],
    xsl_xsltprocessor_transform_to_uri: ["int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri);", ""],
    xsl_xsltprocessor_transform_to_xml: ["string xsl_xsltprocessor_transform_to_xml(domdocument doc);", ""],
    zend_logo_guid: ["string zend_logo_guid(void)", "Return the special ID used to request the Zend logo in phpinfo screens"],
    zend_version: ["string zend_version(void)", "Get the version of the Zend Engine"],
    zip_close: ["void zip_close(resource zip)", "Close a Zip archive"],
    zip_entry_close: ["void zip_entry_close(resource zip_ent)", "Close a zip entry"],
    zip_entry_compressedsize: ["int zip_entry_compressedsize(resource zip_entry)", "Return the compressed size of a ZZip entry"],
    zip_entry_compressionmethod: ["string zip_entry_compressionmethod(resource zip_entry)", "Return a string containing the compression method used on a particular entry"],
    zip_entry_filesize: ["int zip_entry_filesize(resource zip_entry)", "Return the actual filesize of a ZZip entry"],
    zip_entry_name: ["string zip_entry_name(resource zip_entry)", "Return the name given a ZZip entry"],
    zip_entry_open: ["bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])", "Open a Zip File, pointed by the resource entry"],
    zip_entry_read: ["mixed zip_entry_read(resource zip_entry [, int len])", "Read from an open directory entry"],
    zip_open: ["resource zip_open(string filename)", "Create new zip using source uri for output"],
    zip_read: ["resource zip_read(resource zip)", "Returns the next file in the archive"],
    zlib_get_coding_type: ["string zlib_get_coding_type(void)", "Returns the coding type used for output compression"]
  },
      i = {
    $_COOKIE: {
      type: "array"
    },
    $_ENV: {
      type: "array"
    },
    $_FILES: {
      type: "array"
    },
    $_GET: {
      type: "array"
    },
    $_POST: {
      type: "array"
    },
    $_REQUEST: {
      type: "array"
    },
    $_SERVER: {
      type: "array",
      value: {
        DOCUMENT_ROOT: 1,
        GATEWAY_INTERFACE: 1,
        HTTP_ACCEPT: 1,
        HTTP_ACCEPT_CHARSET: 1,
        HTTP_ACCEPT_ENCODING: 1,
        HTTP_ACCEPT_LANGUAGE: 1,
        HTTP_CONNECTION: 1,
        HTTP_HOST: 1,
        HTTP_REFERER: 1,
        HTTP_USER_AGENT: 1,
        PATH_TRANSLATED: 1,
        PHP_SELF: 1,
        QUERY_STRING: 1,
        REMOTE_ADDR: 1,
        REMOTE_PORT: 1,
        REQUEST_METHOD: 1,
        REQUEST_URI: 1,
        SCRIPT_FILENAME: 1,
        SCRIPT_NAME: 1,
        SERVER_ADMIN: 1,
        SERVER_NAME: 1,
        SERVER_PORT: 1,
        SERVER_PROTOCOL: 1,
        SERVER_SIGNATURE: 1,
        SERVER_SOFTWARE: 1
      }
    },
    $_SESSION: {
      type: "array"
    },
    $GLOBALS: {
      type: "array"
    }
  },
      o = function o() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (i.type === "support.php_tag" && i.value === "<?") return this.getTagCompletions(e, t, n, r);

      if (i.type === "identifier") {
        if (i.index > 0) {
          var o = t.getTokenAt(n.row, i.start);
          if (o.type === "support.php_tag") return this.getTagCompletions(e, t, n, r);
        }

        return this.getFunctionCompletions(e, t, n, r);
      }

      if (s(i, "variable")) return this.getVariableCompletions(e, t, n, r);
      var u = t.getLine(n.row).substr(0, n.column);
      return i.type === "string" && /(\$[\w]*)\[["']([^'"]*)$/i.test(u) ? this.getArrayKeyCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return [{
        caption: "php",
        value: "php",
        meta: "php tag",
        score: 1e6
      }, {
        caption: "=",
        value: "=",
        meta: "php tag",
        score: 1e6
      }];
    }, this.getFunctionCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + "($0)",
          meta: "php function",
          score: 1e6,
          docHTML: r[e][1]
        };
      });
    }, this.getVariableCompletions = function (e, t, n, r) {
      var s = Object.keys(i);
      return s.map(function (e) {
        return {
          caption: e,
          value: e,
          meta: "php variable",
          score: 1e6
        };
      });
    }, this.getArrayKeyCompletions = function (e, t, n, r) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = s.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1];
      if (!i[o]) return [];
      var u = [];
      return i[o].type === "array" && i[o].value && (u = Object.keys(i[o].value)), u.map(function (e) {
        return {
          caption: e,
          value: e,
          meta: "php array key",
          score: 1e6
        };
      });
    };
  }).call(o.prototype), t.PhpCompletions = o;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/php", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/php_highlight_rules", "ace/mode/php_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/worker/worker_client", "ace/mode/php_completions", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle", "ace/unicode", "ace/mode/html", "ace/mode/javascript", "ace/mode/css"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./php_highlight_rules").PhpHighlightRules,
      o = e("./php_highlight_rules").PhpLangHighlightRules,
      u = e("./matching_brace_outdent").MatchingBraceOutdent,
      a = e("../range").Range,
      f = e("../worker/worker_client").WorkerClient,
      l = e("./php_completions").PhpCompletions,
      c = e("./behaviour/cstyle").CstyleBehaviour,
      h = e("./folding/cstyle").FoldMode,
      p = e("../unicode"),
      d = e("./html").Mode,
      v = e("./javascript").Mode,
      m = e("./css").Mode,
      g = function g(e) {
    this.HighlightRules = o, this.$outdent = new u(), this.$behaviour = new c(), this.$completer = new l(), this.foldingRules = new h();
  };

  r.inherits(g, i), function () {
    this.tokenRe = new RegExp("^[" + p.wordChars + "_]+", "g"), this.nonTokenRe = new RegExp("^(?:[^" + p.wordChars + "_]|\\s])+", "g"), this.lineCommentStart = ["//", "#"], this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[:]\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o != "doc-start") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.$id = "ace/mode/php-inline";
  }.call(g.prototype);

  var y = function y(e) {
    if (e && e.inline) {
      var t = new g();
      return t.createWorker = this.createWorker, t.inlinePhp = !0, t;
    }

    d.call(this), this.HighlightRules = s, this.createModeDelegates({
      "js-": v,
      "css-": m,
      "php-": g
    }), this.foldingRules.subModes["php-"] = new h();
  };

  r.inherits(y, d), function () {
    this.createWorker = function (e) {
      var t = new f(["ace"], "ace/mode/php_worker", "PhpWorker");
      return t.attachToDocument(e.getDocument()), this.inlinePhp && t.call("setOptions", [{
        inline: !0
      }]), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/php", this.snippetFileId = "ace/snippets/php";
  }.call(y.prototype), t.Mode = y;
}), ace.define("ace/mode/php_laravel_blade", ["require", "exports", "module", "ace/lib/oop", "ace/mode/php_laravel_blade_highlight_rules", "ace/mode/php", "ace/mode/javascript", "ace/mode/css", "ace/mode/html"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./php_laravel_blade_highlight_rules").PHPLaravelBladeHighlightRules,
      s = e("./php").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html").Mode,
      f = function f() {
    s.call(this), this.HighlightRules = i, this.createModeDelegates({
      "js-": o,
      "css-": u,
      "html-": a
    });
  };

  r.inherits(f, s), function () {
    this.$id = "ace/mode/php_laravel_blade";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/php_laravel_blade"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-pig.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-pig.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/pig_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.block.pig",
        regex: /\/\*/,
        push: [{
          token: "comment.block.pig",
          regex: /\*\//,
          next: "pop"
        }, {
          defaultToken: "comment.block.pig"
        }]
      }, {
        token: "comment.line.double-dash.asciidoc",
        regex: /--.*$/
      }, {
        token: "keyword.control.pig",
        regex: /\b(?:ASSERT|LOAD|STORE|DUMP|FILTER|DISTINCT|FOREACH|GENERATE|STREAM|JOIN|COGROUP|GROUP|CROSS|ORDER|LIMIT|UNION|SPLIT|DESCRIBE|EXPLAIN|ILLUSTRATE|AS|BY|INTO|USING|LIMIT|PARALLEL|OUTER|INNER|DEFAULT|LEFT|SAMPLE|RANK|CUBE|ALL|KILL|QUIT|MAPREDUCE|ASC|DESC|THROUGH|SHIP|CACHE|DECLARE|CASE|WHEN|THEN|END|IN|PARTITION|FULL|IMPORT|IF|ONSCHEMA|INPUT|OUTPUT)\b/,
        caseInsensitive: !0
      }, {
        token: "storage.datatypes.pig",
        regex: /\b(?:int|long|float|double|chararray|bytearray|boolean|datetime|biginteger|bigdecimal|tuple|bag|map)\b/,
        caseInsensitive: !0
      }, {
        token: "support.function.storage.pig",
        regex: /\b(?:PigStorage|BinStorage|BinaryStorage|PigDump|HBaseStorage|JsonLoader|JsonStorage|AvroStorage|TextLoader|PigStreaming|TrevniStorage|AccumuloStorage)\b/
      }, {
        token: "support.function.udf.pig",
        regex: /\b(?:DIFF|TOBAG|TOMAP|TOP|TOTUPLE|RANDOM|FLATTEN|flatten|CUBE|ROLLUP|IsEmpty|ARITY|PluckTuple|SUBTRACT|BagToString)\b/
      }, {
        token: "support.function.udf.math.pig",
        regex: /\b(?:ABS|ACOS|ASIN|ATAN|CBRT|CEIL|COS|COSH|EXP|FLOOR|LOG|LOG10|ROUND|ROUND_TO|SIN|SINH|SQRT|TAN|TANH|AVG|COUNT|COUNT_STAR|MAX|MIN|SUM|COR|COV)\b/
      }, {
        token: "support.function.udf.string.pig",
        regex: /\b(?:CONCAT|INDEXOF|LAST_INDEX_OF|LCFIRST|LOWER|REGEX_EXTRACT|REGEX_EXTRACT_ALL|REPLACE|SIZE|STRSPLIT|SUBSTRING|TOKENIZE|TRIM|UCFIRST|UPPER|LTRIM|RTRIM|ENDSWITH|STARTSWITH|TRIM)\b/
      }, {
        token: "support.function.udf.datetime.pig",
        regex: /\b(?:AddDuration|CurrentTime|DaysBetween|GetDay|GetHour|GetMilliSecond|GetMinute|GetMonth|GetSecond|GetWeek|GetWeekYear|GetYear|HoursBetween|MilliSecondsBetween|MinutesBetween|MonthsBetween|SecondsBetween|SubtractDuration|ToDate|WeeksBetween|YearsBetween|ToMilliSeconds|ToString|ToUnixTime)\b/
      }, {
        token: "support.function.command.pig",
        regex: /\b(?:cat|cd|copyFromLocal|copyToLocal|cp|ls|mkdir|mv|pwd|rm)\b/
      }, {
        token: "variable.pig",
        regex: /\$[a_zA-Z0-9_]+/
      }, {
        token: "constant.language.pig",
        regex: /\b(?:NULL|true|false|stdin|stdout|stderr)\b/,
        caseInsensitive: !0
      }, {
        token: "constant.numeric.pig",
        regex: /\b\d+(?:\.\d+)?\b/
      }, {
        token: "keyword.operator.comparison.pig",
        regex: /!=|==|<|>|<=|>=|\b(?:MATCHES|IS|OR|AND|NOT)\b/,
        caseInsensitive: !0
      }, {
        token: "keyword.operator.arithmetic.pig",
        regex: /\+|\-|\*|\/|\%|\?|:|::|\.\.|#/
      }, {
        token: "string.quoted.double.pig",
        regex: /"/,
        push: [{
          token: "string.quoted.double.pig",
          regex: /"/,
          next: "pop"
        }, {
          token: "constant.character.escape.pig",
          regex: /\\./
        }, {
          defaultToken: "string.quoted.double.pig"
        }]
      }, {
        token: "string.quoted.single.pig",
        regex: /'/,
        push: [{
          token: "string.quoted.single.pig",
          regex: /'/,
          next: "pop"
        }, {
          token: "constant.character.escape.pig",
          regex: /\\./
        }, {
          defaultToken: "string.quoted.single.pig"
        }]
      }, {
        todo: {
          token: ["text", "keyword.parameter.pig", "text", "storage.type.parameter.pig"],
          regex: /^(\s*)(set)(\s+)(\S+)/,
          caseInsensitive: !0,
          push: [{
            token: "text",
            regex: /$/,
            next: "pop"
          }, {
            include: "$self"
          }]
        }
      }, {
        token: ["text", "keyword.alias.pig", "text", "storage.type.alias.pig"],
        regex: /(\s*)(DEFINE|DECLARE|REGISTER)(\s+)(\S+)/,
        caseInsensitive: !0,
        push: [{
          token: "text",
          regex: /;?$/,
          next: "pop"
        }]
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["pig"],
    name: "Pig",
    scopeName: "source.pig"
  }, r.inherits(s, i), t.PigHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/pig", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/pig_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./pig_highlight_rules").PigHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "--", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/pig";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/pig"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-plain_text.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-plain_text.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/plain_text", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/text_highlight_rules", "ace/mode/behaviour"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./behaviour").Behaviour,
      u = function u() {
    this.HighlightRules = s, this.$behaviour = new o();
  };

  r.inherits(u, i), function () {
    this.type = "text", this.getNextLineIndent = function (e, t, n) {
      return "";
    }, this.$id = "ace/mode/plain_text";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/plain_text"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-powershell.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-powershell.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/powershell_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "begin|break|catch|continue|data|do|dynamicparam|else|elseif|end|exit|filter|finally|for|foreach|from|function|if|in|inlinescript|hidden|parallel|param|process|return|sequence|switch|throw|trap|try|until|while|workflow",
        t = "Get-AppBackgroundTask|Start-AppBackgroundTask|Unregister-AppBackgroundTask|Disable-AppBackgroundTaskDiagnosticLog|Enable-AppBackgroundTaskDiagnosticLog|Set-AppBackgroundTaskResourcePolicy|Get-AppLockerFileInformation|Get-AppLockerPolicy|New-AppLockerPolicy|Set-AppLockerPolicy|Test-AppLockerPolicy|Get-AppxLastError|Get-AppxLog|Add-AppxPackage|Add-AppxVolume|Dismount-AppxVolume|Get-AppxDefaultVolume|Get-AppxPackage|Get-AppxPackageManifest|Get-AppxVolume|Mount-AppxVolume|Move-AppxPackage|Remove-AppxPackage|Remove-AppxVolume|Set-AppxDefaultVolume|Clear-AssignedAccess|Get-AssignedAccess|Set-AssignedAccess|Add-BitLockerKeyProtector|Backup-BitLockerKeyProtector|Clear-BitLockerAutoUnlock|Disable-BitLocker|Disable-BitLockerAutoUnlock|Enable-BitLocker|Enable-BitLockerAutoUnlock|Get-BitLockerVolume|Lock-BitLocker|Remove-BitLockerKeyProtector|Resume-BitLocker|Suspend-BitLocker|Unlock-BitLocker|Add-BitsFile|Complete-BitsTransfer|Get-BitsTransfer|Remove-BitsTransfer|Resume-BitsTransfer|Set-BitsTransfer|Start-BitsTransfer|Suspend-BitsTransfer|Add-BCDataCacheExtension|Clear-BCCache|Disable-BC|Disable-BCDowngrading|Disable-BCServeOnBattery|Enable-BCDistributed|Enable-BCDowngrading|Enable-BCHostedClient|Enable-BCHostedServer|Enable-BCLocal|Enable-BCServeOnBattery|Export-BCCachePackage|Export-BCSecretKey|Get-BCClientConfiguration|Get-BCContentServerConfiguration|Get-BCDataCache|Get-BCDataCacheExtension|Get-BCHashCache|Get-BCHostedCacheServerConfiguration|Get-BCNetworkConfiguration|Get-BCStatus|Import-BCCachePackage|Import-BCSecretKey|Publish-BCFileContent|Publish-BCWebContent|Remove-BCDataCacheExtension|Reset-BC|Set-BCAuthentication|Set-BCCache|Set-BCDataCacheEntryMaxAge|Set-BCMinSMBLatency|Set-BCSecretKey|Export-BinaryMiLog|Get-CimAssociatedInstance|Get-CimClass|Get-CimInstance|Get-CimSession|Import-BinaryMiLog|Invoke-CimMethod|New-CimInstance|New-CimSession|New-CimSessionOption|Register-CimIndicationEvent|Remove-CimInstance|Remove-CimSession|Set-CimInstance|ConvertFrom-CIPolicy|Add-SignerRule|Edit-CIPolicyRule|Get-CIPolicy|Get-CIPolicyInfo|Get-SystemDriver|Merge-CIPolicy|New-CIPolicy|New-CIPolicyRule|Remove-CIPolicyRule|Set-CIPolicyVersion|Set-HVCIOptions|Set-RuleOption|Add-MpPreference|Get-MpComputerStatus|Get-MpPreference|Get-MpThreat|Get-MpThreatCatalog|Get-MpThreatDetection|Remove-MpPreference|Remove-MpThreat|Set-MpPreference|Start-MpScan|Start-MpWDOScan|Update-MpSignature|Disable-DAManualEntryPointSelection|Enable-DAManualEntryPointSelection|Get-DAClientExperienceConfiguration|Get-DAEntryPointTableItem|New-DAEntryPointTableItem|Remove-DAEntryPointTableItem|Rename-DAEntryPointTableItem|Reset-DAClientExperienceConfiguration|Reset-DAEntryPointTableItem|Set-DAClientExperienceConfiguration|Set-DAEntryPointTableItem|Add-ProvisionedAppxPackage|Apply-WindowsUnattend|Get-ProvisionedAppxPackage|Remove-ProvisionedAppxPackage|Add-AppxProvisionedPackage|Add-WindowsCapability|Add-WindowsDriver|Add-WindowsImage|Add-WindowsPackage|Clear-WindowsCorruptMountPoint|Disable-WindowsOptionalFeature|Dismount-WindowsImage|Enable-WindowsOptionalFeature|Expand-WindowsCustomDataImage|Expand-WindowsImage|Export-WindowsDriver|Export-WindowsImage|Get-AppxProvisionedPackage|Get-WIMBootEntry|Get-WindowsCapability|Get-WindowsDriver|Get-WindowsEdition|Get-WindowsImage|Get-WindowsImageContent|Get-WindowsOptionalFeature|Get-WindowsPackage|Mount-WindowsImage|New-WindowsCustomImage|New-WindowsImage|Optimize-WindowsImage|Remove-AppxProvisionedPackage|Remove-WindowsCapability|Remove-WindowsDriver|Remove-WindowsImage|Remove-WindowsPackage|Repair-WindowsImage|Save-WindowsImage|Set-AppXProvisionedDataFile|Set-WindowsEdition|Set-WindowsProductKey|Split-WindowsImage|Update-WIMBootEntry|Use-WindowsUnattend|Add-DnsClientNrptRule|Clear-DnsClientCache|Get-DnsClient|Get-DnsClientCache|Get-DnsClientGlobalSetting|Get-DnsClientNrptGlobal|Get-DnsClientNrptPolicy|Get-DnsClientNrptRule|Get-DnsClientServerAddress|Register-DnsClient|Remove-DnsClientNrptRule|Set-DnsClient|Set-DnsClientGlobalSetting|Set-DnsClientNrptGlobal|Set-DnsClientNrptRule|Set-DnsClientServerAddress|Resolve-DnsName|Add-EtwTraceProvider|Get-AutologgerConfig|Get-EtwTraceProvider|Get-EtwTraceSession|New-AutologgerConfig|New-EtwTraceSession|Remove-AutologgerConfig|Remove-EtwTraceProvider|Remove-EtwTraceSession|Send-EtwTraceSession|Set-AutologgerConfig|Set-EtwTraceProvider|Set-EtwTraceSession|Get-WinAcceptLanguageFromLanguageListOptOut|Get-WinCultureFromLanguageListOptOut|Get-WinDefaultInputMethodOverride|Get-WinHomeLocation|Get-WinLanguageBarOption|Get-WinSystemLocale|Get-WinUILanguageOverride|Get-WinUserLanguageList|New-WinUserLanguageList|Set-Culture|Set-WinAcceptLanguageFromLanguageListOptOut|Set-WinCultureFromLanguageListOptOut|Set-WinDefaultInputMethodOverride|Set-WinHomeLocation|Set-WinLanguageBarOption|Set-WinSystemLocale|Set-WinUILanguageOverride|Set-WinUserLanguageList|Connect-IscsiTarget|Disconnect-IscsiTarget|Get-IscsiConnection|Get-IscsiSession|Get-IscsiTarget|Get-IscsiTargetPortal|New-IscsiTargetPortal|Register-IscsiSession|Remove-IscsiTargetPortal|Set-IscsiChapSecret|Unregister-IscsiSession|Update-IscsiTarget|Update-IscsiTargetPortal|Get-IseSnippet|Import-IseSnippet|New-IseSnippet|Add-KdsRootKey|Clear-KdsCache|Get-KdsConfiguration|Get-KdsRootKey|Set-KdsConfiguration|Test-KdsRootKey|Compress-Archive|Expand-Archive|Export-Counter|Get-Counter|Get-WinEvent|Import-Counter|New-WinEvent|Start-Transcript|Stop-Transcript|Add-Computer|Add-Content|Checkpoint-Computer|Clear-Content|Clear-EventLog|Clear-Item|Clear-ItemProperty|Clear-RecycleBin|Complete-Transaction|Convert-Path|Copy-Item|Copy-ItemProperty|Debug-Process|Disable-ComputerRestore|Enable-ComputerRestore|Get-ChildItem|Get-Clipboard|Get-ComputerRestorePoint|Get-Content|Get-ControlPanelItem|Get-EventLog|Get-HotFix|Get-Item|Get-ItemProperty|Get-ItemPropertyValue|Get-Location|Get-Process|Get-PSDrive|Get-PSProvider|Get-Service|Get-Transaction|Get-WmiObject|Invoke-Item|Invoke-WmiMethod|Join-Path|Limit-EventLog|Move-Item|Move-ItemProperty|New-EventLog|New-Item|New-ItemProperty|New-PSDrive|New-Service|New-WebServiceProxy|Pop-Location|Push-Location|Register-WmiEvent|Remove-Computer|Remove-EventLog|Remove-Item|Remove-ItemProperty|Remove-PSDrive|Remove-WmiObject|Rename-Computer|Rename-Item|Rename-ItemProperty|Reset-ComputerMachinePassword|Resolve-Path|Restart-Computer|Restart-Service|Restore-Computer|Resume-Service|Set-Clipboard|Set-Content|Set-Item|Set-ItemProperty|Set-Location|Set-Service|Set-WmiInstance|Show-ControlPanelItem|Show-EventLog|Split-Path|Start-Process|Start-Service|Start-Transaction|Stop-Computer|Stop-Process|Stop-Service|Suspend-Service|Test-ComputerSecureChannel|Test-Connection|Test-Path|Undo-Transaction|Use-Transaction|Wait-Process|Write-EventLog|Export-ODataEndpointProxy|ConvertFrom-SecureString|ConvertTo-SecureString|Get-Acl|Get-AuthenticodeSignature|Get-CmsMessage|Get-Credential|Get-ExecutionPolicy|Get-PfxCertificate|Protect-CmsMessage|Set-Acl|Set-AuthenticodeSignature|Set-ExecutionPolicy|Unprotect-CmsMessage|ConvertFrom-SddlString|Format-Hex|Get-FileHash|Import-PowerShellDataFile|New-Guid|New-TemporaryFile|Add-Member|Add-Type|Clear-Variable|Compare-Object|ConvertFrom-Csv|ConvertFrom-Json|ConvertFrom-String|ConvertFrom-StringData|Convert-String|ConvertTo-Csv|ConvertTo-Html|ConvertTo-Json|ConvertTo-Xml|Debug-Runspace|Disable-PSBreakpoint|Disable-RunspaceDebug|Enable-PSBreakpoint|Enable-RunspaceDebug|Export-Alias|Export-Clixml|Export-Csv|Export-FormatData|Export-PSSession|Format-Custom|Format-List|Format-Table|Format-Wide|Get-Alias|Get-Culture|Get-Date|Get-Event|Get-EventSubscriber|Get-FormatData|Get-Host|Get-Member|Get-PSBreakpoint|Get-PSCallStack|Get-Random|Get-Runspace|Get-RunspaceDebug|Get-TraceSource|Get-TypeData|Get-UICulture|Get-Unique|Get-Variable|Group-Object|Import-Alias|Import-Clixml|Import-Csv|Import-LocalizedData|Import-PSSession|Invoke-Expression|Invoke-RestMethod|Invoke-WebRequest|Measure-Command|Measure-Object|New-Alias|New-Event|New-Object|New-TimeSpan|New-Variable|Out-File|Out-GridView|Out-Printer|Out-String|Read-Host|Register-EngineEvent|Register-ObjectEvent|Remove-Event|Remove-PSBreakpoint|Remove-TypeData|Remove-Variable|Select-Object|Select-String|Select-Xml|Send-MailMessage|Set-Alias|Set-Date|Set-PSBreakpoint|Set-TraceSource|Set-Variable|Show-Command|Sort-Object|Start-Sleep|Tee-Object|Trace-Command|Unblock-File|Unregister-Event|Update-FormatData|Update-List|Update-TypeData|Wait-Debugger|Wait-Event|Write-Debug|Write-Error|Write-Host|Write-Information|Write-Output|Write-Progress|Write-Verbose|Write-Warning|Connect-WSMan|Disable-WSManCredSSP|Disconnect-WSMan|Enable-WSManCredSSP|Get-WSManCredSSP|Get-WSManInstance|Invoke-WSManAction|New-WSManInstance|New-WSManSessionOption|Remove-WSManInstance|Set-WSManInstance|Set-WSManQuickConfig|Test-WSMan|Debug-MMAppPrelaunch|Disable-MMAgent|Enable-MMAgent|Get-MMAgent|Set-MMAgent|Add-DtcClusterTMMapping|Get-Dtc|Get-DtcAdvancedHostSetting|Get-DtcAdvancedSetting|Get-DtcClusterDefault|Get-DtcClusterTMMapping|Get-DtcDefault|Get-DtcLog|Get-DtcNetworkSetting|Get-DtcTransaction|Get-DtcTransactionsStatistics|Get-DtcTransactionsTraceSession|Get-DtcTransactionsTraceSetting|Install-Dtc|Remove-DtcClusterTMMapping|Reset-DtcLog|Set-DtcAdvancedHostSetting|Set-DtcAdvancedSetting|Set-DtcClusterDefault|Set-DtcClusterTMMapping|Set-DtcDefault|Set-DtcLog|Set-DtcNetworkSetting|Set-DtcTransaction|Set-DtcTransactionsTraceSession|Set-DtcTransactionsTraceSetting|Start-Dtc|Start-DtcTransactionsTraceSession|Stop-Dtc|Stop-DtcTransactionsTraceSession|Test-Dtc|Uninstall-Dtc|Write-DtcTransactionsTraceSession|Complete-DtcDiagnosticTransaction|Join-DtcDiagnosticResourceManager|New-DtcDiagnosticTransaction|Receive-DtcDiagnosticTransaction|Send-DtcDiagnosticTransaction|Start-DtcDiagnosticResourceManager|Stop-DtcDiagnosticResourceManager|Undo-DtcDiagnosticTransaction|Disable-NetAdapter|Disable-NetAdapterBinding|Disable-NetAdapterChecksumOffload|Disable-NetAdapterEncapsulatedPacketTaskOffload|Disable-NetAdapterIPsecOffload|Disable-NetAdapterLso|Disable-NetAdapterPacketDirect|Disable-NetAdapterPowerManagement|Disable-NetAdapterQos|Disable-NetAdapterRdma|Disable-NetAdapterRsc|Disable-NetAdapterRss|Disable-NetAdapterSriov|Disable-NetAdapterVmq|Enable-NetAdapter|Enable-NetAdapterBinding|Enable-NetAdapterChecksumOffload|Enable-NetAdapterEncapsulatedPacketTaskOffload|Enable-NetAdapterIPsecOffload|Enable-NetAdapterLso|Enable-NetAdapterPacketDirect|Enable-NetAdapterPowerManagement|Enable-NetAdapterQos|Enable-NetAdapterRdma|Enable-NetAdapterRsc|Enable-NetAdapterRss|Enable-NetAdapterSriov|Enable-NetAdapterVmq|Get-NetAdapter|Get-NetAdapterAdvancedProperty|Get-NetAdapterBinding|Get-NetAdapterChecksumOffload|Get-NetAdapterEncapsulatedPacketTaskOffload|Get-NetAdapterHardwareInfo|Get-NetAdapterIPsecOffload|Get-NetAdapterLso|Get-NetAdapterPacketDirect|Get-NetAdapterPowerManagement|Get-NetAdapterQos|Get-NetAdapterRdma|Get-NetAdapterRsc|Get-NetAdapterRss|Get-NetAdapterSriov|Get-NetAdapterSriovVf|Get-NetAdapterStatistics|Get-NetAdapterVmq|Get-NetAdapterVmqQueue|Get-NetAdapterVPort|New-NetAdapterAdvancedProperty|Remove-NetAdapterAdvancedProperty|Rename-NetAdapter|Reset-NetAdapterAdvancedProperty|Restart-NetAdapter|Set-NetAdapter|Set-NetAdapterAdvancedProperty|Set-NetAdapterBinding|Set-NetAdapterChecksumOffload|Set-NetAdapterEncapsulatedPacketTaskOffload|Set-NetAdapterIPsecOffload|Set-NetAdapterLso|Set-NetAdapterPacketDirect|Set-NetAdapterPowerManagement|Set-NetAdapterQos|Set-NetAdapterRdma|Set-NetAdapterRsc|Set-NetAdapterRss|Set-NetAdapterSriov|Set-NetAdapterVmq|Get-NetConnectionProfile|Set-NetConnectionProfile|Add-NetEventNetworkAdapter|Add-NetEventPacketCaptureProvider|Add-NetEventProvider|Add-NetEventVmNetworkAdapter|Add-NetEventVmSwitch|Add-NetEventWFPCaptureProvider|Get-NetEventNetworkAdapter|Get-NetEventPacketCaptureProvider|Get-NetEventProvider|Get-NetEventSession|Get-NetEventVmNetworkAdapter|Get-NetEventVmSwitch|Get-NetEventWFPCaptureProvider|New-NetEventSession|Remove-NetEventNetworkAdapter|Remove-NetEventPacketCaptureProvider|Remove-NetEventProvider|Remove-NetEventSession|Remove-NetEventVmNetworkAdapter|Remove-NetEventVmSwitch|Remove-NetEventWFPCaptureProvider|Set-NetEventPacketCaptureProvider|Set-NetEventProvider|Set-NetEventSession|Set-NetEventWFPCaptureProvider|Start-NetEventSession|Stop-NetEventSession|Add-NetLbfoTeamMember|Add-NetLbfoTeamNic|Get-NetLbfoTeam|Get-NetLbfoTeamMember|Get-NetLbfoTeamNic|New-NetLbfoTeam|Remove-NetLbfoTeam|Remove-NetLbfoTeamMember|Remove-NetLbfoTeamNic|Rename-NetLbfoTeam|Set-NetLbfoTeam|Set-NetLbfoTeamMember|Set-NetLbfoTeamNic|Add-NetNatExternalAddress|Add-NetNatStaticMapping|Get-NetNat|Get-NetNatExternalAddress|Get-NetNatGlobal|Get-NetNatSession|Get-NetNatStaticMapping|New-NetNat|Remove-NetNat|Remove-NetNatExternalAddress|Remove-NetNatStaticMapping|Set-NetNat|Set-NetNatGlobal|Get-NetQosPolicy|New-NetQosPolicy|Remove-NetQosPolicy|Set-NetQosPolicy|Copy-NetFirewallRule|Copy-NetIPsecMainModeCryptoSet|Copy-NetIPsecMainModeRule|Copy-NetIPsecPhase1AuthSet|Copy-NetIPsecPhase2AuthSet|Copy-NetIPsecQuickModeCryptoSet|Copy-NetIPsecRule|Disable-NetFirewallRule|Disable-NetIPsecMainModeRule|Disable-NetIPsecRule|Enable-NetFirewallRule|Enable-NetIPsecMainModeRule|Enable-NetIPsecRule|Find-NetIPsecRule|Get-NetFirewallAddressFilter|Get-NetFirewallApplicationFilter|Get-NetFirewallInterfaceFilter|Get-NetFirewallInterfaceTypeFilter|Get-NetFirewallPortFilter|Get-NetFirewallProfile|Get-NetFirewallRule|Get-NetFirewallSecurityFilter|Get-NetFirewallServiceFilter|Get-NetFirewallSetting|Get-NetIPsecDospSetting|Get-NetIPsecMainModeCryptoSet|Get-NetIPsecMainModeRule|Get-NetIPsecMainModeSA|Get-NetIPsecPhase1AuthSet|Get-NetIPsecPhase2AuthSet|Get-NetIPsecQuickModeCryptoSet|Get-NetIPsecQuickModeSA|Get-NetIPsecRule|New-NetFirewallRule|New-NetIPsecDospSetting|New-NetIPsecMainModeCryptoSet|New-NetIPsecMainModeRule|New-NetIPsecPhase1AuthSet|New-NetIPsecPhase2AuthSet|New-NetIPsecQuickModeCryptoSet|New-NetIPsecRule|Open-NetGPO|Remove-NetFirewallRule|Remove-NetIPsecDospSetting|Remove-NetIPsecMainModeCryptoSet|Remove-NetIPsecMainModeRule|Remove-NetIPsecMainModeSA|Remove-NetIPsecPhase1AuthSet|Remove-NetIPsecPhase2AuthSet|Remove-NetIPsecQuickModeCryptoSet|Remove-NetIPsecQuickModeSA|Remove-NetIPsecRule|Rename-NetFirewallRule|Rename-NetIPsecMainModeCryptoSet|Rename-NetIPsecMainModeRule|Rename-NetIPsecPhase1AuthSet|Rename-NetIPsecPhase2AuthSet|Rename-NetIPsecQuickModeCryptoSet|Rename-NetIPsecRule|Save-NetGPO|Set-NetFirewallAddressFilter|Set-NetFirewallApplicationFilter|Set-NetFirewallInterfaceFilter|Set-NetFirewallInterfaceTypeFilter|Set-NetFirewallPortFilter|Set-NetFirewallProfile|Set-NetFirewallRule|Set-NetFirewallSecurityFilter|Set-NetFirewallServiceFilter|Set-NetFirewallSetting|Set-NetIPsecDospSetting|Set-NetIPsecMainModeCryptoSet|Set-NetIPsecMainModeRule|Set-NetIPsecPhase1AuthSet|Set-NetIPsecPhase2AuthSet|Set-NetIPsecQuickModeCryptoSet|Set-NetIPsecRule|Show-NetFirewallRule|Show-NetIPsecRule|Sync-NetIPsecRule|Update-NetIPsecRule|Get-DAPolicyChange|New-NetIPsecAuthProposal|New-NetIPsecMainModeCryptoProposal|New-NetIPsecQuickModeCryptoProposal|Add-NetSwitchTeamMember|Get-NetSwitchTeam|Get-NetSwitchTeamMember|New-NetSwitchTeam|Remove-NetSwitchTeam|Remove-NetSwitchTeamMember|Rename-NetSwitchTeam|Find-NetRoute|Get-NetCompartment|Get-NetIPAddress|Get-NetIPConfiguration|Get-NetIPInterface|Get-NetIPv4Protocol|Get-NetIPv6Protocol|Get-NetNeighbor|Get-NetOffloadGlobalSetting|Get-NetPrefixPolicy|Get-NetRoute|Get-NetTCPConnection|Get-NetTCPSetting|Get-NetTransportFilter|Get-NetUDPEndpoint|Get-NetUDPSetting|New-NetIPAddress|New-NetNeighbor|New-NetRoute|New-NetTransportFilter|Remove-NetIPAddress|Remove-NetNeighbor|Remove-NetRoute|Remove-NetTransportFilter|Set-NetIPAddress|Set-NetIPInterface|Set-NetIPv4Protocol|Set-NetIPv6Protocol|Set-NetNeighbor|Set-NetOffloadGlobalSetting|Set-NetRoute|Set-NetTCPSetting|Set-NetUDPSetting|Test-NetConnection|Get-DAConnectionStatus|Get-NCSIPolicyConfiguration|Reset-NCSIPolicyConfiguration|Set-NCSIPolicyConfiguration|Disable-NetworkSwitchEthernetPort|Disable-NetworkSwitchFeature|Disable-NetworkSwitchVlan|Enable-NetworkSwitchEthernetPort|Enable-NetworkSwitchFeature|Enable-NetworkSwitchVlan|Get-NetworkSwitchEthernetPort|Get-NetworkSwitchFeature|Get-NetworkSwitchGlobalData|Get-NetworkSwitchVlan|New-NetworkSwitchVlan|Remove-NetworkSwitchEthernetPortIPAddress|Remove-NetworkSwitchVlan|Restore-NetworkSwitchConfiguration|Save-NetworkSwitchConfiguration|Set-NetworkSwitchEthernetPortIPAddress|Set-NetworkSwitchPortMode|Set-NetworkSwitchPortProperty|Set-NetworkSwitchVlanProperty|Add-NetIPHttpsCertBinding|Disable-NetDnsTransitionConfiguration|Disable-NetIPHttpsProfile|Disable-NetNatTransitionConfiguration|Enable-NetDnsTransitionConfiguration|Enable-NetIPHttpsProfile|Enable-NetNatTransitionConfiguration|Get-Net6to4Configuration|Get-NetDnsTransitionConfiguration|Get-NetDnsTransitionMonitoring|Get-NetIPHttpsConfiguration|Get-NetIPHttpsState|Get-NetIsatapConfiguration|Get-NetNatTransitionConfiguration|Get-NetNatTransitionMonitoring|Get-NetTeredoConfiguration|Get-NetTeredoState|New-NetIPHttpsConfiguration|New-NetNatTransitionConfiguration|Remove-NetIPHttpsCertBinding|Remove-NetIPHttpsConfiguration|Remove-NetNatTransitionConfiguration|Rename-NetIPHttpsConfiguration|Reset-Net6to4Configuration|Reset-NetDnsTransitionConfiguration|Reset-NetIPHttpsConfiguration|Reset-NetIsatapConfiguration|Reset-NetTeredoConfiguration|Set-Net6to4Configuration|Set-NetDnsTransitionConfiguration|Set-NetIPHttpsConfiguration|Set-NetIsatapConfiguration|Set-NetNatTransitionConfiguration|Set-NetTeredoConfiguration|Find-Package|Find-PackageProvider|Get-Package|Get-PackageProvider|Get-PackageSource|Import-PackageProvider|Install-Package|Install-PackageProvider|Register-PackageSource|Save-Package|Set-PackageSource|Uninstall-Package|Unregister-PackageSource|Clear-PcsvDeviceLog|Get-PcsvDevice|Get-PcsvDeviceLog|Restart-PcsvDevice|Set-PcsvDeviceBootConfiguration|Set-PcsvDeviceNetworkConfiguration|Set-PcsvDeviceUserPassword|Start-PcsvDevice|Stop-PcsvDevice|AfterAll|AfterEach|Assert-MockCalled|Assert-VerifiableMocks|BeforeAll|BeforeEach|Context|Describe|Get-MockDynamicParameters|Get-TestDriveItem|In|InModuleScope|Invoke-Mock|Invoke-Pester|It|Mock|New-Fixture|Set-DynamicParameterVariables|Setup|Should|Add-CertificateEnrollmentPolicyServer|Export-Certificate|Export-PfxCertificate|Get-Certificate|Get-CertificateAutoEnrollmentPolicy|Get-CertificateEnrollmentPolicyServer|Get-CertificateNotificationTask|Get-PfxData|Import-Certificate|Import-PfxCertificate|New-CertificateNotificationTask|New-SelfSignedCertificate|Remove-CertificateEnrollmentPolicyServer|Remove-CertificateNotificationTask|Set-CertificateAutoEnrollmentPolicy|Switch-Certificate|Test-Certificate|Disable-PnpDevice|Enable-PnpDevice|Get-PnpDevice|Get-PnpDeviceProperty|Find-DscResource|Find-Module|Find-Script|Get-InstalledModule|Get-InstalledScript|Get-PSRepository|Install-Module|Install-Script|New-ScriptFileInfo|Publish-Module|Publish-Script|Register-PSRepository|Save-Module|Save-Script|Set-PSRepository|Test-ScriptFileInfo|Uninstall-Module|Uninstall-Script|Unregister-PSRepository|Update-Module|Update-ModuleManifest|Update-Script|Update-ScriptFileInfo|Add-Printer|Add-PrinterDriver|Add-PrinterPort|Get-PrintConfiguration|Get-Printer|Get-PrinterDriver|Get-PrinterPort|Get-PrinterProperty|Get-PrintJob|Read-PrinterNfcTag|Remove-Printer|Remove-PrinterDriver|Remove-PrinterPort|Remove-PrintJob|Rename-Printer|Restart-PrintJob|Resume-PrintJob|Set-PrintConfiguration|Set-Printer|Set-PrinterProperty|Suspend-PrintJob|Write-PrinterNfcTag|Configuration|Disable-DscDebug|Enable-DscDebug|Get-DscConfiguration|Get-DscConfigurationStatus|Get-DscLocalConfigurationManager|Get-DscResource|New-DscChecksum|Remove-DscConfigurationDocument|Restore-DscConfiguration|Stop-DscConfiguration|Invoke-DscResource|Publish-DscConfiguration|Set-DscLocalConfigurationManager|Start-DscConfiguration|Test-DscConfiguration|Update-DscConfiguration|Disable-PSTrace|Disable-PSWSManCombinedTrace|Disable-WSManTrace|Enable-PSTrace|Enable-PSWSManCombinedTrace|Enable-WSManTrace|Get-LogProperties|Set-LogProperties|Start-Trace|Stop-Trace|PSConsoleHostReadline|Get-PSReadlineKeyHandler|Get-PSReadlineOption|Remove-PSReadlineKeyHandler|Set-PSReadlineKeyHandler|Set-PSReadlineOption|Add-JobTrigger|Disable-JobTrigger|Disable-ScheduledJob|Enable-JobTrigger|Enable-ScheduledJob|Get-JobTrigger|Get-ScheduledJob|Get-ScheduledJobOption|New-JobTrigger|New-ScheduledJobOption|Register-ScheduledJob|Remove-JobTrigger|Set-JobTrigger|Set-ScheduledJob|Set-ScheduledJobOption|Unregister-ScheduledJob|New-PSWorkflowSession|New-PSWorkflowExecutionOption|Invoke-AsWorkflow|Disable-ScheduledTask|Enable-ScheduledTask|Export-ScheduledTask|Get-ClusteredScheduledTask|Get-ScheduledTask|Get-ScheduledTaskInfo|New-ScheduledTask|New-ScheduledTaskAction|New-ScheduledTaskPrincipal|New-ScheduledTaskSettingsSet|New-ScheduledTaskTrigger|Register-ClusteredScheduledTask|Register-ScheduledTask|Set-ClusteredScheduledTask|Set-ScheduledTask|Start-ScheduledTask|Stop-ScheduledTask|Unregister-ClusteredScheduledTask|Unregister-ScheduledTask|Confirm-SecureBootUEFI|Format-SecureBootUEFI|Get-SecureBootPolicy|Get-SecureBootUEFI|Set-SecureBootUEFI|Block-SmbShareAccess|Close-SmbOpenFile|Close-SmbSession|Disable-SmbDelegation|Enable-SmbDelegation|Get-SmbBandwidthLimit|Get-SmbClientConfiguration|Get-SmbClientNetworkInterface|Get-SmbConnection|Get-SmbDelegation|Get-SmbMapping|Get-SmbMultichannelConnection|Get-SmbMultichannelConstraint|Get-SmbOpenFile|Get-SmbServerConfiguration|Get-SmbServerNetworkInterface|Get-SmbSession|Get-SmbShare|Get-SmbShareAccess|Grant-SmbShareAccess|New-SmbMapping|New-SmbMultichannelConstraint|New-SmbShare|Remove-SmbBandwidthLimit|Remove-SmbMapping|Remove-SmbMultichannelConstraint|Remove-SmbShare|Revoke-SmbShareAccess|Set-SmbBandwidthLimit|Set-SmbClientConfiguration|Set-SmbPathAcl|Set-SmbServerConfiguration|Set-SmbShare|Unblock-SmbShareAccess|Update-SmbMultichannelConnection|Move-SmbClient|Get-SmbWitnessClient|Move-SmbWitnessClient|Get-StartApps|Export-StartLayout|Import-StartLayout|Disable-PhysicalDiskIndication|Disable-StorageDiagnosticLog|Enable-PhysicalDiskIndication|Enable-StorageDiagnosticLog|Flush-Volume|Get-DiskSNV|Get-PhysicalDiskSNV|Get-StorageEnclosureSNV|Initialize-Volume|Write-FileSystemCache|Add-InitiatorIdToMaskingSet|Add-PartitionAccessPath|Add-PhysicalDisk|Add-TargetPortToMaskingSet|Add-VirtualDiskToMaskingSet|Block-FileShareAccess|Clear-Disk|Clear-FileStorageTier|Clear-StorageDiagnosticInfo|Connect-VirtualDisk|Debug-FileShare|Debug-StorageSubSystem|Debug-Volume|Disable-PhysicalDiskIdentification|Disable-StorageEnclosureIdentification|Disable-StorageHighAvailability|Disconnect-VirtualDisk|Dismount-DiskImage|Enable-PhysicalDiskIdentification|Enable-StorageEnclosureIdentification|Enable-StorageHighAvailability|Format-Volume|Get-DedupProperties|Get-Disk|Get-DiskImage|Get-DiskStorageNodeView|Get-FileIntegrity|Get-FileShare|Get-FileShareAccessControlEntry|Get-FileStorageTier|Get-InitiatorId|Get-InitiatorPort|Get-MaskingSet|Get-OffloadDataTransferSetting|Get-Partition|Get-PartitionSupportedSize|Get-PhysicalDisk|Get-PhysicalDiskStorageNodeView|Get-ResiliencySetting|Get-StorageAdvancedProperty|Get-StorageDiagnosticInfo|Get-StorageEnclosure|Get-StorageEnclosureStorageNodeView|Get-StorageEnclosureVendorData|Get-StorageFaultDomain|Get-StorageFileServer|Get-StorageFirmwareInformation|Get-StorageHealthAction|Get-StorageHealthReport|Get-StorageHealthSetting|Get-StorageJob|Get-StorageNode|Get-StoragePool|Get-StorageProvider|Get-StorageReliabilityCounter|Get-StorageSetting|Get-StorageSubSystem|Get-StorageTier|Get-StorageTierSupportedSize|Get-SupportedClusterSizes|Get-SupportedFileSystems|Get-TargetPort|Get-TargetPortal|Get-VirtualDisk|Get-VirtualDiskSupportedSize|Get-Volume|Get-VolumeCorruptionCount|Get-VolumeScrubPolicy|Grant-FileShareAccess|Hide-VirtualDisk|Initialize-Disk|Mount-DiskImage|New-FileShare|New-MaskingSet|New-Partition|New-StorageFileServer|New-StoragePool|New-StorageSubsystemVirtualDisk|New-StorageTier|New-VirtualDisk|New-VirtualDiskClone|New-VirtualDiskSnapshot|New-Volume|Optimize-StoragePool|Optimize-Volume|Register-StorageSubsystem|Remove-FileShare|Remove-InitiatorId|Remove-InitiatorIdFromMaskingSet|Remove-MaskingSet|Remove-Partition|Remove-PartitionAccessPath|Remove-PhysicalDisk|Remove-StorageFileServer|Remove-StorageHealthSetting|Remove-StoragePool|Remove-StorageTier|Remove-TargetPortFromMaskingSet|Remove-VirtualDisk|Remove-VirtualDiskFromMaskingSet|Rename-MaskingSet|Repair-FileIntegrity|Repair-VirtualDisk|Repair-Volume|Reset-PhysicalDisk|Reset-StorageReliabilityCounter|Resize-Partition|Resize-StorageTier|Resize-VirtualDisk|Revoke-FileShareAccess|Set-Disk|Set-FileIntegrity|Set-FileShare|Set-FileStorageTier|Set-InitiatorPort|Set-Partition|Set-PhysicalDisk|Set-ResiliencySetting|Set-StorageFileServer|Set-StorageHealthSetting|Set-StoragePool|Set-StorageProvider|Set-StorageSetting|Set-StorageSubSystem|Set-StorageTier|Set-VirtualDisk|Set-Volume|Set-VolumeScrubPolicy|Show-VirtualDisk|Start-StorageDiagnosticLog|Stop-StorageDiagnosticLog|Stop-StorageJob|Unblock-FileShareAccess|Unregister-StorageSubsystem|Update-Disk|Update-HostStorageCache|Update-StorageFirmware|Update-StoragePool|Update-StorageProviderCache|Write-VolumeCache|Disable-TlsCipherSuite|Disable-TlsSessionTicketKey|Enable-TlsCipherSuite|Enable-TlsSessionTicketKey|Export-TlsSessionTicketKey|Get-TlsCipherSuite|New-TlsSessionTicketKey|Get-TroubleshootingPack|Invoke-TroubleshootingPack|Clear-Tpm|ConvertTo-TpmOwnerAuth|Disable-TpmAutoProvisioning|Enable-TpmAutoProvisioning|Get-Tpm|Get-TpmEndorsementKeyInfo|Get-TpmSupportedFeature|Import-TpmOwnerAuth|Initialize-Tpm|Set-TpmOwnerAuth|Unblock-Tpm|Add-VpnConnection|Add-VpnConnectionRoute|Add-VpnConnectionTriggerApplication|Add-VpnConnectionTriggerDnsConfiguration|Add-VpnConnectionTriggerTrustedNetwork|Get-VpnConnection|Get-VpnConnectionTrigger|New-EapConfiguration|New-VpnServerAddress|Remove-VpnConnection|Remove-VpnConnectionRoute|Remove-VpnConnectionTriggerApplication|Remove-VpnConnectionTriggerDnsConfiguration|Remove-VpnConnectionTriggerTrustedNetwork|Set-VpnConnection|Set-VpnConnectionIPsecConfiguration|Set-VpnConnectionProxy|Set-VpnConnectionTriggerDnsConfiguration|Set-VpnConnectionTriggerTrustedNetwork|Add-OdbcDsn|Disable-OdbcPerfCounter|Disable-WdacBidTrace|Enable-OdbcPerfCounter|Enable-WdacBidTrace|Get-OdbcDriver|Get-OdbcDsn|Get-OdbcPerfCounter|Get-WdacBidTrace|Remove-OdbcDsn|Set-OdbcDriver|Set-OdbcDsn|Get-WindowsDeveloperLicense|Show-WindowsDeveloperLicenseRegistration|Unregister-WindowsDeveloperLicense|Disable-WindowsErrorReporting|Enable-WindowsErrorReporting|Get-WindowsErrorReporting|Get-WindowsSearchSetting|Set-WindowsSearchSetting|Get-WindowsUpdateLog",
        n = this.createKeywordMapper({
      "support.function": t,
      keyword: e
    }, "identifier"),
        r = "eq|ne|gt|lt|le|ge|like|notlike|match|notmatch|contains|notcontains|in|notin|band|bor|bxor|bnot|ceq|cne|cgt|clt|cle|cge|clike|cnotlike|cmatch|cnotmatch|ccontains|cnotcontains|cin|cnotin|ieq|ine|igt|ilt|ile|ige|ilike|inotlike|imatch|inotmatch|icontains|inotcontains|iin|inotin|and|or|xor|not|split|join|replace|f|csplit|creplace|isplit|ireplace|is|isnot|as|shl|shr";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "comment.start",
        regex: "<#",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "[$](?:[Tt]rue|[Ff]alse)\\b"
      }, {
        token: "constant.language",
        regex: "[$][Nn]ull\\b"
      }, {
        token: "variable.instance",
        regex: "[$][a-zA-Z][a-zA-Z0-9_]*\\b"
      }, {
        token: n,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\-(?:" + r + ")"
      }, {
        token: "keyword.operator",
        regex: "&|\\+|\\-|\\*|\\/|\\%|\\=|\\>|\\&|\\!|\\|"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment.end",
        regex: "#>",
        next: "start"
      }, {
        token: "doc.comment.tag",
        regex: "^\\.\\w+"
      }, {
        defaultToken: "comment"
      }]
    };
  };

  r.inherits(s, i), t.PowershellHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/powershell", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/powershell_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./powershell_highlight_rules").PowershellHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a({
      start: "^\\s*(<#)",
      end: "^[#\\s]>\\s*$"
    });
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "#", this.blockComment = {
      start: "<#",
      end: "#>"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[]\s*$/);
        o && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      return null;
    }, this.$id = "ace/mode/powershell";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/powershell"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-praat.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-praat.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/praat_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "if|then|else|elsif|elif|endif|fi|endfor|endproc|while|endwhile|repeat|until|select|plus|minus|assert|asserterror",
        t = "macintosh|windows|unix|praatVersion|praatVersion\\$pi|undefined|newline\\$|tab\\$|shellDirectory\\$|homeDirectory\\$|preferencesDirectory\\$|temporaryDirectory\\$|defaultDirectory\\$",
        n = "clearinfo|endSendPraat",
        r = "writeInfo|writeInfoLine|appendInfo|appendInfoLine|info\\$|writeFile|writeFileLine|appendFile|appendFileLine|abs|round|floor|ceiling|min|max|imin|imax|sqrt|sin|cos|tan|arcsin|arccos|arctan|arctan2|sinc|sincpi|exp|ln|lnBeta|lnGamma|log10|log2|sinh|cosh|tanh|arcsinh|arccosh|arctanh|sigmoid|invSigmoid|erf|erfc|random(?:Uniform|Integer|Gauss|Poisson|Binomial)|gaussP|gaussQ|invGaussQ|incompleteGammaP|incompleteBeta|chiSquareP|chiSquareQ|invChiSquareQ|studentP|studentQ|invStudentQ|fisherP|fisherQ|invFisherQ|binomialP|binomialQ|invBinomialP|invBinomialQ|hertzToBark|barkToHerz|hertzToMel|melToHertz|hertzToSemitones|semitonesToHerz|erb|hertzToErb|erbToHertz|phonToDifferenceLimens|differenceLimensToPhon|soundPressureToPhon|beta|beta2|besselI|besselK|numberOfColumns|numberOfRows|selected|selected\\$|numberOfSelected|variableExists|index|rindex|startsWith|endsWith|index_regex|rindex_regex|replace_regex\\$|length|extractWord\\$|extractLine\\$|extractNumber|left\\$|right\\$|mid\\$|replace\\$|date\\$|fixed\\$|percent\\$|zero#|linear#|randomUniform#|randomInteger#|randomGauss#|beginPause|endPause|demoShow|demoWindowTitle|demoInput|demoWaitForInput|demoClicked|demoClickedIn|demoX|demoY|demoKeyPressed|demoKey\\$|demoExtraControlKeyPressed|demoShiftKeyPressed|demoCommandKeyPressed|demoOptionKeyPressed|environment\\$|chooseReadFile\\$|chooseDirectory\\$|createDirectory|fileReadable|deleteFile|selectObject|removeObject|plusObject|minusObject|runScript|exitScript|beginSendPraat|endSendPraat|objectsAreIdentical",
        i = "Activation|AffineTransform|AmplitudeTier|Art|Artword|Autosegment|BarkFilter|CCA|Categories|Cepstrum|Cepstrumc|ChebyshevSeries|ClassificationTable|Cochleagram|Collection|Configuration|Confusion|ContingencyTable|Corpus|Correlation|Covariance|CrossCorrelationTable|CrossCorrelationTables|DTW|Diagonalizer|Discriminant|Dissimilarity|Distance|Distributions|DurationTier|EEG|ERP|ERPTier|Eigen|Excitation|Excitations|ExperimentMFC|FFNet|FeatureWeights|Formant|FormantFilter|FormantGrid|FormantPoint|FormantTier|GaussianMixture|HMM|HMM_Observation|HMM_ObservationSequence|HMM_State|HMM_StateSequence|Harmonicity|ISpline|Index|Intensity|IntensityTier|IntervalTier|KNN|KlattGrid|KlattTable|LFCC|LPC|Label|LegendreSeries|LinearRegression|LogisticRegression|LongSound|Ltas|MFCC|MSpline|ManPages|Manipulation|Matrix|MelFilter|MixingMatrix|Movie|Network|OTGrammar|OTHistory|OTMulti|PCA|PairDistribution|ParamCurve|Pattern|Permutation|Pitch|PitchTier|PointProcess|Polygon|Polynomial|Procrustes|RealPoint|RealTier|ResultsMFC|Roots|SPINET|SSCP|SVD|Salience|ScalarProduct|Similarity|SimpleString|SortedSetOfString|Sound|Speaker|Spectrogram|Spectrum|SpectrumTier|SpeechSynthesizer|SpellingChecker|Strings|StringsIndex|Table|TableOfReal|TextGrid|TextInterval|TextPoint|TextTier|Tier|Transition|VocalTract|Weight|WordList";
    this.$rules = {
      start: [{
        token: "string.interpolated",
        regex: /'((?:\.?[a-z][a-zA-Z0-9_.]*)(?:\$|#|:[0-9]+)?)'/
      }, {
        token: ["text", "text", "keyword.operator", "text", "keyword"],
        regex: /(^\s*)(?:(\.?[a-z][a-zA-Z0-9_.]*\$?\s+)(=)(\s+))?(stopwatch)/
      }, {
        token: ["text", "keyword", "text", "string"],
        regex: /(^\s*)(print(?:line|tab)?|echo|exit|pause|send(?:praat|socket)|include|execute|system(?:_nocheck)?)(\s+)(.*)/
      }, {
        token: ["text", "keyword"],
        regex: "(^\\s*)(" + n + ")$"
      }, {
        token: ["text", "keyword.operator", "text"],
        regex: /(\s+)((?:\+|-|\/|\*|<|>)=?|==?|!=|%|\^|\||and|or|not)(\s+)/
      }, {
        token: ["text", "text", "keyword.operator", "text", "keyword", "text", "keyword"],
        regex: /(^\s*)(?:(\.?[a-z][a-zA-Z0-9_.]*\$?\s+)(=)(\s+))?(?:((?:no)?warn|(?:unix_)?nocheck|noprogress)(\s+))?((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/
      }, {
        token: ["text", "keyword", "text", "keyword"],
        regex: /(^\s*)((?:no(?:warn|check))?)(\s*)(\b(?:editor(?::?)|endeditor)\b)/
      }, {
        token: ["text", "keyword", "text", "keyword"],
        regex: /(^\s*)(?:(demo)?(\s+))((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/
      }, {
        token: ["text", "keyword", "text", "keyword"],
        regex: /^(\s*)(?:(demo)(\s+))?(10|12|14|16|24)$/
      }, {
        token: ["text", "support.function", "text"],
        regex: /(\s*)(do\$?)(\s*:\s*|\s*\(\s*)/
      }, {
        token: "entity.name.type",
        regex: "(" + i + ")"
      }, {
        token: "variable.language",
        regex: "(" + t + ")"
      }, {
        token: ["support.function", "text"],
        regex: "((?:" + r + ")\\$?)(\\s*(?::|\\())"
      }, {
        token: "keyword",
        regex: /(\bfor\b)/,
        next: "for"
      }, {
        token: "keyword",
        regex: "(\\b(?:" + e + ")\\b)"
      }, {
        token: "string",
        regex: /"[^"]*"/
      }, {
        token: "string",
        regex: /"[^"]*$/,
        next: "brokenstring"
      }, {
        token: ["text", "keyword", "text", "entity.name.section"],
        regex: /(^\s*)(\bform\b)(\s+)(.*)/,
        next: "form"
      }, {
        token: "constant.numeric",
        regex: /\b[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
      }, {
        token: ["keyword", "text", "entity.name.function"],
        regex: /(procedure)(\s+)([^:\s]+)/
      }, {
        token: ["entity.name.function", "text"],
        regex: /(@\S+)(:|\s*\()/
      }, {
        token: ["text", "keyword", "text", "entity.name.function"],
        regex: /(^\s*)(call)(\s+)(\S+)/
      }, {
        token: "comment",
        regex: /(^\s*#|;).*$/
      }, {
        token: "text",
        regex: /\s+/
      }],
      form: [{
        token: ["keyword", "text", "constant.numeric"],
        regex: /((?:optionmenu|choice)\s+)(\S+:\s+)([0-9]+)/
      }, {
        token: ["keyword", "constant.numeric"],
        regex: /((?:option|button)\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/
      }, {
        token: ["keyword", "string"],
        regex: /((?:option|button)\s+)(.*)/
      }, {
        token: ["keyword", "text", "string"],
        regex: /((?:sentence|text)\s+)(\S+\s*)(.*)/
      }, {
        token: ["keyword", "text", "string", "invalid.illegal"],
        regex: /(word\s+)(\S+\s*)(\S+)?(\s.*)?/
      }, {
        token: ["keyword", "text", "constant.language"],
        regex: /(boolean\s+)(\S+\s*)(0|1|"?(?:yes|no)"?)/
      }, {
        token: ["keyword", "text", "constant.numeric"],
        regex: /((?:real|natural|positive|integer)\s+)(\S+\s*)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/
      }, {
        token: ["keyword", "string"],
        regex: /(comment\s+)(.*)/
      }, {
        token: "keyword",
        regex: "endform",
        next: "start"
      }],
      "for": [{
        token: ["keyword", "text", "constant.numeric", "text"],
        regex: /(from|to)(\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?)(\s*)/
      }, {
        token: ["keyword", "text"],
        regex: /(from|to)(\s+\S+\s*)/
      }, {
        token: "text",
        regex: /$/,
        next: "start"
      }],
      brokenstring: [{
        token: ["text", "string"],
        regex: /(\s*\.{3})([^"]*)/
      }, {
        token: "string",
        regex: /"/,
        next: "start"
      }]
    };
  };

  r.inherits(s, i), t.PraatHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/praat", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/praat_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./praat_highlight_rules").PraatHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./folding/cstyle").FoldMode,
      a = function a() {
    this.HighlightRules = s, this.$outdent = new o(), this.foldingRules = new u(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[:]\s*$/);
        o && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/praat";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/praat"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-prisma.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-prisma.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/prisma_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        include: "#triple_comment"
      }, {
        include: "#double_comment"
      }, {
        include: "#model_block_definition"
      }, {
        include: "#config_block_definition"
      }, {
        include: "#enum_block_definition"
      }, {
        include: "#type_definition"
      }],
      "#model_block_definition": [{
        token: ["source.prisma.embedded.source", "storage.type.model.prisma", "source.prisma.embedded.source", "entity.name.type.model.prisma", "source.prisma.embedded.source", "punctuation.definition.tag.prisma"],
        regex: /^(\s*)(model|type)(\s+)([A-Za-z][\w]*)(\s+)({)/,
        push: [{
          token: "punctuation.definition.tag.prisma",
          regex: /\s*\}/,
          next: "pop"
        }, {
          include: "#triple_comment"
        }, {
          include: "#double_comment"
        }, {
          include: "#field_definition"
        }, {
          defaultToken: "source.prisma.embedded.source"
        }]
      }],
      "#enum_block_definition": [{
        token: ["source.prisma.embedded.source", "storage.type.enum.prisma", "source.prisma.embedded.source", "entity.name.type.enum.prisma", "source.prisma.embedded.source", "punctuation.definition.tag.prisma"],
        regex: /^(\s*)(enum)(\s+)([A-Za-z][\w]*)(\s+)({)/,
        push: [{
          token: "punctuation.definition.tag.prisma",
          regex: /\s*\}/,
          next: "pop"
        }, {
          include: "#triple_comment"
        }, {
          include: "#double_comment"
        }, {
          include: "#enum_value_definition"
        }, {
          defaultToken: "source.prisma.embedded.source"
        }]
      }],
      "#config_block_definition": [{
        token: ["source.prisma.embedded.source", "storage.type.config.prisma", "source.prisma.embedded.source", "entity.name.type.config.prisma", "source.prisma.embedded.source", "punctuation.definition.tag.prisma"],
        regex: /^(\s*)(generator|datasource)(\s+)([A-Za-z][\w]*)(\s+)({)/,
        push: [{
          token: "source.prisma.embedded.source",
          regex: /\s*\}/,
          next: "pop"
        }, {
          include: "#triple_comment"
        }, {
          include: "#double_comment"
        }, {
          include: "#assignment"
        }, {
          defaultToken: "source.prisma.embedded.source"
        }]
      }],
      "#assignment": [{
        token: ["text", "variable.other.assignment.prisma", "text", "keyword.operator.terraform", "text"],
        regex: /^(\s*)(\w+)(\s*)(=)(\s*)/,
        push: [{
          token: "text",
          regex: /$/,
          next: "pop"
        }, {
          include: "#value"
        }, {
          include: "#double_comment_inline"
        }]
      }],
      "#field_definition": [{
        token: ["text", "variable.other.assignment.prisma", "invalid.illegal.colon.prisma", "text", "support.type.primitive.prisma", "keyword.operator.list_type.prisma", "keyword.operator.optional_type.prisma", "invalid.illegal.required_type.prisma"],
        regex: /^(\s*)(\w+)((?:\s*:)?)(\s+)(\w+)((?:\[\])?)((?:\?)?)((?:\!)?)/
      }, {
        include: "#attribute_with_arguments"
      }, {
        include: "#attribute"
      }],
      "#type_definition": [{
        token: ["text", "storage.type.type.prisma", "text", "entity.name.type.type.prisma", "text", "support.type.primitive.prisma"],
        regex: /^(\s*)(type)(\s+)(\w+)(\s*=\s*)(\w+)/
      }, {
        include: "#attribute_with_arguments"
      }, {
        include: "#attribute"
      }],
      "#enum_value_definition": [{
        token: ["text", "variable.other.assignment.prisma", "text"],
        regex: /^(\s*)(\w+)(\s*$)/
      }, {
        include: "#attribute_with_arguments"
      }, {
        include: "#attribute"
      }],
      "#attribute_with_arguments": [{
        token: ["entity.name.function.attribute.prisma", "punctuation.definition.tag.prisma"],
        regex: /(@@?[\w\.]+)(\()/,
        push: [{
          token: "punctuation.definition.tag.prisma",
          regex: /\)/,
          next: "pop"
        }, {
          include: "#named_argument"
        }, {
          include: "#value"
        }, {
          defaultToken: "source.prisma.attribute.with_arguments"
        }]
      }],
      "#attribute": [{
        token: "entity.name.function.attribute.prisma",
        regex: /@@?[\w\.]+/
      }],
      "#array": [{
        token: "source.prisma.array",
        regex: /\[/,
        push: [{
          token: "source.prisma.array",
          regex: /\]/,
          next: "pop"
        }, {
          include: "#value"
        }, {
          defaultToken: "source.prisma.array"
        }]
      }],
      "#value": [{
        include: "#array"
      }, {
        include: "#functional"
      }, {
        include: "#literal"
      }],
      "#functional": [{
        token: ["support.function.functional.prisma", "punctuation.definition.tag.prisma"],
        regex: /(\w+)(\()/,
        push: [{
          token: "punctuation.definition.tag.prisma",
          regex: /\)/,
          next: "pop"
        }, {
          include: "#value"
        }, {
          defaultToken: "source.prisma.functional"
        }]
      }],
      "#literal": [{
        include: "#boolean"
      }, {
        include: "#number"
      }, {
        include: "#double_quoted_string"
      }, {
        include: "#identifier"
      }],
      "#identifier": [{
        token: "support.constant.constant.prisma",
        regex: /\b(?:\w)+\b/
      }],
      "#map_key": [{
        token: ["variable.parameter.key.prisma", "text", "punctuation.definition.separator.key-value.prisma", "text"],
        regex: /(\w+)(\s*)(:)(\s*)/
      }],
      "#named_argument": [{
        include: "#map_key"
      }, {
        include: "#value"
      }],
      "#triple_comment": [{
        token: "comment.prisma",
        regex: /\/\/\//,
        push: [{
          token: "comment.prisma",
          regex: /$/,
          next: "pop"
        }, {
          defaultToken: "comment.prisma"
        }]
      }],
      "#double_comment": [{
        token: "comment.prisma",
        regex: /\/\//,
        push: [{
          token: "comment.prisma",
          regex: /$/,
          next: "pop"
        }, {
          defaultToken: "comment.prisma"
        }]
      }],
      "#double_comment_inline": [{
        token: "comment.prisma",
        regex: /\/\/[^$]*/
      }],
      "#boolean": [{
        token: "constant.language.boolean.prisma",
        regex: /\b(?:true|false)\b/
      }],
      "#number": [{
        token: "constant.numeric.prisma",
        regex: /(?:0(?:x|X)[0-9a-fA-F]*|(?:\+|-)?\b(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDdg]|UL|ul)?\b/
      }],
      "#double_quoted_string": [{
        token: "string.quoted.double.start.prisma",
        regex: /"/,
        push: [{
          token: "string.quoted.double.end.prisma",
          regex: /"/,
          next: "pop"
        }, {
          include: "#string_interpolation"
        }, {
          token: "string.quoted.double.prisma",
          regex: /[\w\-\/\._\\%@:\?=]+/
        }, {
          defaultToken: "unnamed"
        }]
      }],
      "#string_interpolation": [{
        token: "keyword.control.interpolation.start.prisma",
        regex: /\$\{/,
        push: [{
          token: "keyword.control.interpolation.end.prisma",
          regex: /\s*\}/,
          next: "pop"
        }, {
          include: "#value"
        }, {
          defaultToken: "source.tag.embedded.source.prisma"
        }]
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    name: "Prisma",
    scopeName: "source.prisma"
  }, r.inherits(s, i), t.PrismaHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/prisma", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/prisma_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./prisma_highlight_rules").PrismaHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.$id = "ace/mode/prisma";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/prisma"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-prolog.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-prolog.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/prolog_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        include: "#comment"
      }, {
        include: "#basic_fact"
      }, {
        include: "#rule"
      }, {
        include: "#directive"
      }, {
        include: "#fact"
      }],
      "#atom": [{
        token: "constant.other.atom.prolog",
        regex: "\\b[a-z][a-zA-Z0-9_]*\\b"
      }, {
        token: "constant.numeric.prolog",
        regex: "-?\\d+(?:\\.\\d+)?"
      }, {
        include: "#string"
      }],
      "#basic_elem": [{
        include: "#comment"
      }, {
        include: "#statement"
      }, {
        include: "#constants"
      }, {
        include: "#operators"
      }, {
        include: "#builtins"
      }, {
        include: "#list"
      }, {
        include: "#atom"
      }, {
        include: "#variable"
      }],
      "#basic_fact": [{
        token: ["entity.name.function.fact.basic.prolog", "punctuation.end.fact.basic.prolog"],
        regex: "([a-z]\\w*)(\\.)"
      }],
      "#builtins": [{
        token: "support.function.builtin.prolog",
        regex: "\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b"
      }],
      "#comment": [{
        token: ["punctuation.definition.comment.prolog", "comment.line.percentage.prolog"],
        regex: "(%)(.*$)"
      }, {
        token: "punctuation.definition.comment.prolog",
        regex: "/\\*",
        push: [{
          token: "punctuation.definition.comment.prolog",
          regex: "\\*/",
          next: "pop"
        }, {
          defaultToken: "comment.block.prolog"
        }]
      }],
      "#constants": [{
        token: "constant.language.prolog",
        regex: "\\b(?:true|false|yes|no)\\b"
      }],
      "#directive": [{
        token: "keyword.operator.directive.prolog",
        regex: ":-",
        push: [{
          token: "meta.directive.prolog",
          regex: "\\.",
          next: "pop"
        }, {
          include: "#comment"
        }, {
          include: "#statement"
        }, {
          defaultToken: "meta.directive.prolog"
        }]
      }],
      "#expr": [{
        include: "#comments"
      }, {
        token: "meta.expression.prolog",
        regex: "\\(",
        push: [{
          token: "meta.expression.prolog",
          regex: "\\)",
          next: "pop"
        }, {
          include: "#expr"
        }, {
          defaultToken: "meta.expression.prolog"
        }]
      }, {
        token: "keyword.control.cutoff.prolog",
        regex: "!"
      }, {
        token: "punctuation.control.and.prolog",
        regex: ","
      }, {
        token: "punctuation.control.or.prolog",
        regex: ";"
      }, {
        include: "#basic_elem"
      }],
      "#fact": [{
        token: ["entity.name.function.fact.prolog", "punctuation.begin.fact.parameters.prolog"],
        regex: "([a-z]\\w*)(\\()(?!.*:-)",
        push: [{
          token: ["punctuation.end.fact.parameters.prolog", "punctuation.end.fact.prolog"],
          regex: "(\\))(\\.?)",
          next: "pop"
        }, {
          include: "#parameter"
        }, {
          defaultToken: "meta.fact.prolog"
        }]
      }],
      "#list": [{
        token: "punctuation.begin.list.prolog",
        regex: "\\[(?=.*\\])",
        push: [{
          token: "punctuation.end.list.prolog",
          regex: "\\]",
          next: "pop"
        }, {
          include: "#comment"
        }, {
          token: "punctuation.separator.list.prolog",
          regex: ","
        }, {
          token: "punctuation.concat.list.prolog",
          regex: "\\|",
          push: [{
            token: "meta.list.concat.prolog",
            regex: "(?=\\s*\\])",
            next: "pop"
          }, {
            include: "#basic_elem"
          }, {
            defaultToken: "meta.list.concat.prolog"
          }]
        }, {
          include: "#basic_elem"
        }, {
          defaultToken: "meta.list.prolog"
        }]
      }],
      "#operators": [{
        token: "keyword.operator.prolog",
        regex: "\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)="
      }],
      "#parameter": [{
        token: "variable.language.anonymous.prolog",
        regex: "\\b_\\b"
      }, {
        token: "variable.parameter.prolog",
        regex: "\\b[A-Z_]\\w*\\b"
      }, {
        token: "punctuation.separator.parameters.prolog",
        regex: ","
      }, {
        include: "#basic_elem"
      }, {
        token: "text",
        regex: "[^\\s]"
      }],
      "#rule": [{
        token: "meta.rule.prolog",
        regex: "(?=[a-z]\\w*.*:-)",
        push: [{
          token: "punctuation.rule.end.prolog",
          regex: "\\.",
          next: "pop"
        }, {
          token: "meta.rule.signature.prolog",
          regex: "(?=[a-z]\\w*.*:-)",
          push: [{
            token: "meta.rule.signature.prolog",
            regex: "(?=:-)",
            next: "pop"
          }, {
            token: "entity.name.function.rule.prolog",
            regex: "[a-z]\\w*(?=\\(|\\s*:-)"
          }, {
            token: "punctuation.rule.parameters.begin.prolog",
            regex: "\\(",
            push: [{
              token: "punctuation.rule.parameters.end.prolog",
              regex: "\\)",
              next: "pop"
            }, {
              include: "#parameter"
            }, {
              defaultToken: "meta.rule.parameters.prolog"
            }]
          }, {
            defaultToken: "meta.rule.signature.prolog"
          }]
        }, {
          token: "keyword.operator.definition.prolog",
          regex: ":-",
          push: [{
            token: "meta.rule.definition.prolog",
            regex: "(?=\\.)",
            next: "pop"
          }, {
            include: "#comment"
          }, {
            include: "#expr"
          }, {
            defaultToken: "meta.rule.definition.prolog"
          }]
        }, {
          defaultToken: "meta.rule.prolog"
        }]
      }],
      "#statement": [{
        token: "meta.statement.prolog",
        regex: "(?=[a-z]\\w*\\()",
        push: [{
          token: "punctuation.end.statement.parameters.prolog",
          regex: "\\)",
          next: "pop"
        }, {
          include: "#builtins"
        }, {
          include: "#atom"
        }, {
          token: "punctuation.begin.statement.parameters.prolog",
          regex: "\\(",
          push: [{
            token: "meta.statement.parameters.prolog",
            regex: "(?=\\))",
            next: "pop"
          }, {
            token: "punctuation.separator.statement.prolog",
            regex: ","
          }, {
            include: "#basic_elem"
          }, {
            defaultToken: "meta.statement.parameters.prolog"
          }]
        }, {
          defaultToken: "meta.statement.prolog"
        }]
      }],
      "#string": [{
        token: "punctuation.definition.string.begin.prolog",
        regex: "'",
        push: [{
          token: "punctuation.definition.string.end.prolog",
          regex: "'",
          next: "pop"
        }, {
          token: "constant.character.escape.prolog",
          regex: "\\\\."
        }, {
          token: "constant.character.escape.quote.prolog",
          regex: "''"
        }, {
          defaultToken: "string.quoted.single.prolog"
        }]
      }],
      "#variable": [{
        token: "variable.language.anonymous.prolog",
        regex: "\\b_\\b"
      }, {
        token: "variable.other.prolog",
        regex: "\\b[A-Z_][a-zA-Z0-9_]*\\b"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["plg", "prolog"],
    foldingStartMarker: "(%\\s*region \\w*)|([a-z]\\w*.*:- ?)",
    foldingStopMarker: "(%\\s*end(\\s*region)?)|(?=\\.)",
    keyEquivalent: "^~P",
    name: "Prolog",
    scopeName: "source.prolog"
  }, r.inherits(s, i), t.PrologHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/prolog", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/prolog_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./prolog_highlight_rules").PrologHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "%", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/prolog";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/prolog"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-properties.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-properties.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/properties_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = /\\u[0-9a-fA-F]{4}|\\/;
    this.$rules = {
      start: [{
        token: "comment",
        regex: /[!#].*$/
      }, {
        token: "keyword",
        regex: /[=:]$/
      }, {
        token: "keyword",
        regex: /[=:]/,
        next: "value"
      }, {
        token: "constant.language.escape",
        regex: e
      }, {
        defaultToken: "variable"
      }],
      value: [{
        regex: /\\$/,
        token: "string",
        next: "value"
      }, {
        regex: /$/,
        token: "string",
        next: "start"
      }, {
        token: "constant.language.escape",
        regex: e
      }, {
        defaultToken: "string"
      }]
    };
  };

  r.inherits(s, i), t.PropertiesHighlightRules = s;
}), ace.define("ace/mode/properties", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/properties_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./properties_highlight_rules").PropertiesHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.$id = "ace/mode/properties";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/properties"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-protobuf.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-protobuf.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/c_cpp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",
      u = function u() {
    var e = "break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",
        t = "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",
        n = "const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",
        r = "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",
        s = "NULL|true|false|TRUE|FALSE|nullptr",
        u = this.$keywords = this.createKeywordMapper({
      "keyword.control": e,
      "storage.type": t,
      "storage.modifier": n,
      "keyword.operator": r,
      "variable.language": "this",
      "constant.language": s
    }, "identifier"),
        a = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*\\b",
        f = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,
        l = "%" + /(\d+\$)?/.source + /[#0\- +']*/.source + /[,;:_]?/.source + /((-?\d+)|\*(-?\d+\$)?)?/.source + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;
    this.$rules = {
      start: [{
        token: "comment",
        regex: "//$",
        next: "start"
      }, {
        token: "comment",
        regex: "//",
        next: "singleLineComment"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: "'(?:" + f + "|.)?'"
      }, {
        token: "string.start",
        regex: '"',
        stateName: "qqstring",
        next: [{
          token: "string",
          regex: /\\\s*$/,
          next: "qqstring"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          token: "constant.language.escape",
          regex: l
        }, {
          token: "string.end",
          regex: '"|$',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: 'R"\\(',
        stateName: "rawString",
        next: [{
          token: "string.end",
          regex: '\\)"',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
      }, {
        token: "keyword",
        regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b",
        next: "directive"
      }, {
        token: "keyword",
        regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"
      }, {
        token: "support.function.C99.c",
        regex: o
      }, {
        token: u,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      singleLineComment: [{
        token: "comment",
        regex: /\\$/,
        next: "singleLineComment"
      }, {
        token: "comment",
        regex: /$/,
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      directive: [{
        token: "constant.other.multiline",
        regex: /\\/
      }, {
        token: "constant.other.multiline",
        regex: /.*\\/
      }, {
        token: "constant.other",
        regex: "\\s*<.+?>",
        next: "start"
      }, {
        token: "constant.other",
        regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',
        next: "start"
      }, {
        token: "constant.other",
        regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",
        next: "start"
      }, {
        token: "constant.other",
        regex: /[^\\\/]+/,
        next: "start"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(u, s), t.c_cppHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/c_cpp", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/c_cpp_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./c_cpp_highlight_rules").c_cppHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[]\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/c_cpp", this.snippetFileId = "ace/snippets/c_cpp";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/protobuf_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes",
        t = "message|required|optional|repeated|package|import|option|enum",
        n = this.createKeywordMapper({
      "keyword.declaration.protobuf": t,
      "support.type": e
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: /\/\/.*$/
      }, {
        token: "comment",
        regex: /\/\*/,
        next: "comment"
      }, {
        token: "constant",
        regex: "<[^>]+>"
      }, {
        regex: "=",
        token: "keyword.operator.assignment.protobuf"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: n,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.ProtobufHighlightRules = s;
}), ace.define("ace/mode/protobuf", ["require", "exports", "module", "ace/lib/oop", "ace/mode/c_cpp", "ace/mode/protobuf_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./c_cpp").Mode,
      s = e("./protobuf_highlight_rules").ProtobufHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    i.call(this), this.foldingRules = new o(), this.HighlightRules = s;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/protobuf";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/protobuf"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-puppet.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-puppet.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/puppet_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: ["keyword.type.puppet", "constant.class.puppet", "keyword.inherits.puppet", "constant.class.puppet"],
        regex: '^\\s*(class)(\\s+(?:[-_A-Za-z0-9".]+::)*[-_A-Za-z0-9".]+\\s*)(?:(inherits\\s*)(\\s+(?:[-_A-Za-z0-9".]+::)*[-_A-Za-z0-9".]+\\s*))?'
      }, {
        token: ["storage.function.puppet", "name.function.puppet", "punctuation.lpar"],
        regex: "(^\\s*define)(\\s+[a-zA-Z0-9_:]+\\s*)(\\()",
        push: [{
          token: "punctuation.rpar.puppet",
          regex: "\\)",
          next: "pop"
        }, {
          include: "constants"
        }, {
          include: "variable"
        }, {
          include: "strings"
        }, {
          include: "operators"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: ["language.support.class", "keyword.operator"],
        regex: "\\b([a-zA-Z_]+)(\\s+=>)"
      }, {
        token: ["exported.resource.puppet", "keyword.name.resource.puppet", "paren.lparen"],
        regex: "(\\@\\@)?(\\s*[a-zA-Z_]*)(\\s*\\{)"
      }, {
        token: "qualified.variable.puppet",
        regex: "(\\$([a-z][a-z0-9_]*)?(::[a-z][a-z0-9_]*)*::[a-z0-9_][a-zA-Z0-9_]*)"
      }, {
        token: "singleline.comment.puppet",
        regex: "#(.)*$"
      }, {
        token: "multiline.comment.begin.puppet",
        regex: "^\\s*\\/\\*",
        push: "blockComment"
      }, {
        token: "keyword.control.puppet",
        regex: "\\b(case|if|unless|else|elsif|in|default:|and|or)\\s+(?!::)"
      }, {
        token: "keyword.control.puppet",
        regex: "\\b(import|default|inherits|include|require|contain|node|application|consumes|environment|site|function|produces)\\b"
      }, {
        token: "support.function.puppet",
        regex: "\\b(lest|str2bool|escape|gsub|Timestamp|Timespan|with|alert|crit|debug|notice|sprintf|split|step|strftime|slice|shellquote|type|sha1|defined|scanf|reverse_each|regsubst|return|emerg|reduce|err|failed|fail|versioncmp|file|generate|then|info|realize|search|tag|tagged|template|epp|warning|hiera_include|each|assert_type|binary_file|create_resources|dig|digest|filter|lookup|find_file|fqdn_rand|hiera_array|hiera_hash|inline_epp|inline_template|map|match|md5|new|next)\\b"
      }, {
        token: "constant.types.puppet",
        regex: "\\b(String|File|Package|Service|Class|Integer|Array|Catalogentry|Variant|Boolean|Undef|Number|Hash|Float|Numeric|NotUndef|Callable|Optional|Any|Regexp|Sensitive|Sensitive.new|Type|Resource|Default|Enum|Scalar|Collection|Data|Pattern|Tuple|Struct)\\b"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        include: "variable"
      }, {
        include: "constants"
      }, {
        include: "strings"
      }, {
        include: "operators"
      }, {
        token: "regexp.begin.string.puppet",
        regex: "\\s*(\\/(\\S)+)\\/"
      }],
      blockComment: [{
        regex: "\\*\\/",
        token: "multiline.comment.end.puppet",
        next: "pop"
      }, {
        defaultToken: "comment"
      }],
      constants: [{
        token: "constant.language.puppet",
        regex: "\\b(false|true|running|stopped|installed|purged|latest|file|directory|held|undef|present|absent|link|mounted|unmounted)\\b"
      }],
      variable: [{
        token: "variable.puppet",
        regex: "(\\$[a-z0-9_{][a-zA-Z0-9_]*)"
      }],
      strings: [{
        token: "punctuation.quote.puppet",
        regex: "'",
        push: [{
          token: "punctuation.quote.puppet",
          regex: "'",
          next: "pop"
        }, {
          include: "escaped_chars"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "punctuation.quote.puppet",
        regex: '"',
        push: [{
          token: "punctuation.quote.puppet",
          regex: '"',
          next: "pop"
        }, {
          include: "escaped_chars"
        }, {
          include: "variable"
        }, {
          defaultToken: "string"
        }]
      }],
      escaped_chars: [{
        token: "constant.escaped_char.puppet",
        regex: "\\\\."
      }],
      operators: [{
        token: "keyword.operator",
        regex: "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=|::|,"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.PuppetHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/puppet", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/puppet_highlight_rules", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./puppet_highlight_rules").PuppetHighlightRules,
      o = e("./behaviour/cstyle").CstyleBehaviour,
      u = e("./folding/cstyle").FoldMode,
      a = e("./matching_brace_outdent").MatchingBraceOutdent,
      f = function f() {
    i.call(this), this.HighlightRules = s, this.$outdent = new a(), this.$behaviour = new o(), this.foldingRules = new u();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "#", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/puppet";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/puppet"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-python.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-python.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/python_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal",
        t = "True|False|None|NotImplemented|Ellipsis|__debug__",
        n = "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes",
        r = this.createKeywordMapper({
      "invalid.deprecated": "debugger",
      "support.function": n,
      "variable.language": "self|cls",
      "constant.language": t,
      keyword: e
    }, "identifier"),
        i = "[uU]?",
        s = "[rR]",
        o = "[fF]",
        u = "(?:[rR][fF]|[fF][rR])",
        a = "(?:(?:[1-9]\\d*)|(?:0))",
        f = "(?:0[oO]?[0-7]+)",
        l = "(?:0[xX][\\dA-Fa-f]+)",
        c = "(?:0[bB][01]+)",
        h = "(?:" + a + "|" + f + "|" + l + "|" + c + ")",
        p = "(?:[eE][+-]?\\d+)",
        d = "(?:\\.\\d+)",
        v = "(?:\\d+)",
        m = "(?:(?:" + v + "?" + d + ")|(?:" + v + "\\.))",
        g = "(?:(?:" + m + "|" + v + ")" + p + ")",
        y = "(?:" + g + "|" + m + ")",
        b = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "string",
        regex: i + '"{3}',
        next: "qqstring3"
      }, {
        token: "string",
        regex: i + '"(?=.)',
        next: "qqstring"
      }, {
        token: "string",
        regex: i + "'{3}",
        next: "qstring3"
      }, {
        token: "string",
        regex: i + "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: s + '"{3}',
        next: "rawqqstring3"
      }, {
        token: "string",
        regex: s + '"(?=.)',
        next: "rawqqstring"
      }, {
        token: "string",
        regex: s + "'{3}",
        next: "rawqstring3"
      }, {
        token: "string",
        regex: s + "'(?=.)",
        next: "rawqstring"
      }, {
        token: "string",
        regex: o + '"{3}',
        next: "fqqstring3"
      }, {
        token: "string",
        regex: o + '"(?=.)',
        next: "fqqstring"
      }, {
        token: "string",
        regex: o + "'{3}",
        next: "fqstring3"
      }, {
        token: "string",
        regex: o + "'(?=.)",
        next: "fqstring"
      }, {
        token: "string",
        regex: u + '"{3}',
        next: "rfqqstring3"
      }, {
        token: "string",
        regex: u + '"(?=.)',
        next: "rfqqstring"
      }, {
        token: "string",
        regex: u + "'{3}",
        next: "rfqstring3"
      }, {
        token: "string",
        regex: u + "'(?=.)",
        next: "rfqstring"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "punctuation",
        regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)\\}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        include: "constants"
      }],
      qqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqqstring3: [{
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqstring3: [{
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rawqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rawqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rawqstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      fqqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstring3: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "\\\\$",
        next: "fqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstring: [{
        token: "constant.language.escape",
        regex: b
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqqstring3: [{
        token: "string",
        regex: '"{3}',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqstring3: [{
        token: "string",
        regex: "'{3}",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "rfqqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      rfqstring: [{
        token: "string",
        regex: "'|$",
        next: "start"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }, {
        defaultToken: "string"
      }],
      fqstringParRules: [{
        token: "paren.lparen",
        regex: "[\\[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\]\\)]"
      }, {
        token: "string",
        regex: "\\s+"
      }, {
        token: "string",
        regex: "'[^']*'"
      }, {
        token: "string",
        regex: '"[^"]*"'
      }, {
        token: "function.support",
        regex: "(!s|!r|!a)"
      }, {
        include: "constants"
      }, {
        token: "paren.rparen",
        regex: "}",
        next: "pop"
      }, {
        token: "paren.lparen",
        regex: "{",
        push: "fqstringParRules"
      }],
      constants: [{
        token: "constant.numeric",
        regex: "(?:" + y + "|\\d+)[jJ]\\b"
      }, {
        token: "constant.numeric",
        regex: y
      }, {
        token: "constant.numeric",
        regex: h + "[lL]\\b"
      }, {
        token: "constant.numeric",
        regex: h + "\\b"
      }, {
        token: ["punctuation", "function.support"],
        regex: "(\\.)([a-zA-Z_]+)\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.PythonHighlightRules = s;
}), ace.define("ace/mode/folding/pythonic", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e) {
    this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + e + ")(?:\\s*)(?:#.*)?$");
  };

  r.inherits(s, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = e.getLine(n),
          i = r.match(this.foldingStartMarker);
      if (i) return i[1] ? this.openingBracketBlock(e, i[1], n, i.index) : i[2] ? this.indentationBlock(e, n, i.index + i[2].length) : this.indentationBlock(e, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/python", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/python_highlight_rules", "ace/mode/folding/pythonic", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./python_highlight_rules").PythonHighlightRules,
      o = e("./folding/pythonic").FoldMode,
      u = e("../range").Range,
      a = function a() {
    this.HighlightRules = s, this.foldingRules = new o("\\:"), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[:]\s*$/);
        o && (r += n);
      }

      return r;
    };
    var e = {
      pass: 1,
      "return": 1,
      raise: 1,
      "break": 1,
      "continue": 1
    };
    this.checkOutdent = function (t, n, r) {
      if (r !== "\r\n" && r !== "\r" && r !== "\n") return !1;
      var i = this.getTokenizer().getLineTokens(n.trim(), t).tokens;
      if (!i) return !1;

      do {
        var s = i.pop();
      } while (s && (s.type == "comment" || s.type == "text" && s.value.match(/^\s+$/)));

      return s ? s.type == "keyword" && e[s.value] : !1;
    }, this.autoOutdent = function (e, t, n) {
      n += 1;
      var r = this.$getIndent(t.getLine(n)),
          i = t.getTabString();
      r.slice(-i.length) == i && t.remove(new u(n, r.length - i.length, n, r.length));
    }, this.$id = "ace/mode/python", this.snippetFileId = "ace/snippets/python";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/python"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-qml.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-qml.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/qml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|readonly|string|int|bool|date|color|url|real|double|var|variant|height|width|anchors|parent|Abstract3DSeries|AbstractActionInput|AbstractAnimation|AbstractAxis|AbstractAxis3D|AbstractAxisInput|AbstractBarSeries|AbstractButton|AbstractClipAnimator|AbstractClipBlendNode|AbstractDataProxy|AbstractGraph3D|AbstractInputHandler3D|AbstractPhysicalDevice|AbstractRayCaster|AbstractSeries|AbstractSkeleton|AbstractTextureImage|Accelerometer|AccelerometerReading|Accessible|Action|ActionGroup|ActionInput|AdditiveClipBlend|Address|Affector|Age|AlphaCoverage|AlphaTest|Altimeter|AltimeterReading|AmbientLightReading|AmbientLightSensor|AmbientTemperatureReading|AmbientTemperatureSensor|AnalogAxisInput|AnchorAnimation|AnchorChanges|AngleDirection|AnimatedImage|AnimatedSprite|Animation|AnimationController|AnimationGroup|Animator|ApplicationWindow|ApplicationWindowStyle|AreaSeries|Armature|AttenuationModelInverse|AttenuationModelLinear|Attractor|Attribute|Audio|AudioCategory|AudioEngine|AudioListener|AudioSample|AuthenticationDialogRequest|Axis|AxisAccumulator|AxisSetting|BackspaceKey|Bar3DSeries|BarCategoryAxis|BarDataProxy|BarSeries|BarSet|Bars3D|BaseKey|Behavior|Binding|Blend|BlendEquation|BlendEquationArguments|BlendedClipAnimator|BlitFramebuffer|BluetoothDiscoveryModel|BluetoothService|BluetoothSocket|BorderImage|BorderImageMesh|BoxPlotSeries|BoxSet|BrightnessContrast|Buffer|BusyIndicator|BusyIndicatorStyle|Button|ButtonAxisInput|ButtonGroup|ButtonStyle|Calendar|CalendarStyle|Camera|Camera3D|CameraCapabilities|CameraCapture|CameraExposure|CameraFlash|CameraFocus|CameraImageProcessing|CameraLens|CameraRecorder|CameraSelector|CandlestickSeries|CandlestickSet|Canvas|Canvas3D|Canvas3DAbstractObject|Canvas3DActiveInfo|Canvas3DBuffer|Canvas3DContextAttributes|Canvas3DFrameBuffer|Canvas3DProgram|Canvas3DRenderBuffer|Canvas3DShader|Canvas3DShaderPrecisionFormat|Canvas3DTexture|Canvas3DTextureProvider|Canvas3DUniformLocation|CanvasGradient|CanvasImageData|CanvasPixelArray|Category|CategoryAxis|CategoryAxis3D|CategoryModel|CategoryRange|ChangeLanguageKey|ChartView|CheckBox|CheckBoxStyle|CheckDelegate|CircularGauge|CircularGaugeStyle|ClearBuffers|ClipAnimator|ClipPlane|CloseEvent|ColorAnimation|ColorDialog|ColorDialogRequest|ColorGradient|ColorGradientStop|ColorMask|ColorOverlay|Colorize|Column|ColumnLayout|ComboBox|ComboBoxStyle|Compass|CompassReading|Component|Component3D|ComputeCommand|ConeGeometry|ConeMesh|ConicalGradient|Connections|ContactDetail|ContactDetails|Container|Context2D|Context3D|ContextMenuRequest|Control|CoordinateAnimation|CuboidGeometry|CuboidMesh|CullFace|CumulativeDirection|Custom3DItem|Custom3DLabel|Custom3DVolume|CustomParticle|CylinderGeometry|CylinderMesh|Date|DateTimeAxis|DelayButton|DelayButtonStyle|DelegateChoice|DelegateChooser|DelegateModel|DelegateModelGroup|DepthTest|Desaturate|Dial|DialStyle|Dialog|DialogButtonBox|DiffuseMapMaterial|DiffuseSpecularMapMaterial|DiffuseSpecularMaterial|Direction|DirectionalBlur|DirectionalLight|DispatchCompute|Displace|DistanceReading|DistanceSensor|Dithering|DoubleValidator|Drag|DragEvent|DragHandler|Drawer|DropArea|DropShadow|DwmFeatures|DynamicParameter|EditorialModel|Effect|EllipseShape|Emitter|EnterKey|EnterKeyAction|Entity|EntityLoader|EnvironmentLight|EventConnection|EventPoint|EventTouchPoint|ExclusiveGroup|ExtendedAttributes|ExtrudedTextGeometry|ExtrudedTextMesh|FastBlur|FileDialog|FileDialogRequest|FillerKey|FilterKey|FinalState|FirstPersonCameraController|Flickable|Flipable|Flow|FocusScope|FolderListModel|FontDialog|FontLoader|FontMetrics|FormValidationMessageRequest|ForwardRenderer|Frame|FrameAction|FrameGraphNode|Friction|FrontFace|FrustumCulling|FullScreenRequest|GLStateDumpExt|GammaAdjust|Gauge|GaugeStyle|GaussianBlur|GeocodeModel|Geometry|GeometryRenderer|GestureEvent|Glow|GoochMaterial|Gradient|GradientStop|GraphicsApiFilter|GraphicsInfo|Gravity|Grid|GridLayout|GridMesh|GridView|GroupBox|GroupGoal|Gyroscope|GyroscopeReading|HBarModelMapper|HBoxPlotModelMapper|HCandlestickModelMapper|HPieModelMapper|HXYModelMapper|HandlerPoint|HandwritingInputPanel|HandwritingModeKey|HeightMapSurfaceDataProxy|HideKeyboardKey|HistoryState|HolsterReading|HolsterSensor|HorizontalBarSeries||HorizontalPercentBarSeries|HorizontalStackedBarSeries|HoverHandler|HueSaturation|HumidityReading|HumiditySensor|IRProximityReading|IRProximitySensor|Icon|Image|ImageModel|ImageParticle|InnerShadow|InputChord|InputContext|InputEngine|InputHandler3D|InputMethod|InputModeKey|InputPanel|InputSequence|InputSettings|Instantiator|IntValidator|InvokedServices|Item|ItemDelegate|ItemGrabResult|ItemModelBarDataProxy|ItemModelScatterDataProxy|ItemModelSurfaceDataProxy|ItemParticle|ItemSelectionModel|IviApplication|IviSurface|JavaScriptDialogRequest|Joint|JumpList|JumpListCategory|JumpListDestination|JumpListLink|JumpListSeparator|Key|KeyEvent|KeyIcon|KeyNavigation|KeyPanel|KeyboardColumn|KeyboardDevice|KeyboardHandler|KeyboardLayout|KeyboardLayoutLoader|KeyboardRow|KeyboardStyle|KeyframeAnimation|Keys|Label|Layer|LayerFilter|Layout|LayoutMirroring|Legend|LerpBlend|LevelAdjust|LevelOfDetail|LevelOfDetailBoundingSphere|LevelOfDetailLoader|LevelOfDetailSwitch|LidReading|LidSensor|Light|Light3D|LightReading|LightSensor|LineSeries|LineShape|LineWidth|LinearGradient|ListElement|ListModel|ListView|Loader|Locale|Location|LogValueAxis|LogValueAxis3DFormatter|LoggingCategory|LogicalDevice|Magnetometer|MagnetometerReading|Map|MapCircle|MapCircleObject|MapCopyrightNotice|MapGestureArea|MapIconObject|MapItemGroup|MapItemView|MapObjectView|MapParameter|MapPinchEvent|MapPolygon|MapPolygonObject|MapPolyline|MapPolylineObject|MapQuickItem|MapRectangle|MapRoute|MapRouteObject|MapType|Margins|MaskShape|MaskedBlur|Material|Matrix4x4|MediaPlayer|MemoryBarrier|Menu|MenuBar|MenuBarItem|MenuBarStyle|MenuItem|MenuSeparator|MenuStyle|Mesh|MessageDialog|ModeKey|MorphTarget|MorphingAnimation|MouseArea|MouseDevice|MouseEvent|MouseHandler|MultiPointHandler|MultiPointTouchArea|MultiSampleAntiAliasing|Navigator|NdefFilter|NdefMimeRecord|NdefRecord|NdefTextRecord|NdefUriRecord|NearField|NoDepthMask|NoDraw|Node|NodeInstantiator|NormalDiffuseMapAlphaMaterial|NormalDiffuseMapMaterial|NormalDiffuseSpecularMapMaterial|Number|NumberAnimation|NumberKey|Object3D|ObjectModel|ObjectPicker|OpacityAnimator|OpacityMask|OpenGLInfo|OrbitCameraController|OrientationReading|OrientationSensor|Overlay|Package|Page|PageIndicator|Pane|ParallelAnimation|Parameter|ParentAnimation|ParentChange|Particle|ParticleGroup|ParticlePainter|ParticleSystem|Path|PathAngleArc|PathAnimation|PathArc|PathAttribute|PathCubic|PathCurve|PathElement|PathInterpolator|PathLine|PathMove|PathPercent|PathQuad|PathSvg|PathView|PauseAnimation|PerVertexColorMaterial|PercentBarSeries|PhongAlphaMaterial|PhongMaterial|PickEvent|PickLineEvent|PickPointEvent|PickTriangleEvent|PickingSettings|Picture|PieMenu|PieMenuStyle|PieSeries|PieSlice|PinchArea|PinchEvent|PinchHandler|Place|PlaceAttribute|PlaceSearchModel|PlaceSearchSuggestionModel|PlaneGeometry|PlaneMesh|PlayVariation|Playlist|PlaylistItem|Plugin|PluginParameter|PointDirection|PointHandler|PointLight|PointSize|PointerDevice|PointerDeviceHandler|PointerEvent|PointerHandler|PolarChartView|PolygonOffset|Popup|Position|PositionSource|Positioner|PressureReading|PressureSensor|Product|ProgressBar|ProgressBarStyle|PropertyAction|PropertyAnimation|PropertyChanges|ProximityFilter|ProximityReading|ProximitySensor|QAbstractState|QAbstractTransition|QSignalTransition|QVirtualKeyboardSelectionListModel|Qt|QtMultimedia|QtObject|QtPositioning|QuaternionAnimation|QuotaRequest|RadialBlur|RadialGradient|Radio|RadioButton|RadioButtonStyle|RadioData|RadioDelegate|RangeSlider|Ratings|RayCaster|Rectangle|RectangleShape|RectangularGlow|RecursiveBlur|RegExpValidator|RegisterProtocolHandlerRequest|RenderCapture|RenderCaptureReply|RenderPass|RenderPassFilter|RenderSettings|RenderState|RenderStateSet|RenderSurfaceSelector|RenderTarget|RenderTargetOutput|RenderTargetSelector|Repeater|ReviewModel|Rotation|RotationAnimation|RotationAnimator|RotationReading|RotationSensor|RoundButton|Route|RouteLeg|RouteManeuver|RouteModel|RouteQuery|RouteSegment|Row|RowLayout|Scale|ScaleAnimator|Scatter3D|Scatter3DSeries|ScatterDataProxy|ScatterSeries|Scene2D|Scene3D|SceneLoader|ScissorTest|Screen|ScreenRayCaster|ScriptAction|ScrollBar|ScrollIndicator|ScrollView|ScrollViewStyle|ScxmlStateMachine|SeamlessCubemap|SelectionListItem|Sensor|SensorGesture|SensorGlobal|SensorReading|SequentialAnimation|Settings|SettingsStore|ShaderEffect|ShaderEffectSource|ShaderProgram|ShaderProgramBuilder|Shape|ShellSurface|ShellSurfaceItem|ShiftHandler|ShiftKey|Shortcut|SignalSpy|SignalTransition|SinglePointHandler|Skeleton|SkeletonLoader|Slider|SliderStyle|SmoothedAnimation|SortPolicy|Sound|SoundEffect|SoundInstance|SpaceKey|SphereGeometry|SphereMesh|SpinBox|SpinBoxStyle|SplineSeries|SplitView|SpotLight|SpringAnimation|Sprite|SpriteGoal|SpriteSequence|Stack|StackLayout|StackView|StackViewDelegate|StackedBarSeries|State|StateChangeScript|StateGroup|StateMachine|StateMachineLoader|StatusBar|StatusBarStyle|StatusIndicator|StatusIndicatorStyle|StencilMask|StencilOperation|StencilOperationArguments|StencilTest|StencilTestArguments|Store|String|Supplier|Surface3D|Surface3DSeries|SurfaceDataProxy|SwipeDelegate|SwipeView|Switch|SwitchDelegate|SwitchStyle|SymbolModeKey|SystemPalette|Tab|TabBar|TabButton|TabView|TabViewStyle|TableView|TableViewColumn|TableViewStyle|TapHandler|TapReading|TapSensor|TargetDirection|TaskbarButton|Technique|TechniqueFilter|TestCase|Text|TextArea|TextAreaStyle|TextEdit|TextField|TextFieldStyle|TextInput|TextMetrics|TextureImage|TextureImageFactory|Theme3D|ThemeColor|ThresholdMask|ThumbnailToolBar|ThumbnailToolButton|TiltReading|TiltSensor|TimeoutTransition|Timer|ToggleButton|ToggleButtonStyle|ToolBar|ToolBarStyle|ToolButton|ToolSeparator|ToolTip|Torch|TorusGeometry|TorusMesh|TouchEventSequence|TouchInputHandler3D|TouchPoint|Trace|TraceCanvas|TraceInputArea|TraceInputKey|TraceInputKeyPanel|TrailEmitter|Transaction|Transform|Transition|Translate|TreeView|TreeViewStyle|Tumbler|TumblerColumn|TumblerStyle|Turbulence|UniformAnimator|User|VBarModelMapper|VBoxPlotModelMapper|VCandlestickModelMapper|VPieModelMapper|VXYModelMapper|ValueAxis|ValueAxis3D|ValueAxis3DFormatter|Vector3dAnimation|VertexBlendAnimation|Video|VideoOutput|ViewTransition|Viewport|VirtualKeyboardSettings|Wander|WavefrontMesh|WaylandClient|WaylandCompositor|WaylandHardwareLayer|WaylandOutput|WaylandQuickItem|WaylandSeat|WaylandSurface|WaylandView|Waypoint|WebChannel|WebEngine|WebEngineAction|WebEngineCertificateError|WebEngineDownloadItem|WebEngineHistory|WebEngineHistoryListModel|WebEngineLoadRequest|WebEngineNavigationRequest|WebEngineNewViewRequest|WebEngineProfile|WebEngineScript|WebEngineSettings|WebEngineView|WebSocket|WebSocketServer|WebView|WebViewLoadRequest|WheelEvent|Window|WlShell|WlShellSurface|WorkerScript|XAnimator|XYPoint|XYSeries|XdgDecorationManagerV1|XdgPopup|XdgPopupV5|XdgPopupV6|XdgShell|XdgShellV5|XdgShellV6|XdgSurface|XdgSurfaceV5|XdgSurfaceV6|XdgToplevel|XdgToplevelV6|XmlListModel|XmlRole|YAnimator|ZoomBlur",
      "storage.type": "const|let|var|function|property|",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "print|console\\.log",
      "constant.language.boolean": "true|false"
    }, "identifier");
    this.$rules = {
      start: [{
        token: "string",
        regex: '"',
        next: "string"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: "text",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment.start",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        token: e,
        regex: "\\b\\w+\\b"
      }],
      string: [{
        token: "constant.language.escape",
        regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      comment: [{
        token: "comment.end",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    };
  };

  r.inherits(s, i), t.QmlHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/qml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/qml_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./qml_highlight_rules").QmlHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'"
    }, this.$id = "ace/mode/qml";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/qml"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-r.js":
/*!**************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-r.js ***!
  \**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/tex_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o(e) {
    e || (e = "text"), this.$rules = {
      start: [{
        token: "comment",
        regex: "%.*$"
      }, {
        token: e,
        regex: "\\\\[$&%#\\{\\}]"
      }, {
        token: "keyword",
        regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",
        next: "nospell"
      }, {
        token: "keyword",
        regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])"
      }, {
        token: "paren.keyword.operator",
        regex: "[[({]"
      }, {
        token: "paren.keyword.operator",
        regex: "[\\])}]"
      }, {
        token: e,
        regex: "\\s+"
      }],
      nospell: [{
        token: "comment",
        regex: "%.*$",
        next: "start"
      }, {
        token: "nospell." + e,
        regex: "\\\\[$&%#\\{\\}]"
      }, {
        token: "keyword",
        regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"
      }, {
        token: "keyword",
        regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])",
        next: "start"
      }, {
        token: "paren.keyword.operator",
        regex: "[[({]"
      }, {
        token: "paren.keyword.operator",
        regex: "[\\])]"
      }, {
        token: "paren.keyword.operator",
        regex: "}",
        next: "start"
      }, {
        token: "nospell." + e,
        regex: "\\s+"
      }, {
        token: "nospell." + e,
        regex: "\\w+"
      }]
    };
  };

  r.inherits(o, s), t.TexHighlightRules = o;
}), ace.define("ace/mode/r_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/tex_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./tex_highlight_rules").TexHighlightRules,
      u = function u() {
    var e = i.arrayToMap("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass".split("|")),
        t = i.arrayToMap("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|NA_complex_".split("|"));
    this.$rules = {
      start: [{
        token: "comment.sectionhead",
        regex: "#+(?!').*(?:----|====|####)\\s*$"
      }, {
        token: "comment",
        regex: "#+'",
        next: "rd-start"
      }, {
        token: "comment",
        regex: "#.*$"
      }, {
        token: "string",
        regex: '["]',
        next: "qqstring"
      }, {
        token: "string",
        regex: "[']",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+[Li]?\\b"
      }, {
        token: "constant.numeric",
        regex: "\\d+L\\b"
      }, {
        token: "constant.numeric",
        regex: "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b"
      }, {
        token: "constant.numeric",
        regex: "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:TRUE|FALSE|T|F)\\b"
      }, {
        token: "identifier",
        regex: "`.*?`"
      }, {
        onMatch: function onMatch(n) {
          return e[n] ? "keyword" : t[n] ? "constant.language" : n == "..." || n.match(/^\.\.\d+$/) ? "variable.language" : "identifier";
        },
        regex: "[a-zA-Z.][a-zA-Z0-9._]*\\b"
      }, {
        token: "keyword.operator",
        regex: "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:"
      }, {
        token: "keyword.operator",
        regex: "%.*?%"
      }, {
        token: "paren.keyword.operator",
        regex: "[[({]"
      }, {
        token: "paren.keyword.operator",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      qqstring: [{
        token: "string",
        regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      qstring: [{
        token: "string",
        regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }]
    };
    var n = new o("comment").getRules();

    for (var r = 0; r < n.start.length; r++) {
      n.start[r].token += ".virtual-comment";
    }

    this.addRules(n, "rd-"), this.$rules["rd-start"].unshift({
      token: "text",
      regex: "^",
      next: "start"
    }), this.$rules["rd-start"].unshift({
      token: "keyword",
      regex: "@(?!@)[^ ]*"
    }), this.$rules["rd-start"].unshift({
      token: "comment",
      regex: "@@"
    }), this.$rules["rd-start"].push({
      token: "comment",
      regex: "[^%\\\\[({\\])}]+"
    });
  };

  r.inherits(u, s), t.RHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/r", ["require", "exports", "module", "ace/unicode", "ace/range", "ace/lib/oop", "ace/mode/text", "ace/mode/text_highlight_rules", "ace/mode/r_highlight_rules", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../unicode"),
      i = e("../range").Range,
      s = e("../lib/oop"),
      o = e("./text").Mode,
      u = e("./text_highlight_rules").TextHighlightRules,
      a = e("./r_highlight_rules").RHighlightRules,
      f = e("./matching_brace_outdent").MatchingBraceOutdent,
      l = function l() {
    this.HighlightRules = a, this.$outdent = new f(), this.$behaviour = this.$defaultBehaviour;
  };

  s.inherits(l, o), function () {
    this.lineCommentStart = "#", this.tokenRe = new RegExp("^[" + r.wordChars + "._]+", "g"), this.nonTokenRe = new RegExp("^(?:[^" + r.wordChars + "._]|s])+", "g"), this.$id = "ace/mode/r", this.snippetFileId = "ace/snippets/r";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/r"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-razor.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-razor.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/csharp_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = this.createKeywordMapper({
      "variable.language": "this",
      keyword: "abstract|async|await|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|partial|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic",
      "constant.language": "null|true|false"
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))?'/
      }, {
        token: "string",
        start: '"',
        end: '"|$',
        next: [{
          token: "constant.language.escape",
          regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/
        }, {
          token: "invalid",
          regex: /\\./
        }]
      }, {
        token: "string",
        start: '@"',
        end: '"',
        next: [{
          token: "constant.language.escape",
          regex: '""'
        }]
      }, {
        token: "string",
        start: /\$"/,
        end: '"|$',
        next: [{
          token: "constant.language.escape",
          regex: /\\(:?$)|{{/
        }, {
          token: "constant.language.escape",
          regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/
        }, {
          token: "invalid",
          regex: /\\./
        }]
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: e,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "keyword",
        regex: "^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)"
      }, {
        token: "punctuation.operator",
        regex: "\\?|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(o, s), t.CSharpHighlightRules = o;
}), ace.define("ace/mode/razor_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/doc_comment_highlight_rules", "ace/mode/html_highlight_rules", "ace/mode/csharp_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      o = e("./html_highlight_rules").HtmlHighlightRules,
      u = e("./csharp_highlight_rules").CSharpHighlightRules,
      a = "razor-block-",
      f = function f() {
    u.call(this);

    var e = function e(_e, t) {
      return typeof t == "function" ? t(_e) : t;
    },
        t = "in-braces";

    this.$rules.start.unshift({
      regex: "[\\[({]",
      onMatch: function onMatch(e, n, r) {
        var i = /razor-[^\-]+-/.exec(n)[0];
        return r.unshift(e), r.unshift(i + t), this.next = i + t, "paren.lparen";
      }
    }, {
      start: "@\\*",
      end: "\\*@",
      token: "comment"
    });
    var n = {
      "{": "}",
      "[": "]",
      "(": ")"
    };
    this.$rules[t] = i.deepCopy(this.$rules.start), this.$rules[t].unshift({
      regex: "[\\])}]",
      onMatch: function onMatch(t, r, i) {
        var s = i[1];
        return n[s] !== t ? "invalid.illegal" : (i.shift(), i.shift(), this.next = e(t, i[0]) || "start", "paren.rparen");
      }
    });
  };

  r.inherits(f, u);

  var l = function l() {
    o.call(this);
    var e = {
      regex: "@[({]|@functions{",
      onMatch: function onMatch(e, t, n) {
        return n.unshift(e), n.unshift("razor-block-start"), this.next = "razor-block-start", "punctuation.block.razor";
      }
    },
        t = {
      "@{": "}",
      "@(": ")",
      "@functions{": "}"
    },
        n = {
      regex: "[})]",
      onMatch: function onMatch(e, n, r) {
        var i = r[1];
        return t[i] !== e ? "invalid.illegal" : (r.shift(), r.shift(), this.next = r.shift() || "start", "punctuation.block.razor");
      }
    },
        r = {
      regex: "@(?![{(])",
      onMatch: function onMatch(e, t, n) {
        return n.unshift("razor-short-start"), this.next = "razor-short-start", "punctuation.short.razor";
      }
    },
        i = {
      token: "",
      regex: "(?=[^A-Za-z_\\.()\\[\\]])",
      next: "pop"
    },
        s = {
      regex: "@(?=if)",
      onMatch: function onMatch(e, t, n) {
        return n.unshift(function (e) {
          return e !== "}" ? "start" : n.shift() || "start";
        }), this.next = "razor-block-start", "punctuation.control.razor";
      }
    },
        u = [{
      start: "@\\*",
      end: "\\*@",
      token: "comment"
    }, {
      token: ["meta.directive.razor", "text", "identifier"],
      regex: "^(\\s*@model)(\\s+)(.+)$"
    }, e, r];

    for (var a in this.$rules) {
      this.$rules[a].unshift.apply(this.$rules[a], u);
    }

    this.embedRules(f, "razor-block-", [n], ["start"]), this.embedRules(f, "razor-short-", [i], ["start"]), this.normalizeRules();
  };

  r.inherits(l, o), t.RazorHighlightRules = l, t.RazorLangHighlightRules = f;
}), ace.define("ace/mode/razor_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../token_iterator").TokenIterator,
      i = ["abstract", "as", "base", "bool", "break", "byte", "case", "catch", "char", "checked", "class", "const", "continue", "decimal", "default", "delegate", "do", "double", "else", "enum", "event", "explicit", "extern", "false", "finally", "fixed", "float", "for", "foreach", "goto", "if", "implicit", "in", "int", "interface", "internal", "is", "lock", "long", "namespace", "new", "null", "object", "operator", "out", "override", "params", "private", "protected", "public", "readonly", "ref", "return", "sbyte", "sealed", "short", "sizeof", "stackalloc", "static", "string", "struct", "switch", "this", "throw", "true", "try", "typeof", "uint", "ulong", "unchecked", "unsafe", "ushort", "using", "var", "virtual", "void", "volatile", "while"],
      s = ["Html", "Model", "Url", "Layout"],
      o = function o() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      if (e.lastIndexOf("razor-short-start") == -1 && e.lastIndexOf("razor-block-start") == -1) return [];
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (e.lastIndexOf("razor-short-start") != -1) return this.getShortStartCompletions(e, t, n, r);
      if (e.lastIndexOf("razor-block-start") != -1) return this.getKeywordCompletions(e, t, n, r);
    }, this.getShortStartCompletions = function (e, t, n, r) {
      return s.map(function (e) {
        return {
          value: e,
          meta: "keyword",
          score: 1e6
        };
      });
    }, this.getKeywordCompletions = function (e, t, n, r) {
      return s.concat(i).map(function (e) {
        return {
          value: e,
          meta: "keyword",
          score: 1e6
        };
      });
    };
  }).call(o.prototype), t.RazorCompletions = o;
}), ace.define("ace/mode/razor", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/razor_highlight_rules", "ace/mode/razor_completions", "ace/mode/html_completions"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./razor_highlight_rules").RazorHighlightRules,
      o = e("./razor_completions").RazorCompletions,
      u = e("./html_completions").HtmlCompletions,
      a = function a() {
    i.call(this), this.$highlightRules = new s(), this.$completer = new o(), this.$htmlCompleter = new u();
  };

  r.inherits(a, i), function () {
    this.getCompletions = function (e, t, n, r) {
      var i = this.$completer.getCompletions(e, t, n, r),
          s = this.$htmlCompleter.getCompletions(e, t, n, r);
      return i.concat(s);
    }, this.createWorker = function (e) {
      return null;
    }, this.$id = "ace/mode/razor", this.snippetFileId = "ace/snippets/razor";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/razor"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-rdoc.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-rdoc.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/latex_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment",
        regex: "%.*$"
      }, {
        token: ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"],
        regex: "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})"
      }, {
        token: ["keyword", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?"
      }, {
        token: ["storage.type", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\begin)({)(verbatim)(})",
        next: "verbatim"
      }, {
        token: ["storage.type", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\begin)({)(lstlisting)(})",
        next: "lstlisting"
      }, {
        token: ["storage.type", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\(?:begin|end))({)([\\w*]*)(})"
      }, {
        token: "storage.type",
        regex: /\\verb\b\*?/,
        next: [{
          token: ["keyword.operator", "string", "keyword.operator"],
          regex: "(.)(.*?)(\\1|$)|",
          next: "start"
        }]
      }, {
        token: "storage.type",
        regex: "\\\\[a-zA-Z]+"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "constant.character.escape",
        regex: "\\\\[^a-zA-Z]?"
      }, {
        token: "string",
        regex: "\\${1,2}",
        next: "equation"
      }],
      equation: [{
        token: "comment",
        regex: "%.*$"
      }, {
        token: "string",
        regex: "\\${1,2}",
        next: "start"
      }, {
        token: "constant.character.escape",
        regex: "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"
      }, {
        token: "error",
        regex: "^\\s*$",
        next: "start"
      }, {
        defaultToken: "string"
      }],
      verbatim: [{
        token: ["storage.type", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\end)({)(verbatim)(})",
        next: "start"
      }, {
        defaultToken: "text"
      }],
      lstlisting: [{
        token: ["storage.type", "lparen", "variable.parameter", "rparen"],
        regex: "(\\\\end)({)(lstlisting)(})",
        next: "start"
      }, {
        defaultToken: "text"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.LatexHighlightRules = s;
}), ace.define("ace/mode/rdoc_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/latex_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./latex_highlight_rules"),
      u = function u() {
    this.$rules = {
      start: [{
        token: "comment",
        regex: "%.*$"
      }, {
        token: "text",
        regex: "\\\\[$&%#\\{\\}]"
      }, {
        token: "keyword",
        regex: "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b",
        next: "nospell"
      }, {
        token: "keyword",
        regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])"
      }, {
        token: "paren.keyword.operator",
        regex: "[[({]"
      }, {
        token: "paren.keyword.operator",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      nospell: [{
        token: "comment",
        regex: "%.*$",
        next: "start"
      }, {
        token: "nospell.text",
        regex: "\\\\[$&%#\\{\\}]"
      }, {
        token: "keyword",
        regex: "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b"
      }, {
        token: "keyword",
        regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])",
        next: "start"
      }, {
        token: "paren.keyword.operator",
        regex: "[[({]"
      }, {
        token: "paren.keyword.operator",
        regex: "[\\])]"
      }, {
        token: "paren.keyword.operator",
        regex: "}",
        next: "start"
      }, {
        token: "nospell.text",
        regex: "\\s+"
      }, {
        token: "nospell.text",
        regex: "\\w+"
      }]
    };
  };

  r.inherits(u, s), t.RDocHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/rdoc", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/rdoc_highlight_rules", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./rdoc_highlight_rules").RDocHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = function u(e) {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.$id = "ace/mode/rdoc";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/rdoc"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-red.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-red.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/red_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "";
    this.$rules = {
      start: [{
        token: "keyword.operator",
        regex: /\s([\-+%/=<>*]|(?:\*\*\|\/\/|==|>>>?|<>|<<|=>|<=|=\?))(\s|(?=:))/
      }, {
        token: "string.email",
        regex: /\w[-\w._]*\@\w[-\w._]*/
      }, {
        token: "value.time",
        regex: /\b\d+:\d+(:\d+)?/
      }, {
        token: "string.url",
        regex: /\w[-\w_]*\:(\/\/)?\w[-\w._]*(:\d+)?/
      }, {
        token: "value.date",
        regex: /(\b\d{1,4}[-/]\d{1,2}[-/]\d{1,2}|\d{1,2}[-/]\d{1,2}[-/]\d{1,4})\b/
      }, {
        token: "value.tuple",
        regex: /\b\d{1,3}\.\d{1,3}\.\d{1,3}(\.\d{1,3}){0,9}/
      }, {
        token: "value.pair",
        regex: /[+-]?\d+x[-+]?\d+/
      }, {
        token: "value.binary",
        regex: /\b2#{([01]{8})+}/
      }, {
        token: "value.binary",
        regex: /\b64#{([\w/=+])+}/
      }, {
        token: "value.binary",
        regex: /(16)?#{([\dabcdefABCDEF][\dabcdefABCDEF])*}/
      }, {
        token: "value.issue",
        regex: /#\w[-\w'*.]*/
      }, {
        token: "value.numeric",
        regex: /[+-]?\d['\d]*(?:\.\d+)?e[-+]?\d{1,3}\%?(?!\w)/
      }, {
        token: "invalid.illegal",
        regex: /[+-]?\d['\d]*(?:\.\d+)?\%?[a-zA-Z]/
      }, {
        token: "value.numeric",
        regex: /[+-]?\d['\d]*(?:\.\d+)?\%?(?![a-zA-Z])/
      }, {
        token: "value.character",
        regex: /#"(\^[-@/_~^"HKLM\[]|.)"/
      }, {
        token: "string.file",
        regex: /%[-\w\.\/]+/
      }, {
        token: "string.tag",
        regex: /</,
        next: "tag"
      }, {
        token: "string",
        regex: /"/,
        next: "string"
      }, {
        token: "string.other",
        regex: "{",
        next: "string.other"
      }, {
        token: "comment",
        regex: "comment [{]",
        next: "comment"
      }, {
        token: "comment",
        regex: /;.+$/
      }, {
        token: "paren.map-start",
        regex: "#\\("
      }, {
        token: "paren.block-start",
        regex: "[\\[]"
      }, {
        token: "paren.block-end",
        regex: "[\\]]"
      }, {
        token: "paren.parens-start",
        regex: "[(]"
      }, {
        token: "paren.parens-end",
        regex: "\\)"
      }, {
        token: "keyword",
        regex: "/local|/external"
      }, {
        token: "keyword.preprocessor",
        regex: "#(if|either|switch|case|include|do|macrolocal|reset|process|trace)"
      }, {
        token: "constant.datatype!",
        regex: "(?:datatype|unset|none|logic|block|paren|string|file|url|char|integer|float|word|set-word|lit-word|get-word|refinement|issue|native|action|op|function|path|lit-path|set-path|get-path|routine|bitset|point|object|typeset|error|vector|hash|pair|percent|tuple|map|binary|time|tag|email|handle|date|image|event|series|any-type|number|any-object|scalar|any-string|any-word|any-function|any-block|any-list|any-path|immediate|all-word|internal|external|default)!(?![-!?\\w~])"
      }, {
        token: "keyword.function",
        regex: "\\b(?:collect|quote|on-parse-event|math|last|source|expand|show|context|object|input|quit|dir|make-dir|cause-error|error\\?|none\\?|block\\?|any-list\\?|word\\?|char\\?|any-string\\?|series\\?|binary\\?|attempt|url\\?|string\\?|suffix\\?|file\\?|object\\?|body-of|first|second|third|mod|clean-path|dir\\?|to-red-file|normalize-dir|list-dir|pad|empty\\?|dirize|offset\\?|what-dir|expand-directives|load|split-path|change-dir|to-file|path-thru|save|load-thru|View|float\\?|to-float|charset|\\?|probe|set-word\\?|q|words-of|replace|repend|react|function\\?|spec-of|unset\\?|halt|op\\?|any-function\\?|to-paren|tag\\?|routine|class-of|size-text|draw|handle\\?|link-tabs-to-parent|link-sub-to-parent|on-face-deep-change*|update-font-faces|do-actor|do-safe|do-events|pair\\?|foreach-face|hex-to-rgb|issue\\?|alter|path\\?|typeset\\?|datatype\\?|set-flag|layout|extract|image\\?|get-word\\?|to-logic|to-set-word|to-block|center-face|dump-face|request-font|request-file|request-dir|rejoin|ellipsize-at|any-block\\?|any-object\\?|map\\?|keys-of|a-an|also|parse-func-spec|help-string|what|routine\\?|action\\?|native\\?|refinement\\?|common-substr|red-complete-file|red-complete-path|unview|comment|\\?\\?|fourth|fifth|values-of|bitset\\?|email\\?|get-path\\?|hash\\?|integer\\?|lit-path\\?|lit-word\\?|logic\\?|paren\\?|percent\\?|set-path\\?|time\\?|tuple\\?|date\\?|vector\\?|any-path\\?|any-word\\?|number\\?|immediate\\?|scalar\\?|all-word\\?|to-bitset|to-binary|to-char|to-email|to-get-path|to-get-word|to-hash|to-integer|to-issue|to-lit-path|to-lit-word|to-map|to-none|to-pair|to-path|to-percent|to-refinement|to-set-path|to-string|to-tag|to-time|to-typeset|to-tuple|to-unset|to-url|to-word|to-image|to-date|parse-trace|modulo|eval-set-path|extract-boot-args|flip-exe-flag|split|do-file|exists-thru\\?|read-thru|do-thru|cos|sin|tan|acos|asin|atan|atan2|sqrt|clear-reactions|dump-reactions|react\\?|within\\?|overlap\\?|distance\\?|face\\?|metrics\\?|get-scroller|insert-event-func|remove-event-func|set-focus|help|fetch-help|about|ls|ll|pwd|cd|red-complete-input|matrix)(?![-!?\\w~])"
      }, {
        token: "keyword.action",
        regex: "\\b(?:to|remove|copy|insert|change|clear|move|poke|put|random|reverse|sort|swap|take|trim|add|subtract|divide|multiply|make|reflect|form|mold|modify|absolute|negate|power|remainder|round|even\\?|odd\\?|and~|complement|or~|xor~|append|at|back|find|skip|tail|head|head\\?|index\\?|length\\?|next|pick|select|tail\\?|delete|read|write)(?![-_!?\\w~])"
      }, {
        token: "keyword.native",
        regex: "\\b(?:not|any|set|uppercase|lowercase|checksum|try|catch|browse|throw|all|as|remove-each|func|function|does|has|do|reduce|compose|get|print|prin|equal\\?|not-equal\\?|strict-equal\\?|lesser\\?|greater\\?|lesser-or-equal\\?|greater-or-equal\\?|same\\?|type\\?|stats|bind|in|parse|union|unique|intersect|difference|exclude|complement\\?|dehex|negative\\?|positive\\?|max|min|shift|to-hex|sine|cosine|tangent|arcsine|arccosine|arctangent|arctangent2|NaN\\?|zero\\?|log-2|log-10|log-e|exp|square-root|construct|value\\?|as-pair|extend|debase|enbase|to-local-file|wait|unset|new-line|new-line\\?|context\\?|set-env|get-env|list-env|now|sign\\?|call|size\\?)(?![-!?\\w~])"
      }, {
        token: "keyword",
        regex: "\\b(?:Red(?=\\s+\\[)|object|context|make|self|keep)(?![-!?\\w~])"
      }, {
        token: "variable.language",
        regex: "this"
      }, {
        token: "keyword.control",
        regex: "(?:while|if|return|case|unless|either|until|loop|repeat|forever|foreach|forall|switch|break|continue|exit)(?![-!?\\w~])"
      }, {
        token: "constant.language",
        regex: "\\b(?:true|false|on|off|yes|none|no)(?![-!?\\w~])"
      }, {
        token: "constant.numeric",
        regex: /\bpi(?![^-_])/
      }, {
        token: "constant.character",
        regex: "\\b(space|tab|newline|cr|lf)(?![-!?\\w~])"
      }, {
        token: "keyword.operator",
        regex: "s(or|and|xor|is)s"
      }, {
        token: "variable.get-path",
        regex: /:\w[-\w'*.?!]*(\/\w[-\w'*.?!]*)(\/\w[-\w'*.?!]*)*/
      }, {
        token: "variable.set-path",
        regex: /\w[-\w'*.?!]*(\/\w[-\w'*.?!]*)(\/\w[-\w'*.?!]*)*:/
      }, {
        token: "variable.lit-path",
        regex: /'\w[-\w'*.?!]*(\/\w[-\w'*.?!]*)(\/\w[-\w'*.?!]*)*/
      }, {
        token: "variable.path",
        regex: /\w[-\w'*.?!]*(\/\w[-\w'*.?!]*)(\/\w[-\w'*.?!]*)*/
      }, {
        token: "variable.refinement",
        regex: /\/\w[-\w'*.?!]*/
      }, {
        token: "keyword.view.style",
        regex: "\\b(?:window|base|button|text|field|area|check|radio|progress|slider|camera|text-list|drop-list|drop-down|panel|group-box|tab-panel|h1|h2|h3|h4|h5|box|image|init)(?![-!?\\w~])"
      }, {
        token: "keyword.view.event",
        regex: "\\b(?:detect|on-detect|time|on-time|drawing|on-drawing|scroll|on-scroll|down|on-down|up|on-up|mid-down|on-mid-down|mid-up|on-mid-up|alt-down|on-alt-down|alt-up|on-alt-up|aux-down|on-aux-down|aux-up|on-aux-up|wheel|on-wheel|drag-start|on-drag-start|drag|on-drag|drop|on-drop|click|on-click|dbl-click|on-dbl-click|over|on-over|key|on-key|key-down|on-key-down|key-up|on-key-up|ime|on-ime|focus|on-focus|unfocus|on-unfocus|select|on-select|change|on-change|enter|on-enter|menu|on-menu|close|on-close|move|on-move|resize|on-resize|moving|on-moving|resizing|on-resizing|zoom|on-zoom|pan|on-pan|rotate|on-rotate|two-tap|on-two-tap|press-tap|on-press-tap|create|on-create|created|on-created)(?![-!?\\w~])"
      }, {
        token: "keyword.view.option",
        regex: "\\b(?:all-over|center|color|default|disabled|down|flags|focus|font|font-color|font-name|font-size|hidden|hint|left|loose|name|no-border|now|rate|react|select|size|space)(?![-!?\\w~])"
      }, {
        token: "constant.other.colour",
        regex: "\\b(?:Red|white|transparent|black|gray|aqua|beige|blue|brick|brown|coal|coffee|crimson|cyan|forest|gold|green|ivory|khaki|leaf|linen|magenta|maroon|mint|navy|oldrab|olive|orange|papaya|pewter|pink|purple|reblue|rebolor|sienna|silver|sky|snow|tanned|teal|violet|water|wheat|yello|yellow|glass)(?![-!?\\w~])"
      }, {
        token: "variable.get-word",
        regex: /\:\w[-\w'*.?!]*/
      }, {
        token: "variable.set-word",
        regex: /\w[-\w'*.?!]*\:/
      }, {
        token: "variable.lit-word",
        regex: /'\w[-\w'*.?!]*/
      }, {
        token: "variable.word",
        regex: /\b\w+[-\w'*.!?]*/
      }, {
        caseInsensitive: !0
      }],
      string: [{
        token: "string",
        regex: /"/,
        next: "start"
      }, {
        defaultToken: "string"
      }],
      "string.other": [{
        token: "string.other",
        regex: /}/,
        next: "start"
      }, {
        defaultToken: "string.other"
      }],
      tag: [{
        token: "string.tag",
        regex: />/,
        next: "start"
      }, {
        defaultToken: "string.tag"
      }],
      comment: [{
        token: "comment",
        regex: /}/,
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    };
  };

  r.inherits(s, i), t.RedHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/red", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/red_highlight_rules", "ace/mode/folding/cstyle", "ace/mode/matching_brace_outdent", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./red_highlight_rules").RedHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = e("./matching_brace_outdent").MatchingBraceOutdent,
      a = e("../range").Range,
      f = function f() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$outdent = new u(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = ";", this.blockComment = {
      start: "comment {",
      end: "}"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\[\(]\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/red";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/red"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-redshift.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-redshift.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/json_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "variable",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'
      }, {
        token: "string",
        regex: '"',
        next: "string"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: "text",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment.start",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      string: [{
        token: "constant.language.escape",
        regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }],
      comment: [{
        token: "comment.end",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    };
  };

  r.inherits(s, i), t.JsonHighlightRules = s;
}), ace.define("ace/mode/redshift_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules", "ace/mode/json_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = e("./json_highlight_rules").JsonHighlightRules,
      a = function a() {
    var e = "aes128|aes256|all|allowoverwrite|analyse|analyze|and|any|array|as|asc|authorization|backup|between|binary|blanksasnull|both|bytedict|bzip2|case|cast|check|collate|column|constraint|create|credentials|cross|current_date|current_time|current_timestamp|current_user|current_user_id|default|deferrable|deflate|defrag|delta|delta32k|desc|disable|distinct|do|else|emptyasnull|enable|encode|encrypt|encryption|end|except|explicit|false|for|foreign|freeze|from|full|globaldict256|globaldict64k|grant|group|gzip|having|identity|ignore|ilike|in|initially|inner|intersect|into|is|isnull|join|leading|left|like|limit|localtime|localtimestamp|lun|luns|lzo|lzop|minus|mostly13|mostly32|mostly8|natural|new|not|notnull|null|nulls|off|offline|offset|old|on|only|open|or|order|outer|overlaps|parallel|partition|percent|permissions|placing|primary|raw|readratio|recover|references|rejectlog|resort|restore|right|select|session_user|similar|some|sysdate|system|table|tag|tdes|text255|text32k|then|timestamp|to|top|trailing|true|truncatecolumns|union|unique|user|using|verbose|wallet|when|where|with|without",
        t = "current_schema|current_schemas|has_database_privilege|has_schema_privilege|has_table_privilege|age|current_time|current_timestamp|localtime|isfinite|now|ascii|get_bit|get_byte|octet_length|set_bit|set_byte|to_ascii|avg|count|listagg|max|min|stddev_samp|stddev_pop|sum|var_samp|var_pop|bit_and|bit_or|bool_and|bool_or|avg|count|cume_dist|dense_rank|first_value|last_value|lag|lead|listagg|max|median|min|nth_value|ntile|percent_rank|percentile_cont|percentile_disc|rank|ratio_to_report|row_number|case|coalesce|decode|greatest|least|nvl|nvl2|nullif|add_months|age|convert_timezone|current_date|timeofday|current_time|current_timestamp|date_cmp|date_cmp_timestamp|date_part_year|dateadd|datediff|date_part|date_trunc|extract|getdate|interval_cmp|isfinite|last_day|localtime|localtimestamp|months_between|next_day|now|sysdate|timestamp_cmp|timestamp_cmp_date|trunc|abs|acos|asin|atan|atan2|cbrt|ceiling|ceil|checksum|cos|cot|degrees|dexp|dlog1|dlog10|exp|floor|ln|log|mod|pi|power|radians|random|round|sin|sign|sqrt|tan|trunc|ascii|bpcharcmp|btrim|bttext_pattern_cmp|char_length|character_length|charindex|chr|concat|crc32|func_sha1|get_bit|get_byte|initcap|left|right|len|length|lower|lpad|rpad|ltrim|md5|octet_length|position|quote_ident|quote_literal|regexp_count|regexp_instr|regexp_replace|regexp_substr|repeat|replace|replicate|reverse|rtrim|set_bit|set_byte|split_part|strpos|strtol|substring|textlen|to_ascii|to_hex|translate|trim|upper|json_array_length|json_extract_array_element_text|json_extract_path_text|cast|convert|to_char|to_date|to_number|current_database|current_schema|current_schemas|current_user|current_user_id|has_database_privilege|has_schema_privilege|has_table_privilege|pg_backend_pid|pg_last_copy_count|pg_last_copy_id|pg_last_query_id|pg_last_unload_count|session_user|slice_num|user|version",
        n = this.createKeywordMapper({
      "support.function": t,
      keyword: e
    }, "identifier", !0),
        r = [{
      token: "string",
      regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
    }, {
      token: "variable.language",
      regex: '".*?"'
    }, {
      token: "constant.numeric",
      regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
    }, {
      token: n,
      regex: "[a-zA-Z_][a-zA-Z0-9_$]*\\b"
    }, {
      token: "keyword.operator",
      regex: "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|~=|~>=~|~>~|~~|~~\\*"
    }, {
      token: "paren.lparen",
      regex: "[\\(]"
    }, {
      token: "paren.rparen",
      regex: "[\\)]"
    }, {
      token: "text",
      regex: "\\s+"
    }];
    this.$rules = {
      start: [{
        token: "comment",
        regex: "--.*$"
      }, s.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "keyword.statementBegin",
        regex: "^[a-zA-Z]+",
        next: "statement"
      }, {
        token: "support.buildin",
        regex: "^\\\\[\\S]+.*$"
      }],
      statement: [{
        token: "comment",
        regex: "--.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "commentStatement"
      }, {
        token: "statementEnd",
        regex: ";",
        next: "start"
      }, {
        token: "string",
        regex: "\\$json\\$",
        next: "json-start"
      }, {
        token: "string",
        regex: "\\$[\\w_0-9]*\\$$",
        next: "dollarSql"
      }, {
        token: "string",
        regex: "\\$[\\w_0-9]*\\$",
        next: "dollarStatementString"
      }].concat(r),
      dollarSql: [{
        token: "comment",
        regex: "--.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "commentDollarSql"
      }, {
        token: "string",
        regex: "^\\$[\\w_0-9]*\\$",
        next: "statement"
      }, {
        token: "string",
        regex: "\\$[\\w_0-9]*\\$",
        next: "dollarSqlString"
      }].concat(r),
      comment: [{
        token: "comment",
        regex: ".*?\\*\\/",
        next: "start"
      }, {
        token: "comment",
        regex: ".+"
      }],
      commentStatement: [{
        token: "comment",
        regex: ".*?\\*\\/",
        next: "statement"
      }, {
        token: "comment",
        regex: ".+"
      }],
      commentDollarSql: [{
        token: "comment",
        regex: ".*?\\*\\/",
        next: "dollarSql"
      }, {
        token: "comment",
        regex: ".+"
      }],
      dollarStatementString: [{
        token: "string",
        regex: ".*?\\$[\\w_0-9]*\\$",
        next: "statement"
      }, {
        token: "string",
        regex: ".+"
      }],
      dollarSqlString: [{
        token: "string",
        regex: ".*?\\$[\\w_0-9]*\\$",
        next: "dollarSql"
      }, {
        token: "string",
        regex: ".+"
      }]
    }, this.embedRules(s, "doc-", [s.getEndRule("start")]), this.embedRules(u, "json-", [{
      token: "string",
      regex: "\\$json\\$",
      next: "statement"
    }]);
  };

  r.inherits(a, o), t.RedshiftHighlightRules = a;
}), ace.define("ace/mode/redshift", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/redshift_highlight_rules", "ace/range"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("../mode/text").Mode,
      s = e("./redshift_highlight_rules").RedshiftHighlightRules,
      o = e("../range").Range,
      u = function u() {
    this.HighlightRules = s;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "--", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      return e == "start" || e == "keyword.statementEnd" ? "" : this.$getIndent(t);
    }, this.$id = "ace/mode/redshift";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/redshift"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-rhtml.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-rhtml.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/tex_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o(e) {
    e || (e = "text"), this.$rules = {
      start: [{
        token: "comment",
        regex: "%.*$"
      }, {
        token: e,
        regex: "\\\\[$&%#\\{\\}]"
      }, {
        token: "keyword",
        regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",
        next: "nospell"
      }, {
        token: "keyword",
        regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])"
      }, {
        token: "paren.keyword.operator",
        regex: "[[({]"
      }, {
        token: "paren.keyword.operator",
        regex: "[\\])}]"
      }, {
        token: e,
        regex: "\\s+"
      }],
      nospell: [{
        token: "comment",
        regex: "%.*$",
        next: "start"
      }, {
        token: "nospell." + e,
        regex: "\\\\[$&%#\\{\\}]"
      }, {
        token: "keyword",
        regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"
      }, {
        token: "keyword",
        regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])",
        next: "start"
      }, {
        token: "paren.keyword.operator",
        regex: "[[({]"
      }, {
        token: "paren.keyword.operator",
        regex: "[\\])]"
      }, {
        token: "paren.keyword.operator",
        regex: "}",
        next: "start"
      }, {
        token: "nospell." + e,
        regex: "\\s+"
      }, {
        token: "nospell." + e,
        regex: "\\w+"
      }]
    };
  };

  r.inherits(o, s), t.TexHighlightRules = o;
}), ace.define("ace/mode/r_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/tex_highlight_rules"], function (e, t, n) {
  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./tex_highlight_rules").TexHighlightRules,
      u = function u() {
    var e = i.arrayToMap("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass".split("|")),
        t = i.arrayToMap("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|NA_complex_".split("|"));
    this.$rules = {
      start: [{
        token: "comment.sectionhead",
        regex: "#+(?!').*(?:----|====|####)\\s*$"
      }, {
        token: "comment",
        regex: "#+'",
        next: "rd-start"
      }, {
        token: "comment",
        regex: "#.*$"
      }, {
        token: "string",
        regex: '["]',
        next: "qqstring"
      }, {
        token: "string",
        regex: "[']",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+[Li]?\\b"
      }, {
        token: "constant.numeric",
        regex: "\\d+L\\b"
      }, {
        token: "constant.numeric",
        regex: "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b"
      }, {
        token: "constant.numeric",
        regex: "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:TRUE|FALSE|T|F)\\b"
      }, {
        token: "identifier",
        regex: "`.*?`"
      }, {
        onMatch: function onMatch(n) {
          return e[n] ? "keyword" : t[n] ? "constant.language" : n == "..." || n.match(/^\.\.\d+$/) ? "variable.language" : "identifier";
        },
        regex: "[a-zA-Z.][a-zA-Z0-9._]*\\b"
      }, {
        token: "keyword.operator",
        regex: "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:"
      }, {
        token: "keyword.operator",
        regex: "%.*?%"
      }, {
        token: "paren.keyword.operator",
        regex: "[[({]"
      }, {
        token: "paren.keyword.operator",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      qqstring: [{
        token: "string",
        regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      qstring: [{
        token: "string",
        regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }]
    };
    var n = new o("comment").getRules();

    for (var r = 0; r < n.start.length; r++) {
      n.start[r].token += ".virtual-comment";
    }

    this.addRules(n, "rd-"), this.$rules["rd-start"].unshift({
      token: "text",
      regex: "^",
      next: "start"
    }), this.$rules["rd-start"].unshift({
      token: "keyword",
      regex: "@(?!@)[^ ]*"
    }), this.$rules["rd-start"].unshift({
      token: "comment",
      regex: "@@"
    }), this.$rules["rd-start"].push({
      token: "comment",
      regex: "[^%\\\\[({\\])}]+"
    });
  };

  r.inherits(u, s), t.RHighlightRules = u;
}), ace.define("ace/mode/rhtml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/r_highlight_rules", "ace/mode/html_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./r_highlight_rules").RHighlightRules,
      s = e("./html_highlight_rules").HtmlHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = function u() {
    s.call(this), this.$rules.start.unshift({
      token: "support.function.codebegin",
      regex: "^<!--\\s*begin.rcode\\s*(?:.*)",
      next: "r-start"
    }), this.embedRules(i, "r-", [{
      token: "support.function.codeend",
      regex: "^\\s*end.rcode\\s*-->",
      next: "start"
    }], ["start"]), this.normalizeRules();
  };

  r.inherits(u, o), t.RHtmlHighlightRules = u;
}), ace.define("ace/mode/rhtml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/rhtml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./rhtml_highlight_rules").RHtmlHighlightRules,
      o = function o(e, t) {
    i.call(this), this.$session = t, this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.insertChunkInfo = {
      value: "<!--begin.rcode\n\nend.rcode-->\n",
      position: {
        row: 0,
        column: 15
      }
    }, this.getLanguageMode = function (e) {
      return this.$session.getState(e.row).match(/^r-/) ? "R" : "HTML";
    }, this.$id = "ace/mode/rhtml";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/rhtml"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-rst.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-rst.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/rst_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = {
      title: "markup.heading",
      list: "markup.heading",
      table: "constant",
      directive: "keyword.operator",
      entity: "string",
      link: "markup.underline.list",
      bold: "markup.bold",
      italic: "markup.italic",
      literal: "support.function",
      comment: "comment"
    },
        t = "(^|\\s|[\"'(<\\[{\\-/:])",
        n = "(?:$|(?=\\s|[\\\\.,;!?\\-/:\"')>\\]}]))";
    this.$rules = {
      start: [{
        token: e.title,
        regex: "(^)([\\=\\-`:\\.'\"~\\^_\\*\\+#])(\\2{2,}\\s*$)"
      }, {
        token: ["text", e.directive, e.literal],
        regex: "(^\\s*\\.\\. )([^: ]+::)(.*$)",
        next: "codeblock"
      }, {
        token: e.directive,
        regex: "::$",
        next: "codeblock"
      }, {
        token: [e.entity, e.link],
        regex: "(^\\.\\. _[^:]+:)(.*$)"
      }, {
        token: [e.entity, e.link],
        regex: "(^__ )(https?://.*$)"
      }, {
        token: e.entity,
        regex: "^\\.\\. \\[[^\\]]+\\] "
      }, {
        token: e.comment,
        regex: "^\\.\\. .*$",
        next: "comment"
      }, {
        token: e.list,
        regex: "^\\s*[\\*\\+-] "
      }, {
        token: e.list,
        regex: "^\\s*(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\. "
      }, {
        token: e.list,
        regex: "^\\s*\\(?(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\) "
      }, {
        token: e.table,
        regex: "^={2,}(?: +={2,})+$"
      }, {
        token: e.table,
        regex: "^\\+-{2,}(?:\\+-{2,})+\\+$"
      }, {
        token: e.table,
        regex: "^\\+={2,}(?:\\+={2,})+\\+$"
      }, {
        token: ["text", e.literal],
        regex: t + "(``)(?=\\S)",
        next: "code"
      }, {
        token: ["text", e.bold],
        regex: t + "(\\*\\*)(?=\\S)",
        next: "bold"
      }, {
        token: ["text", e.italic],
        regex: t + "(\\*)(?=\\S)",
        next: "italic"
      }, {
        token: e.entity,
        regex: "\\|[\\w\\-]+?\\|"
      }, {
        token: e.entity,
        regex: ":[\\w-:]+:`\\S",
        next: "entity"
      }, {
        token: ["text", e.entity],
        regex: t + "(_`)(?=\\S)",
        next: "entity"
      }, {
        token: e.entity,
        regex: "_[A-Za-z0-9\\-]+?"
      }, {
        token: ["text", e.link],
        regex: t + "(`)(?=\\S)",
        next: "link"
      }, {
        token: e.link,
        regex: "[A-Za-z0-9\\-]+?__?"
      }, {
        token: e.link,
        regex: "\\[[^\\]]+?\\]_"
      }, {
        token: e.link,
        regex: "https?://\\S+"
      }, {
        token: e.table,
        regex: "\\|"
      }],
      codeblock: [{
        token: e.literal,
        regex: "^ +.+$",
        next: "codeblock"
      }, {
        token: e.literal,
        regex: "^$",
        next: "codeblock"
      }, {
        token: "empty",
        regex: "",
        next: "start"
      }],
      code: [{
        token: e.literal,
        regex: "\\S``" + n,
        next: "start"
      }, {
        defaultToken: e.literal
      }],
      bold: [{
        token: e.bold,
        regex: "\\S\\*\\*" + n,
        next: "start"
      }, {
        defaultToken: e.bold
      }],
      italic: [{
        token: e.italic,
        regex: "\\S\\*" + n,
        next: "start"
      }, {
        defaultToken: e.italic
      }],
      entity: [{
        token: e.entity,
        regex: "\\S`" + n,
        next: "start"
      }, {
        defaultToken: e.entity
      }],
      link: [{
        token: e.link,
        regex: "\\S`__?" + n,
        next: "start"
      }, {
        defaultToken: e.link
      }],
      comment: [{
        token: e.comment,
        regex: "^ +.+$",
        next: "comment"
      }, {
        token: e.comment,
        regex: "^$",
        next: "comment"
      }, {
        token: "empty",
        regex: "",
        next: "start"
      }]
    };
  };

  r.inherits(o, s), t.RSTHighlightRules = o;
}), ace.define("ace/mode/rst", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/rst_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./rst_highlight_rules").RSTHighlightRules,
      o = function o() {
    this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.type = "text", this.$id = "ace/mode/rst", this.snippetFileId = "ace/snippets/rst";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/rst"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-ruby.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-ruby.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/ruby_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = t.constantOtherSymbol = {
    token: "constant.other.symbol.ruby",
    regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
  };
  t.qString = {
    token: "string",
    regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
  }, t.qqString = {
    token: "string",
    regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
  }, t.tString = {
    token: "string",
    regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
  };

  var o = t.constantNumericHex = {
    token: "constant.numeric",
    regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
  },
      u = t.constantNumericBinary = {
    token: "constant.numeric",
    regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/
  },
      a = t.constantNumericDecimal = {
    token: "constant.numeric",
    regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/
  },
      f = t.constantNumericDecimal = {
    token: "constant.numeric",
    regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/
  },
      l = t.constantNumericRational = {
    token: "constant.numeric",
    regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/
  },
      c = t.constantNumericComplex = {
    token: "constant.numeric",
    regex: /\b([\d]i)\b/
  },
      h = t.constantNumericFloat = {
    token: "constant.numeric",
    regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"
  },
      p = t.instanceVariable = {
    token: "variable.instance",
    regex: "@{1,2}[a-zA-Z_\\d]+"
  },
      d = function d() {
    var e = "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method",
        t = "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend",
        n = "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION",
        r = "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",
        i = this.$keywords = this.createKeywordMapper({
      keyword: t,
      "constant.language": n,
      "variable.language": r,
      "support.function": e,
      "invalid.deprecated": "debugger"
    }, "identifier"),
        d = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",
        v = {
      "(": ")",
      "[": "]",
      "{": "}",
      "<": ">",
      "^": "^",
      "|": "|",
      "%": "%"
    };
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "comment.multiline",
        regex: "^=begin(?=$|\\s.*$)",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: /[/](?=.*\/)/,
        next: "regex"
      }, [{
        token: ["constant.other.symbol.ruby", "string.start"],
        regex: /(:)?(")/,
        push: [{
          token: "constant.language.escape",
          regex: d
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /"/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /`/,
        push: [{
          token: "constant.language.escape",
          regex: d
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /`/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: ["constant.other.symbol.ruby", "string.start"],
        regex: /(:)?(')/,
        push: [{
          token: "constant.language.escape",
          regex: /\\['\\]/
        }, {
          token: "string.end",
          regex: /'/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /%[qwx]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "qStateWithoutInterpolation", this.token;
        }
      }, {
        token: "string.start",
        regex: /%[QWX]?([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "qStateWithInterpolation", this.token;
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /%[si]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "sStateWithoutInterpolation", this.token;
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /%[SI]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "sStateWithInterpolation", this.token;
        }
      }, {
        token: "string.regexp",
        regex: /%[r]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "rState", this.token;
        }
      }], {
        token: "punctuation",
        regex: "::"
      }, p, {
        token: "variable.global",
        regex: "[$][a-zA-Z_\\d]+"
      }, {
        token: "support.class",
        regex: "[A-Z][a-zA-Z_\\d]*"
      }, {
        token: ["punctuation.operator", "support.function"],
        regex: /(\.)([a-zA-Z_\d]+)(?=\()/
      }, {
        token: ["punctuation.operator", "identifier"],
        regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/
      }, {
        token: "string.character",
        regex: "\\B\\?(?:" + d + "|\\S)"
      }, {
        token: "punctuation.operator",
        regex: /\?(?=.+:)/
      }, l, c, s, o, h, u, a, f, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: i,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "punctuation.separator.key-value",
        regex: "=>"
      }, {
        stateName: "heredoc",
        onMatch: function onMatch(e, t, n) {
          var r = e[2] == "-" || e[2] == "~" ? "indentedHeredoc" : "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[3]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "string",
            value: i[2]
          }, {
            type: "support.class",
            value: i[3]
          }, {
            type: "string",
            value: i[4]
          }];
        },
        regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",
        rules: {
          heredoc: [{
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }],
          indentedHeredoc: [{
            token: "string",
            regex: "^ +"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" || t[0] === "indentedHeredoc" ? t[0] : e;
        }
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]",
        onMatch: function onMatch(e, t, n) {
          return this.next = "", e == "}" && n.length > 1 && n[1] != "start" && (n.shift(), this.next = n.shift()), this.token;
        }
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/
      }],
      comment: [{
        token: "comment.multiline",
        regex: "^=end(?=$|\\s.*$)",
        next: "start"
      }, {
        token: "comment",
        regex: ".+"
      }],
      qStateWithInterpolation: [{
        token: "string.start",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "string";
        }
      }, {
        token: "constant.language.escape",
        regex: d
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "string.end",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "string");
        }
      }, {
        defaultToken: "string"
      }],
      qStateWithoutInterpolation: [{
        token: "string.start",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "string";
        }
      }, {
        token: "constant.language.escape",
        regex: /\\['\\]/
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "string.end",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "string");
        }
      }, {
        defaultToken: "string"
      }],
      sStateWithoutInterpolation: [{
        token: "constant.other.symbol.ruby",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.other.symbol.ruby";
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.other.symbol.ruby");
        }
      }, {
        defaultToken: "constant.other.symbol.ruby"
      }],
      sStateWithInterpolation: [{
        token: "constant.other.symbol.ruby",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.other.symbol.ruby";
        }
      }, {
        token: "constant.language.escape",
        regex: d
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "constant.other.symbol.ruby",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.other.symbol.ruby");
        }
      }, {
        defaultToken: "constant.other.symbol.ruby"
      }],
      rState: [{
        token: "string.regexp",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.language.escape";
        }
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "string.regexp",
        regex: /\//
      }, {
        token: "string.regexp",
        regex: /[)\]>}^|%][imxouesn]*/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e[0] === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.language.escape");
        }
      }, {
        include: "regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex: [{
        token: "regexp.keyword",
        regex: /\\[wWdDhHsS]/
      }, {
        token: "constant.language.escape",
        regex: /\\[AGbBzZ]/
      }, {
        token: "constant.language.escape",
        regex: /\\g<[a-zA-Z0-9]*>/
      }, {
        token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"],
        regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/
      }, {
        token: ["constant.language.escape", "invalid", "constant.language.escape"],
        regex: /(\\p{\^?)([^/]*)(})/
      }, {
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: /[/][imxouesn]*/,
        next: "start"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "regexp.keyword",
        regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        push: "regex_character_class"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.keyword",
        regex: /\\[wWdDhHsS]/
      }, {
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: /&?&?\[\^?/,
        push: "regex_character_class"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "pop"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        defaultToken: "string.regexp.characterclass"
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, i), t.RubyHighlightRules = d;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/ruby", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = e("../../token_iterator").TokenIterator,
      u = t.FoldMode = function () {};

  r.inherits(u, i), function () {
    this.indentKeywords = {
      "class": 1,
      def: 1,
      module: 1,
      "do": 1,
      unless: 1,
      "if": 1,
      "while": 1,
      "for": 1,
      until: 1,
      begin: 1,
      "else": 0,
      elsif: 0,
      rescue: 0,
      ensure: 0,
      when: 0,
      end: -1,
      "case": 1,
      "=begin": 1,
      "=end": -1
    }, this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/, this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = this.foldingStartMarker.test(r),
          s = this.foldingStopMarker.test(r);

      if (i && !s) {
        var o = r.match(this.foldingStartMarker);

        if (o[1]) {
          if (o[1] == "if" || o[1] == "else" || o[1] == "while" || o[1] == "until" || o[1] == "unless") {
            if (o[1] == "else" && /^\s*else\s*$/.test(r) === !1) return;
            if (/^\s*(?:if|else|while|until|unless)\s*/.test(r) === !1) return;
          }

          if (o[1] == "when" && /\sthen\s/.test(r) === !0) return;
          if (e.getTokenAt(n, o.index + 2).type === "keyword") return "start";
        } else {
          if (!o[3]) return "start";
          if (e.getTokenAt(n, o.index + 1).type === "comment.multiline") return "start";
        }
      }

      if (t != "markbeginend" || !s || i && s) return "";
      var o = r.match(this.foldingStopMarker);

      if (o[3] === "end") {
        if (e.getTokenAt(n, o.index + 1).type === "keyword") return "end";
      } else {
        if (!o[1]) return "end";
        if (e.getTokenAt(n, o.index + 1).type === "comment.multiline") return "end";
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.doc.getLine(n),
          i = this.foldingStartMarker.exec(r);
      if (i) return i[1] || i[3] ? this.rubyBlock(e, n, i.index + 2) : this.openingBracketBlock(e, "{", n, i.index);
      var i = this.foldingStopMarker.exec(r);
      if (i) return i[3] === "end" && e.getTokenAt(n, i.index + 1).type === "keyword" ? this.rubyBlock(e, n, i.index + 1) : i[1] === "=end" && e.getTokenAt(n, i.index + 1).type === "comment.multiline" ? this.rubyBlock(e, n, i.index + 1) : this.closingBracketBlock(e, "}", n, i.index + i[0].length);
    }, this.rubyBlock = function (e, t, n, r) {
      var i = new o(e, t, n),
          u = i.getCurrentToken();
      if (!u || u.type != "keyword" && u.type != "comment.multiline") return;
      var a = u.value,
          f = e.getLine(t);

      switch (u.value) {
        case "if":
        case "unless":
        case "while":
        case "until":
          var l = new RegExp("^\\s*" + u.value);
          if (!l.test(f)) return;
          var c = this.indentKeywords[a];
          break;

        case "when":
          if (/\sthen\s/.test(f)) return;

        case "elsif":
        case "rescue":
        case "ensure":
          var c = 1;
          break;

        case "else":
          var l = new RegExp("^\\s*" + u.value + "\\s*$");
          if (!l.test(f)) return;
          var c = 1;
          break;

        default:
          var c = this.indentKeywords[a];
      }

      var h = [a];
      if (!c) return;
      var p = c === -1 ? e.getLine(t - 1).length : e.getLine(t).length,
          d = t,
          v = [];
      v.push(i.getCurrentTokenRange()), i.step = c === -1 ? i.stepBackward : i.stepForward;
      if (u.type == "comment.multiline") while (u = i.step()) {
        if (u.type !== "comment.multiline") continue;

        if (c == 1) {
          p = 6;
          if (u.value == "=end") break;
        } else if (u.value == "=begin") break;
      } else while (u = i.step()) {
        var m = !1;
        if (u.type !== "keyword") continue;
        var g = c * this.indentKeywords[u.value];
        f = e.getLine(i.getCurrentTokenRow());

        switch (u.value) {
          case "do":
            for (var y = i.$tokenIndex - 1; y >= 0; y--) {
              var b = i.$rowTokens[y];

              if (b && (b.value == "while" || b.value == "until" || b.value == "for")) {
                g = 0;
                break;
              }
            }

            break;

          case "else":
            var l = new RegExp("^\\s*" + u.value + "\\s*$");
            if (!l.test(f) || a == "case") g = 0, m = !0;
            break;

          case "if":
          case "unless":
          case "while":
          case "until":
            var l = new RegExp("^\\s*" + u.value);
            l.test(f) || (g = 0, m = !0);
            break;

          case "when":
            if (/\sthen\s/.test(f) || a == "case") g = 0, m = !0;
        }

        if (g > 0) h.unshift(u.value);else if (g <= 0 && m === !1) {
          h.shift();

          if (!h.length) {
            if ((a == "while" || a == "until" || a == "for") && u.value != "do") break;
            if (u.value == "do" && c == -1 && g != 0) break;
            if (u.value != "do") break;
          }

          g === 0 && h.unshift(u.value);
        }
      }
      if (!u) return null;
      if (r) return v.push(i.getCurrentTokenRange()), v;
      var t = i.getCurrentTokenRow();

      if (c === -1) {
        if (u.type === "comment.multiline") var w = 6;else var w = e.getLine(t).length;
        return new s(t, w, d - 1, p);
      }

      return new s(d, p, t - 1, e.getLine(t - 1).length);
    };
  }.call(u.prototype);
}), ace.define("ace/mode/ruby", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/ruby_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/ruby"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./ruby_highlight_rules").RubyHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/ruby").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f(), this.indentKeywords = this.foldingRules.indentKeywords;
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[]\s*$/),
            u = t.match(/^\s*(class|def|module)\s.*$/),
            a = t.match(/.*do(\s*|\s+\|.*\|\s*)$/),
            f = t.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);
        if (o || u || a || f) r += n;
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return /^\s+(end|else|rescue|ensure)$/.test(t + n) || this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n);
      if (/}/.test(r)) return this.$outdent.autoOutdent(t, n);
      var i = this.$getIndent(r),
          s = t.getLine(n - 1),
          o = this.$getIndent(s),
          a = t.getTabString();
      o.length <= i.length && i.slice(-a.length) == a && t.remove(new u(n, i.length - a.length, n, i.length));
    }, this.getMatching = function (e, t, n) {
      if (t == undefined) {
        var r = e.selection.lead;
        n = r.column, t = r.row;
      }

      var i = e.getTokenAt(t, n);
      if (i && i.value in this.indentKeywords) return this.foldingRules.rubyBlock(e, t, n, !0);
    }, this.$id = "ace/mode/ruby", this.snippetFileId = "ace/snippets/ruby";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/ruby"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-rust.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-rust.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/rust_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = /\\(?:[nrt0'"\\]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\})/.source,
      o = function o() {
    this.$rules = {
      start: [{
        token: "variable.other.source.rust",
        regex: "'[a-zA-Z_][a-zA-Z0-9_]*(?![\\'])"
      }, {
        token: "string.quoted.single.source.rust",
        regex: "'(?:[^'\\\\]|" + s + ")'"
      }, {
        token: "identifier",
        regex: /r#[a-zA-Z_][a-zA-Z0-9_]*\b/
      }, {
        stateName: "bracketedComment",
        onMatch: function onMatch(e, t, n) {
          return n.unshift(this.next, e.length - 1, t), "string.quoted.raw.source.rust";
        },
        regex: /r#*"/,
        next: [{
          onMatch: function onMatch(e, t, n) {
            var r = "string.quoted.raw.source.rust";
            return e.length >= n[1] ? (e.length > n[1] && (r = "invalid"), n.shift(), n.shift(), this.next = n.shift()) : this.next = "", r;
          },
          regex: /"#*/,
          next: "start"
        }, {
          defaultToken: "string.quoted.raw.source.rust"
        }]
      }, {
        token: "string.quoted.double.source.rust",
        regex: '"',
        push: [{
          token: "string.quoted.double.source.rust",
          regex: '"',
          next: "pop"
        }, {
          token: "constant.character.escape.source.rust",
          regex: s
        }, {
          defaultToken: "string.quoted.double.source.rust"
        }]
      }, {
        token: ["keyword.source.rust", "text", "entity.name.function.source.rust"],
        regex: "\\b(fn)(\\s+)((?:r#)?[a-zA-Z_][a-zA-Z0-9_]*)"
      }, {
        token: "support.constant",
        regex: "\\b[a-zA-Z_][\\w\\d]*::"
      }, {
        token: "keyword.source.rust",
        regex: "\\b(?:abstract|alignof|as|async|await|become|box|break|catch|continue|const|crate|default|do|dyn|else|enum|extern|for|final|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\\b"
      }, {
        token: "storage.type.source.rust",
        regex: "\\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|u128|f16|f32|f64|i8|i16|i32|i64|i128|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t)\\b"
      }, {
        token: "variable.language.source.rust",
        regex: "\\bself\\b"
      }, {
        token: "comment.line.doc.source.rust",
        regex: "//!.*$"
      }, {
        token: "comment.line.double-dash.source.rust",
        regex: "//.*$"
      }, {
        token: "comment.start.block.source.rust",
        regex: "/\\*",
        stateName: "comment",
        push: [{
          token: "comment.start.block.source.rust",
          regex: "/\\*",
          push: "comment"
        }, {
          token: "comment.end.block.source.rust",
          regex: "\\*/",
          next: "pop"
        }, {
          defaultToken: "comment.block.source.rust"
        }]
      }, {
        token: "keyword.operator",
        regex: /\$|[-=]>|[-+%^=!&|<>]=?|[*/](?![*/])=?/
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/
      }, {
        token: "paren.lparen",
        regex: /[\[({]/
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "constant.language.source.rust",
        regex: "\\b(?:true|false|Some|None|Ok|Err)\\b"
      }, {
        token: "support.constant.source.rust",
        regex: "\\b(?:EXIT_FAILURE|EXIT_SUCCESS|RAND_MAX|EOF|SEEK_SET|SEEK_CUR|SEEK_END|_IOFBF|_IONBF|_IOLBF|BUFSIZ|FOPEN_MAX|FILENAME_MAX|L_tmpnam|TMP_MAX|O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_EXCL|O_TRUNC|S_IFIFO|S_IFCHR|S_IFBLK|S_IFDIR|S_IFREG|S_IFMT|S_IEXEC|S_IWRITE|S_IREAD|S_IRWXU|S_IXUSR|S_IWUSR|S_IRUSR|F_OK|R_OK|W_OK|X_OK|STDIN_FILENO|STDOUT_FILENO|STDERR_FILENO)\\b"
      }, {
        token: "meta.preprocessor.source.rust",
        regex: "\\b\\w\\(\\w\\)*!|#\\[[\\w=\\(\\)_]+\\]\\b"
      }, {
        token: "constant.numeric.source.rust",
        regex: /\b(?:0x[a-fA-F0-9_]+|0o[0-7_]+|0b[01_]+|[0-9][0-9_]*(?!\.))(?:[iu](?:size|8|16|32|64|128))?\b/
      }, {
        token: "constant.numeric.source.rust",
        regex: /\b(?:[0-9][0-9_]*)(?:\.[0-9][0-9_]*)?(?:[Ee][+-][0-9][0-9_]*)?(?:f32|f64)?\b/
      }]
    }, this.normalizeRules();
  };

  o.metaData = {
    fileTypes: ["rs", "rc"],
    foldingStartMarker: "^.*\\bfn\\s*(\\w+\\s*)?\\([^\\)]*\\)(\\s*\\{[^\\}]*)?\\s*$",
    foldingStopMarker: "^\\s*\\}",
    name: "Rust",
    scopeName: "source.rust"
  }, r.inherits(o, i), t.RustHighlightRules = o;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/rust", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/rust_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./rust_highlight_rules").RustHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/",
      nestable: !0
    }, this.$quotes = {
      '"': '"'
    }, this.$id = "ace/mode/rust";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/rust"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-sass.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-sass.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/scss_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/css_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./css_highlight_rules"),
      u = function u() {
    var e = i.arrayToMap(o.supportType.split("|")),
        t = i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unquote".split("|")),
        n = i.arrayToMap(o.supportConstant.split("|")),
        r = i.arrayToMap(o.supportConstantColor.split("|")),
        s = i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),
        u = i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),
        a = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: '["].*\\\\$',
        next: "qqstring"
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "string",
        regex: "['].*\\\\$",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: a + "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: "constant.numeric",
        regex: a
      }, {
        token: ["support.function", "string", "support.function"],
        regex: "(url\\()(.*)(\\))"
      }, {
        token: function token(i) {
          return e.hasOwnProperty(i.toLowerCase()) ? "support.type" : s.hasOwnProperty(i) ? "keyword" : n.hasOwnProperty(i) ? "constant.language" : t.hasOwnProperty(i) ? "support.function" : r.hasOwnProperty(i.toLowerCase()) ? "support.constant.color" : u.hasOwnProperty(i.toLowerCase()) ? "variable.language" : "text";
        },
        regex: "\\-?[@a-z_][@a-z0-9_\\-]*"
      }, {
        token: "variable",
        regex: "[a-z_\\-$][a-z0-9_\\-$]*\\b"
      }, {
        token: "variable.language",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        token: "keyword.operator",
        regex: "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        caseInsensitive: !0
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqstring: [{
        token: "string",
        regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      qstring: [{
        token: "string",
        regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }]
    };
  };

  r.inherits(u, s), t.ScssHighlightRules = u;
}), ace.define("ace/mode/sass_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/scss_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./scss_highlight_rules").ScssHighlightRules,
      o = function o() {
    s.call(this);
    var e = this.$rules.start;
    e[1].token == "comment" && (e.splice(1, 1, {
      onMatch: function onMatch(e, t, n) {
        return n.unshift(this.next, -1, e.length - 2, t), "comment";
      },
      regex: /^\s*\/\*/,
      next: "comment"
    }, {
      token: "error.invalid",
      regex: "/\\*|[{;}]"
    }, {
      token: "support.type",
      regex: /^\s*:[\w\-]+\s/
    }), this.$rules.comment = [{
      regex: /^\s*/,
      onMatch: function onMatch(e, t, n) {
        return n[1] === -1 && (n[1] = Math.max(n[2], e.length - 1)), e.length <= n[1] ? (n.shift(), n.shift(), n.shift(), this.next = n.shift(), "text") : (this.next = "", "comment");
      },
      next: "start"
    }, {
      defaultToken: "comment"
    }]);
  };

  r.inherits(o, s), t.SassHighlightRules = o;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/sass", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/sass_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./sass_highlight_rules").SassHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.$id = "ace/mode/sass";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/sass"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-scad.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-scad.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/scad_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = function u() {
    var e = this.createKeywordMapper({
      "variable.language": "this",
      keyword: "module|if|else|for",
      "constant.language": "NULL"
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, s.getStartRule("start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: '["].*\\\\$',
        next: "qqstring"
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "string",
        regex: "['].*\\\\$",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant",
        regex: "<[a-zA-Z0-9.]+>"
      }, {
        token: "keyword",
        regex: "(?:use|include)"
      }, {
        token: e,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqstring: [{
        token: "string",
        regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      qstring: [{
        token: "string",
        regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }]
    }, this.embedRules(s, "doc-", [s.getEndRule("start")]);
  };

  r.inherits(u, o), t.scadHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/scad", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/scad_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./scad_highlight_rules").scadHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[]\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/scad";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/scad"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-scala.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-scala.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/scala_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "case|default|do|else|for|if|match|while|throw|return|try|trye|catch|finally|yield|abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|null|override|package|private|protected|sealed|super|this|trait|type|val|var|with|assert|assume|require|print|println|printf|readLine|readBoolean|readByte|readShort|readChar|readInt|readLong|readFloat|readDouble",
        t = "true|false",
        n = "AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object|Unit|Any|AnyVal|AnyRef|Null|ScalaObject|Singleton|Seq|Iterable|List|Option|Array|Char|Byte|Int|Long|Nothing|App|Application|BufferedIterator|BigDecimal|BigInt|Console|Either|Enumeration|Equiv|Fractional|Function|IndexedSeq|Integral|Iterator|Map|Numeric|Nil|NotNull|Ordered|Ordering|PartialFunction|PartialOrdering|Product|Proxy|Range|Responder|Seq|Serializable|Set|Specializable|Stream|StringContext|Symbol|Traversable|TraversableOnce|Tuple|Vector|Pair|Triple",
        r = this.createKeywordMapper({
      "variable.language": "this",
      keyword: e,
      "support.function": n,
      "constant.language": t
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
      }, {
        token: "string",
        regex: '"""',
        next: "tstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "string"
      }, {
        token: "symbol.constant",
        regex: "'[\\w\\d_]+"
      }, {
        token: "constant.numeric",
        regex: "0[xX][0-9a-fA-F]+\\b"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      string: [{
        token: "escape",
        regex: '\\\\"'
      }, {
        token: "string",
        regex: '"',
        next: "start"
      }, {
        token: "string.invalid",
        regex: '[^"\\\\]*$',
        next: "start"
      }, {
        token: "string",
        regex: '[^"\\\\]+'
      }],
      tstring: [{
        token: "string",
        regex: '"{3,5}',
        next: "start"
      }, {
        defaultToken: "string"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]);
  };

  r.inherits(o, s), t.ScalaHighlightRules = o;
}), ace.define("ace/mode/scala", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript", "ace/mode/scala_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript").Mode,
      s = e("./scala_highlight_rules").ScalaHighlightRules,
      o = function o() {
    i.call(this), this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.createWorker = function (e) {
      return null;
    }, this.$id = "ace/mode/scala";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/scala"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-scheme.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-scheme.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/scheme_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "case|do|let|loop|if|else|when",
        t = "eq?|eqv?|equal?|and|or|not|null?",
        n = "#t|#f",
        r = "cons|car|cdr|cond|lambda|lambda*|syntax-rules|format|set!|quote|eval|append|list|list?|member?|load",
        i = this.createKeywordMapper({
      "keyword.control": e,
      "keyword.operator": t,
      "constant.language": n,
      "support.function": r
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: ";.*$"
      }, {
        token: ["storage.type.function-type.scheme", "text", "entity.name.function.scheme"],
        regex: "(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"
      }, {
        token: "punctuation.definition.constant.character.scheme",
        regex: "#:\\S+"
      }, {
        token: ["punctuation.definition.variable.scheme", "variable.other.global.scheme", "punctuation.definition.variable.scheme"],
        regex: "(\\*)(\\S*)(\\*)"
      }, {
        token: "constant.numeric",
        regex: "#[xXoObB][0-9a-fA-F]+"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?"
      }, {
        token: i,
        regex: "[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }],
      qqstring: [{
        token: "constant.character.escape.scheme",
        regex: "\\\\."
      }, {
        token: "string",
        regex: '[^"\\\\]+',
        merge: !0
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring",
        merge: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "start",
        merge: !0
      }]
    };
  };

  r.inherits(s, i), t.SchemeHighlightRules = s;
}), ace.define("ace/mode/matching_parens_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\)/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\))/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      var t = e.match(/^(\s+)/);
      return t ? t[1] : "";
    };
  }).call(i.prototype), t.MatchingParensOutdent = i;
}), ace.define("ace/mode/scheme", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/scheme_highlight_rules", "ace/mode/matching_parens_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./scheme_highlight_rules").SchemeHighlightRules,
      o = e("./matching_parens_outdent").MatchingParensOutdent,
      u = function u() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = ";", this.minorIndentFunctions = ["define", "lambda", "define-macro", "define-syntax", "syntax-rules", "define-record-type", "define-structure"], this.$toIndent = function (e) {
      return e.split("").map(function (e) {
        return /\s/.exec(e) ? e : " ";
      }).join("");
    }, this.$calculateIndent = function (e, t) {
      var n = this.$getIndent(e),
          r = 0,
          i,
          s;

      for (var o = e.length - 1; o >= 0; o--) {
        s = e[o], s === "(" ? (r--, i = !0) : s === "(" || s === "[" || s === "{" ? (r--, i = !1) : (s === ")" || s === "]" || s === "}") && r++;
        if (r < 0) break;
      }

      if (!(r < 0 && i)) return r < 0 && !i ? this.$toIndent(e.substring(0, o + 1)) : r > 0 ? (n = n.substring(0, n.length - t.length), n) : n;
      o += 1;
      var u = o,
          a = "";

      for (;;) {
        s = e[o];
        if (s === " " || s === "	") return this.minorIndentFunctions.indexOf(a) !== -1 ? this.$toIndent(e.substring(0, u - 1) + t) : this.$toIndent(e.substring(0, o + 1));
        if (s === undefined) return this.$toIndent(e.substring(0, u - 1) + t);
        a += e[o], o++;
      }
    }, this.getNextLineIndent = function (e, t, n) {
      return this.$calculateIndent(t, n);
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/scheme";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/scheme"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-scss.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-scss.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/scss_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/css_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./css_highlight_rules"),
      u = function u() {
    var e = i.arrayToMap(o.supportType.split("|")),
        t = i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unquote".split("|")),
        n = i.arrayToMap(o.supportConstant.split("|")),
        r = i.arrayToMap(o.supportConstantColor.split("|")),
        s = i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),
        u = i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),
        a = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: '["].*\\\\$',
        next: "qqstring"
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "string",
        regex: "['].*\\\\$",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: a + "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: "constant.numeric",
        regex: a
      }, {
        token: ["support.function", "string", "support.function"],
        regex: "(url\\()(.*)(\\))"
      }, {
        token: function token(i) {
          return e.hasOwnProperty(i.toLowerCase()) ? "support.type" : s.hasOwnProperty(i) ? "keyword" : n.hasOwnProperty(i) ? "constant.language" : t.hasOwnProperty(i) ? "support.function" : r.hasOwnProperty(i.toLowerCase()) ? "support.constant.color" : u.hasOwnProperty(i.toLowerCase()) ? "variable.language" : "text";
        },
        regex: "\\-?[@a-z_][@a-z0-9_\\-]*"
      }, {
        token: "variable",
        regex: "[a-z_\\-$][a-z0-9_\\-$]*\\b"
      }, {
        token: "variable.language",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        token: "keyword.operator",
        regex: "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        caseInsensitive: !0
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqstring: [{
        token: "string",
        regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      qstring: [{
        token: "string",
        regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }]
    };
  };

  r.inherits(u, s), t.ScssHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/scss", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/scss_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/css", "ace/mode/folding/cstyle", "ace/mode/css_completions"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./scss_highlight_rules").ScssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/css").CssBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = e("./css_completions").CssCompletions,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.$completer = new f(), this.foldingRules = new a();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.$id = "ace/mode/scss";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/scss"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-sh.js":
/*!***************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-sh.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/sh_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = t.reservedKeywords = "!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",
      o = t.languageConstructs = "[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",
      u = function u() {
    var e = this.createKeywordMapper({
      keyword: s,
      "support.function.builtin": o,
      "invalid.deprecated": "debugger"
    }, "identifier"),
        t = "(?:(?:[1-9]\\d*)|(?:0))",
        n = "(?:\\.\\d+)",
        r = "(?:\\d+)",
        i = "(?:(?:" + r + "?" + n + ")|(?:" + r + "\\.))",
        u = "(?:(?:" + i + "|" + r + ")" + ")",
        a = "(?:" + u + "|" + i + ")",
        f = "(?:&" + r + ")",
        l = "[a-zA-Z_][a-zA-Z0-9_]*",
        c = "(?:" + l + "(?==))",
        h = "(?:\\$(?:SHLVL|\\$|\\!|\\?))",
        p = "(?:" + l + "\\s*\\(\\))";
    this.$rules = {
      start: [{
        token: "constant",
        regex: /\\./
      }, {
        token: ["text", "comment"],
        regex: /(^|\s)(#.*)$/
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "constant.language.escape",
          regex: /\\(?:[$`"\\]|$)/
        }, {
          include: "variables"
        }, {
          token: "keyword.operator",
          regex: /`/
        }, {
          token: "string.end",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: "\\$'",
        push: [{
          token: "constant.language.escape",
          regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/
        }, {
          token: "string",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        regex: "<<<",
        token: "keyword.operator"
      }, {
        stateName: "heredoc",
        regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",
        onMatch: function onMatch(e, t, n) {
          var r = e[2] == "-" ? "indentedHeredoc" : "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[4]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "text",
            value: i[2]
          }, {
            type: "string",
            value: i[3]
          }, {
            type: "support.class",
            value: i[4]
          }, {
            type: "string",
            value: i[5]
          }];
        },
        rules: {
          heredoc: [{
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }],
          indentedHeredoc: [{
            token: "string",
            regex: "^	+"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" || t[0] === "indentedHeredoc" ? t[0] : e;
        }
      }, {
        token: ["keyword", "text", "text", "text", "variable"],
        regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/
      }, {
        token: "variable.language",
        regex: h
      }, {
        token: "variable",
        regex: c
      }, {
        include: "variables"
      }, {
        token: "support.function",
        regex: p
      }, {
        token: "support.function",
        regex: f
      }, {
        token: "string",
        start: "'",
        end: "'"
      }, {
        token: "constant.numeric",
        regex: a
      }, {
        token: "constant.numeric",
        regex: t + "\\b"
      }, {
        token: e,
        regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"
      }, {
        token: "punctuation.operator",
        regex: ";"
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]]"
      }, {
        token: "paren.rparen",
        regex: "[\\)\\}]",
        next: "pop"
      }],
      variables: [{
        token: "variable",
        regex: /(\$)(\w+)/
      }, {
        token: ["variable", "paren.lparen"],
        regex: /(\$)(\()/,
        push: "start"
      }, {
        token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"],
        regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,
        push: "start"
      }, {
        token: "variable",
        regex: /\$[*@#?\-$!0_]/
      }, {
        token: ["variable", "paren.lparen"],
        regex: /(\$)(\{)/,
        push: "start"
      }]
    }, this.normalizeRules();
  };

  r.inherits(u, i), t.ShHighlightRules = u;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/sh", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/sh_highlight_rules", "ace/range", "ace/mode/folding/cstyle", "ace/mode/behaviour/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./sh_highlight_rules").ShHighlightRules,
      o = e("../range").Range,
      u = e("./folding/cstyle").FoldMode,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = function f() {
    this.HighlightRules = s, this.foldingRules = new u(), this.$behaviour = new a();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[:]\s*$/);
        o && (r += n);
      }

      return r;
    };
    var e = {
      pass: 1,
      "return": 1,
      raise: 1,
      "break": 1,
      "continue": 1
    };
    this.checkOutdent = function (t, n, r) {
      if (r !== "\r\n" && r !== "\r" && r !== "\n") return !1;
      var i = this.getTokenizer().getLineTokens(n.trim(), t).tokens;
      if (!i) return !1;

      do {
        var s = i.pop();
      } while (s && (s.type == "comment" || s.type == "text" && s.value.match(/^\s+$/)));

      return s ? s.type == "keyword" && e[s.value] : !1;
    }, this.autoOutdent = function (e, t, n) {
      n += 1;
      var r = this.$getIndent(t.getLine(n)),
          i = t.getTabString();
      r.slice(-i.length) == i && t.remove(new o(n, r.length - i.length, n, r.length));
    }, this.$id = "ace/mode/sh", this.snippetFileId = "ace/snippets/sh";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/sh"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-sjs.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-sjs.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/sjs_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = new i({
      noES6: !0
    }),
        t = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",
        n = function n(e) {
      return e.isContextAware = !0, e;
    },
        r = function r(e) {
      return {
        token: e.token,
        regex: e.regex,
        next: n(function (t, n) {
          return n.length === 0 && n.unshift(t), n.unshift(e.next), e.next;
        })
      };
    },
        s = function s(e) {
      return {
        token: e.token,
        regex: e.regex,
        next: n(function (e, t) {
          return t.shift(), t[0] || "start";
        })
      };
    };

    this.$rules = e.$rules, this.$rules.no_regex = [{
      token: "keyword",
      regex: "(waitfor|or|and|collapse|spawn|retract)\\b"
    }, {
      token: "keyword.operator",
      regex: "(->|=>|\\.\\.)"
    }, {
      token: "variable.language",
      regex: "(hold|default)\\b"
    }, r({
      token: "string",
      regex: "`",
      next: "bstring"
    }), r({
      token: "string",
      regex: '"',
      next: "qqstring"
    }), r({
      token: "string",
      regex: '"',
      next: "qqstring"
    }), {
      token: ["paren.lparen", "text", "paren.rparen"],
      regex: "(\\{)(\\s*)(\\|)",
      next: "block_arguments"
    }].concat(this.$rules.no_regex), this.$rules.block_arguments = [{
      token: "paren.rparen",
      regex: "\\|",
      next: "no_regex"
    }].concat(this.$rules.function_arguments), this.$rules.bstring = [{
      token: "constant.language.escape",
      regex: t
    }, {
      token: "string",
      regex: "\\\\$",
      next: "bstring"
    }, r({
      token: "paren.lparen",
      regex: "\\$\\{",
      next: "string_interp"
    }), r({
      token: "paren.lparen",
      regex: "\\$",
      next: "bstring_interp_single"
    }), s({
      token: "string",
      regex: "`"
    }), {
      defaultToken: "string"
    }], this.$rules.qqstring = [{
      token: "constant.language.escape",
      regex: t
    }, {
      token: "string",
      regex: "\\\\$",
      next: "qqstring"
    }, r({
      token: "paren.lparen",
      regex: "#\\{",
      next: "string_interp"
    }), s({
      token: "string",
      regex: '"'
    }), {
      defaultToken: "string"
    }];
    var o = [];

    for (var u = 0; u < this.$rules.no_regex.length; u++) {
      var a = this.$rules.no_regex[u],
          f = String(a.token);
      f.indexOf("paren") == -1 && (!a.next || a.next.isContextAware) && o.push(a);
    }

    this.$rules.string_interp = [s({
      token: "paren.rparen",
      regex: "\\}"
    }), r({
      token: "paren.lparen",
      regex: "{",
      next: "string_interp"
    })].concat(o), this.$rules.bstring_interp_single = [{
      token: ["identifier", "paren.lparen"],
      regex: "(\\w+)(\\()",
      next: "bstring_interp_single_call"
    }, s({
      token: "identifier",
      regex: "\\w*"
    })], this.$rules.bstring_interp_single_call = [r({
      token: "paren.lparen",
      regex: "\\(",
      next: "bstring_interp_single_call"
    }), s({
      token: "paren.rparen",
      regex: "\\)"
    })].concat(o);
  };

  r.inherits(o, s), t.SJSHighlightRules = o;
}), ace.define("ace/mode/sjs", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript", "ace/mode/sjs_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript").Mode,
      s = e("./sjs_highlight_rules").SJSHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/cstyle").CstyleBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(f, i), function () {
    this.createWorker = function (e) {
      return null;
    }, this.$id = "ace/mode/sjs";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/sjs"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-slim.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-slim.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/slim_highlight_rules", ["require", "exports", "module", "ace/config", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../config").$modes,
      i = e("../lib/oop"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    this.$rules = {
      start: [{
        token: "keyword",
        regex: /^(\s*)(\w+):\s*/,
        onMatch: function onMatch(e, t, n, r) {
          var i = /^\s*/.exec(r)[0],
              s = e.match(/^(\s*)(\w+):/),
              o = s[2];
          return /^(javascript|ruby|coffee|markdown|css|scss|sass|less)$/.test(o) || (o = ""), n.unshift("language-embed", [], [i, o], t), this.token;
        },
        stateName: "language-embed",
        next: [{
          token: "string",
          regex: /^(\s*)/,
          onMatch: function onMatch(e, t, n, r) {
            var i = n[2][0];
            return i.length >= e.length ? (n.splice(0, 3), this.next = n.shift(), this.token) : (this.next = "", [{
              type: "text",
              value: i
            }]);
          },
          next: ""
        }, {
          token: "string",
          regex: /.+/,
          onMatch: function onMatch(e, t, n, i) {
            var s = n[2][0],
                o = n[2][1],
                u = n[1];

            if (r[o]) {
              var a = r[o].getTokenizer().getLineTokens(i.slice(s.length), u.slice(0));
              return n[1] = a.state, a.tokens;
            }

            return this.token;
          }
        }]
      }, {
        token: "constant.begin.javascript.filter.slim",
        regex: "^(\\s*)():$"
      }, {
        token: "constant.begin..filter.slim",
        regex: "^(\\s*)(ruby):$"
      }, {
        token: "constant.begin.coffeescript.filter.slim",
        regex: "^(\\s*)():$"
      }, {
        token: "constant.begin..filter.slim",
        regex: "^(\\s*)(markdown):$"
      }, {
        token: "constant.begin.css.filter.slim",
        regex: "^(\\s*)():$"
      }, {
        token: "constant.begin.scss.filter.slim",
        regex: "^(\\s*)():$"
      }, {
        token: "constant.begin..filter.slim",
        regex: "^(\\s*)(sass):$"
      }, {
        token: "constant.begin..filter.slim",
        regex: "^(\\s*)(less):$"
      }, {
        token: "constant.begin..filter.slim",
        regex: "^(\\s*)(erb):$"
      }, {
        token: "keyword.html.tags.slim",
        regex: "^(\\s*)((:?\\*(\\w)+)|doctype html|abbr|acronym|address|applet|area|article|aside|audio|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dialog|dfn|dir|div|dl|dt|embed|fieldset|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|link|li|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|source|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|xmp|b|u|s|em|a)(?:([.#](\\w|\\.)+)+\\s?)?\\b"
      }, {
        token: "keyword.slim",
        regex: "^(\\s*)(?:([.#](\\w|\\.)+)+\\s?)"
      }, {
        token: "string",
        regex: /^(\s*)('|\||\/|(\/!))\s*/,
        onMatch: function onMatch(e, t, n, r) {
          var i = /^\s*/.exec(r)[0];
          return n.length < 1 ? n.push(this.next) : n[0] = "mlString", n.length < 2 ? n.push(i.length) : n[1] = i.length, this.token;
        },
        next: "mlString"
      }, {
        token: "keyword.control.slim",
        regex: "^(\\s*)(\\-|==|=)",
        push: [{
          token: "control.end.slim",
          regex: "$",
          next: "pop"
        }, {
          include: "rubyline"
        }, {
          include: "misc"
        }]
      }, {
        token: "paren",
        regex: "\\(",
        push: [{
          token: "paren",
          regex: "\\)",
          next: "pop"
        }, {
          include: "misc"
        }]
      }, {
        token: "paren",
        regex: "\\[",
        push: [{
          token: "paren",
          regex: "\\]",
          next: "pop"
        }, {
          include: "misc"
        }]
      }, {
        include: "misc"
      }],
      mlString: [{
        token: "indent",
        regex: /^\s*/,
        onMatch: function onMatch(e, t, n) {
          var r = n[1];
          return r >= e.length ? (this.next = "start", n.splice(0)) : this.next = "mlString", this.token;
        },
        next: "start"
      }, {
        defaultToken: "string"
      }],
      rubyline: [{
        token: "keyword.operator.ruby.embedded.slim",
        regex: "(==|=)(<>|><|<'|'<|<|>)?|-"
      }, {
        token: "list.ruby.operators.slim",
        regex: "(\\b)(for|in|do|if|else|elsif|unless|while|yield|not|and|or)\\b"
      }, {
        token: "string",
        regex: "['](.)*?[']"
      }, {
        token: "string",
        regex: '["](.)*?["]'
      }],
      misc: [{
        token: "class.variable.slim",
        regex: "\\@([a-zA-Z_][a-zA-Z0-9_]*)\\b"
      }, {
        token: "list.meta.slim",
        regex: "(\\b)(true|false|nil)(\\b)"
      }, {
        token: "keyword.operator.equals.slim",
        regex: "="
      }, {
        token: "string",
        regex: "['](.)*?[']"
      }, {
        token: "string",
        regex: '["](.)*?["]'
      }]
    }, this.normalizeRules();
  };

  i.inherits(o, s), t.SlimHighlightRules = o;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/xml_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/xml", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./xml_highlight_rules").XmlHighlightRules,
      u = e("./behaviour/xml").XmlBehaviour,
      a = e("./folding/xml").FoldMode,
      f = e("../worker/worker_client").WorkerClient,
      l = function l() {
    this.HighlightRules = o, this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(l, s), function () {
    this.voidElements = i.arrayToMap([]), this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.createWorker = function (e) {
      var t = new f(["ace"], "ace/mode/xml_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/xml";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/markdown_highlight_rules", ["require", "exports", "module", "ace/config", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../config").$modes,
      i = e("../lib/oop"),
      s = e("../lib/lang"),
      o = e("./text_highlight_rules").TextHighlightRules,
      u = e("./html_highlight_rules").HtmlHighlightRules,
      a = function a(e) {
    return "(?:[^" + s.escapeRegExp(e) + "\\\\]|\\\\.)*";
  },
      f = function f() {
    u.call(this);
    var e = {
      token: "support.function",
      regex: /^\s*(```+[^`]*|~~~+[^~]*)$/,
      onMatch: function onMatch(e, t, n, i) {
        var s = e.match(/^(\s*)([`~]+)(.*)/),
            o = /[\w-]+|$/.exec(s[3])[0];
        return r[o] || (o = ""), n.unshift("githubblock", [], [s[1], s[2], o], t), this.token;
      },
      next: "githubblock"
    },
        t = [{
      token: "support.function",
      regex: ".*",
      onMatch: function onMatch(e, t, n, i) {
        var s = n[1],
            o = n[2][0],
            u = n[2][1],
            a = n[2][2],
            f = /^(\s*)(`+|~+)\s*$/.exec(e);
        if (f && f[1].length < o.length + 3 && f[2].length >= u.length && f[2][0] == u[0]) return n.splice(0, 3), this.next = n.shift(), this.token;
        this.next = "";

        if (a && r[a]) {
          var l = r[a].getTokenizer().getLineTokens(e, s.slice(0));
          return n[1] = l.state, l.tokens;
        }

        return this.token;
      }
    }];
    this.$rules.start.unshift({
      token: "empty_line",
      regex: "^$",
      next: "allowBlock"
    }, {
      token: "markup.heading.1",
      regex: "^=+(?=\\s*$)"
    }, {
      token: "markup.heading.2",
      regex: "^\\-+(?=\\s*$)"
    }, {
      token: function token(e) {
        return "markup.heading." + e.length;
      },
      regex: /^#{1,6}(?=\s|$)/,
      next: "header"
    }, e, {
      token: "string.blockquote",
      regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",
      next: "blockquote"
    }, {
      token: "constant",
      regex: "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",
      next: "allowBlock"
    }, {
      token: "markup.list",
      regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
      next: "listblock-start"
    }, {
      include: "basic"
    }), this.addRules({
      basic: [{
        token: "constant.language.escape",
        regex: /\\[\\`*_{}\[\]()#+\-.!]/
      }, {
        token: "support.function",
        regex: "(`+)(.*?[^`])(\\1)"
      }, {
        token: ["text", "constant", "text", "url", "string", "text"],
        regex: '^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'
      }, {
        token: ["text", "string", "text", "constant", "text"],
        regex: "(\\[)(" + a("]") + ")(\\]\\s*\\[)(" + a("]") + ")(\\])"
      }, {
        token: ["text", "string", "text", "markup.underline", "string", "text"],
        regex: "(\\!?\\[)(" + a("]") + ")(\\]\\()" + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + '(\\s*"' + a('"') + '"\\s*)?' + "(\\))"
      }, {
        token: "string.strong",
        regex: "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"
      }, {
        token: "string.emphasis",
        regex: "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"
      }, {
        token: ["text", "url", "text"],
        regex: "(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"
      }],
      allowBlock: [{
        token: "support.function",
        regex: "^ {4}.+",
        next: "allowBlock"
      }, {
        token: "empty_line",
        regex: "^$",
        next: "allowBlock"
      }, {
        token: "empty",
        regex: "",
        next: "start"
      }],
      header: [{
        regex: "$",
        next: "start"
      }, {
        include: "basic"
      }, {
        defaultToken: "heading"
      }],
      "listblock-start": [{
        token: "support.variable",
        regex: /(?:\[[ x]\])?/,
        next: "listblock"
      }],
      listblock: [{
        token: "empty_line",
        regex: "^$",
        next: "start"
      }, {
        token: "markup.list",
        regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
        next: "listblock-start"
      }, {
        include: "basic",
        noEscape: !0
      }, e, {
        defaultToken: "list"
      }],
      blockquote: [{
        token: "empty_line",
        regex: "^\\s*$",
        next: "start"
      }, {
        token: "string.blockquote",
        regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",
        next: "blockquote"
      }, {
        include: "basic",
        noEscape: !0
      }, {
        defaultToken: "string.blockquote"
      }],
      githubblock: t
    }), this.normalizeRules();
  };

  i.inherits(f, o), t.MarkdownHighlightRules = f;
}), ace.define("ace/mode/folding/markdown", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      return this.foldingStartMarker.test(r) ? r[0] == "`" ? e.bgTokenizer.getState(n) == "start" ? "end" : "start" : "start" : "";
    }, this.getFoldWidgetRange = function (e, t, n) {
      function l(t) {
        return f = e.getTokens(t)[0], f && f.type.lastIndexOf(c, 0) === 0;
      }

      function h() {
        var e = f.value[0];
        return e == "=" ? 6 : e == "-" ? 5 : 7 - f.value.search(/[^#]|$/);
      }

      var r = e.getLine(n),
          i = r.length,
          o = e.getLength(),
          u = n,
          a = n;
      if (!r.match(this.foldingStartMarker)) return;

      if (r[0] == "`") {
        if (e.bgTokenizer.getState(n) !== "start") {
          while (++n < o) {
            r = e.getLine(n);
            if (r[0] == "`" & r.substring(0, 3) == "```") break;
          }

          return new s(u, i, n, 0);
        }

        while (n-- > 0) {
          r = e.getLine(n);
          if (r[0] == "`" & r.substring(0, 3) == "```") break;
        }

        return new s(n, r.length, u, 0);
      }

      var f,
          c = "markup.heading";

      if (l(n)) {
        var p = h();

        while (++n < o) {
          if (!l(n)) continue;
          var d = h();
          if (d >= p) break;
        }

        a = n - (!f || ["=", "-"].indexOf(f.value[0]) == -1 ? 1 : 2);
        if (a > u) while (a > u && /^\s*$/.test(e.getLine(a))) {
          a--;
        }

        if (a > u) {
          var v = e.getLine(a).length;
          return new s(u, i, a, v);
        }
      }
    };
  }.call(o.prototype);
}), ace.define("ace/mode/sh_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = t.reservedKeywords = "!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",
      o = t.languageConstructs = "[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",
      u = function u() {
    var e = this.createKeywordMapper({
      keyword: s,
      "support.function.builtin": o,
      "invalid.deprecated": "debugger"
    }, "identifier"),
        t = "(?:(?:[1-9]\\d*)|(?:0))",
        n = "(?:\\.\\d+)",
        r = "(?:\\d+)",
        i = "(?:(?:" + r + "?" + n + ")|(?:" + r + "\\.))",
        u = "(?:(?:" + i + "|" + r + ")" + ")",
        a = "(?:" + u + "|" + i + ")",
        f = "(?:&" + r + ")",
        l = "[a-zA-Z_][a-zA-Z0-9_]*",
        c = "(?:" + l + "(?==))",
        h = "(?:\\$(?:SHLVL|\\$|\\!|\\?))",
        p = "(?:" + l + "\\s*\\(\\))";
    this.$rules = {
      start: [{
        token: "constant",
        regex: /\\./
      }, {
        token: ["text", "comment"],
        regex: /(^|\s)(#.*)$/
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "constant.language.escape",
          regex: /\\(?:[$`"\\]|$)/
        }, {
          include: "variables"
        }, {
          token: "keyword.operator",
          regex: /`/
        }, {
          token: "string.end",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: "\\$'",
        push: [{
          token: "constant.language.escape",
          regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/
        }, {
          token: "string",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        regex: "<<<",
        token: "keyword.operator"
      }, {
        stateName: "heredoc",
        regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",
        onMatch: function onMatch(e, t, n) {
          var r = e[2] == "-" ? "indentedHeredoc" : "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[4]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "text",
            value: i[2]
          }, {
            type: "string",
            value: i[3]
          }, {
            type: "support.class",
            value: i[4]
          }, {
            type: "string",
            value: i[5]
          }];
        },
        rules: {
          heredoc: [{
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }],
          indentedHeredoc: [{
            token: "string",
            regex: "^	+"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" || t[0] === "indentedHeredoc" ? t[0] : e;
        }
      }, {
        token: ["keyword", "text", "text", "text", "variable"],
        regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/
      }, {
        token: "variable.language",
        regex: h
      }, {
        token: "variable",
        regex: c
      }, {
        include: "variables"
      }, {
        token: "support.function",
        regex: p
      }, {
        token: "support.function",
        regex: f
      }, {
        token: "string",
        start: "'",
        end: "'"
      }, {
        token: "constant.numeric",
        regex: a
      }, {
        token: "constant.numeric",
        regex: t + "\\b"
      }, {
        token: e,
        regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"
      }, {
        token: "punctuation.operator",
        regex: ";"
      }, {
        token: "paren.lparen",
        regex: "[\\[\\(\\{]"
      }, {
        token: "paren.rparen",
        regex: "[\\]]"
      }, {
        token: "paren.rparen",
        regex: "[\\)\\}]",
        next: "pop"
      }],
      variables: [{
        token: "variable",
        regex: /(\$)(\w+)/
      }, {
        token: ["variable", "paren.lparen"],
        regex: /(\$)(\()/,
        push: "start"
      }, {
        token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"],
        regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,
        push: "start"
      }, {
        token: "variable",
        regex: /\$[*@#?\-$!0_]/
      }, {
        token: ["variable", "paren.lparen"],
        regex: /(\$)(\{)/,
        push: "start"
      }]
    }, this.normalizeRules();
  };

  r.inherits(u, i), t.ShHighlightRules = u;
}), ace.define("ace/mode/sh", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/sh_highlight_rules", "ace/range", "ace/mode/folding/cstyle", "ace/mode/behaviour/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./sh_highlight_rules").ShHighlightRules,
      o = e("../range").Range,
      u = e("./folding/cstyle").FoldMode,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = function f() {
    this.HighlightRules = s, this.foldingRules = new u(), this.$behaviour = new a();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[:]\s*$/);
        o && (r += n);
      }

      return r;
    };
    var e = {
      pass: 1,
      "return": 1,
      raise: 1,
      "break": 1,
      "continue": 1
    };
    this.checkOutdent = function (t, n, r) {
      if (r !== "\r\n" && r !== "\r" && r !== "\n") return !1;
      var i = this.getTokenizer().getLineTokens(n.trim(), t).tokens;
      if (!i) return !1;

      do {
        var s = i.pop();
      } while (s && (s.type == "comment" || s.type == "text" && s.value.match(/^\s+$/)));

      return s ? s.type == "keyword" && e[s.value] : !1;
    }, this.autoOutdent = function (e, t, n) {
      n += 1;
      var r = this.$getIndent(t.getLine(n)),
          i = t.getTabString();
      r.slice(-i.length) == i && t.remove(new o(n, r.length - i.length, n, r.length));
    }, this.$id = "ace/mode/sh", this.snippetFileId = "ace/snippets/sh";
  }.call(f.prototype), t.Mode = f;
}), ace.define("ace/mode/markdown", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript", "ace/mode/xml", "ace/mode/html", "ace/mode/markdown_highlight_rules", "ace/mode/folding/markdown", "ace/mode/javascript", "ace/mode/html", "ace/mode/sh", "ace/mode/sh", "ace/mode/xml", "ace/mode/css"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript").Mode,
      o = e("./xml").Mode,
      u = e("./html").Mode,
      a = e("./markdown_highlight_rules").MarkdownHighlightRules,
      f = e("./folding/markdown").FoldMode,
      l = function l() {
    this.HighlightRules = a, this.createModeDelegates({
      javascript: e("./javascript").Mode,
      html: e("./html").Mode,
      bash: e("./sh").Mode,
      sh: e("./sh").Mode,
      xml: e("./xml").Mode,
      css: e("./css").Mode
    }), this.foldingRules = new f(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(l, i), function () {
    this.type = "text", this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.$quotes = {
      '"': '"',
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      if (e == "listblock") {
        var r = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);
        if (!r) return "";
        var i = r[2];
        return i || (i = parseInt(r[3], 10) + 1 + "."), r[1] + i + r[4];
      }

      return this.$getIndent(t);
    }, this.$id = "ace/mode/markdown", this.snippetFileId = "ace/snippets/markdown";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/coffee_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function s() {
    var e = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",
        t = "this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes|yield|export|import|default",
        n = "true|false|null|undefined|NaN|Infinity",
        r = "case|const|function|var|void|with|enum|implements|interface|let|package|private|protected|public|static",
        i = "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",
        s = "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",
        o = "window|arguments|prototype|document",
        u = this.createKeywordMapper({
      keyword: t,
      "constant.language": n,
      "invalid.illegal": r,
      "language.support.class": i,
      "language.support.function": s,
      "variable.language": o
    }, "identifier"),
        a = {
      token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"],
      regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source
    },
        f = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;
    this.$rules = {
      start: [{
        token: "constant.numeric",
        regex: "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"
      }, {
        stateName: "qdoc",
        token: "string",
        regex: "'''",
        next: [{
          token: "string",
          regex: "'''",
          next: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "qqdoc",
        token: "string",
        regex: '"""',
        next: [{
          token: "string",
          regex: '"""',
          next: "start"
        }, {
          token: "paren.string",
          regex: "#{",
          push: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "qstring",
        token: "string",
        regex: "'",
        next: [{
          token: "string",
          regex: "'",
          next: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "qqstring",
        token: "string.start",
        regex: '"',
        next: [{
          token: "string.end",
          regex: '"',
          next: "start"
        }, {
          token: "paren.string",
          regex: "#{",
          push: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        stateName: "js",
        token: "string",
        regex: "`",
        next: [{
          token: "string",
          regex: "`",
          next: "start"
        }, {
          token: "constant.language.escape",
          regex: f
        }, {
          defaultToken: "string"
        }]
      }, {
        regex: "[{}]",
        onMatch: function onMatch(e, t, n) {
          this.next = "";
          if (e == "{" && n.length) return n.unshift("start", t), "paren";

          if (e == "}" && n.length) {
            n.shift(), this.next = n.shift() || "";
            if (this.next.indexOf("string") != -1) return "paren.string";
          }

          return "paren";
        }
      }, {
        token: "string.regex",
        regex: "///",
        next: "heregex"
      }, {
        token: "string.regex",
        regex: /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/
      }, {
        token: "comment",
        regex: "###(?!#)",
        next: "comment"
      }, {
        token: "comment",
        regex: "#.*"
      }, {
        token: ["punctuation.operator", "text", "identifier"],
        regex: "(\\.)(\\s*)(" + r + ")"
      }, {
        token: "punctuation.operator",
        regex: "\\.{1,3}"
      }, {
        token: ["keyword", "text", "language.support.class", "text", "keyword", "text", "language.support.class"],
        regex: "(class)(\\s+)(" + e + ")(?:(\\s+)(extends)(\\s+)(" + e + "))?"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text"].concat(a.token),
        regex: "(" + e + ")(\\s*)([=:])(\\s*)" + a.regex
      }, a, {
        token: "variable",
        regex: "@(?:" + e + ")?"
      }, {
        token: u,
        regex: e
      }, {
        token: "punctuation.operator",
        regex: "\\,|\\."
      }, {
        token: "storage.type",
        regex: "[\\-=]>"
      }, {
        token: "keyword.operator",
        regex: "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"
      }, {
        token: "paren.lparen",
        regex: "[({[]"
      }, {
        token: "paren.rparen",
        regex: "[\\]})]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      heregex: [{
        token: "string.regex",
        regex: ".*?///[imgy]{0,4}",
        next: "start"
      }, {
        token: "comment.regex",
        regex: "\\s+(?:#.*)?"
      }, {
        token: "string.regex",
        regex: "\\S+"
      }],
      comment: [{
        token: "comment",
        regex: "###",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.normalizeRules();
  }

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules;
  r.inherits(s, i), t.CoffeeHighlightRules = s;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/coffee", ["require", "exports", "module", "ace/mode/coffee_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/folding/coffee", "ace/range", "ace/mode/text", "ace/worker/worker_client", "ace/lib/oop"], function (e, t, n) {
  "use strict";

  function l() {
    this.HighlightRules = r, this.$outdent = new i(), this.foldingRules = new s();
  }

  var r = e("./coffee_highlight_rules").CoffeeHighlightRules,
      i = e("./matching_brace_outdent").MatchingBraceOutdent,
      s = e("./folding/coffee").FoldMode,
      o = e("../range").Range,
      u = e("./text").Mode,
      a = e("../worker/worker_client").WorkerClient,
      f = e("../lib/oop");
  f.inherits(l, u), function () {
    var e = /(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/;
    this.lineCommentStart = "#", this.blockComment = {
      start: "###",
      end: "###"
    }, this.getNextLineIndent = function (t, n, r) {
      var i = this.$getIndent(n),
          s = this.getTokenizer().getLineTokens(n, t).tokens;
      return (!s.length || s[s.length - 1].type !== "comment") && t === "start" && e.test(n) && (i += r), i;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new a(["ace"], "ace/mode/coffee_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/coffee", this.snippetFileId = "ace/snippets/coffee";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/scss_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/css_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./css_highlight_rules"),
      u = function u() {
    var e = i.arrayToMap(o.supportType.split("|")),
        t = i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unquote".split("|")),
        n = i.arrayToMap(o.supportConstant.split("|")),
        r = i.arrayToMap(o.supportConstantColor.split("|")),
        s = i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),
        u = i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),
        a = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: '["].*\\\\$',
        next: "qqstring"
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "string",
        regex: "['].*\\\\$",
        next: "qstring"
      }, {
        token: "constant.numeric",
        regex: a + "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: "constant.numeric",
        regex: a
      }, {
        token: ["support.function", "string", "support.function"],
        regex: "(url\\()(.*)(\\))"
      }, {
        token: function token(i) {
          return e.hasOwnProperty(i.toLowerCase()) ? "support.type" : s.hasOwnProperty(i) ? "keyword" : n.hasOwnProperty(i) ? "constant.language" : t.hasOwnProperty(i) ? "support.function" : r.hasOwnProperty(i.toLowerCase()) ? "support.constant.color" : u.hasOwnProperty(i.toLowerCase()) ? "variable.language" : "text";
        },
        regex: "\\-?[@a-z_][@a-z0-9_\\-]*"
      }, {
        token: "variable",
        regex: "[a-z_\\-$][a-z0-9_\\-$]*\\b"
      }, {
        token: "variable.language",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        token: "keyword.operator",
        regex: "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        caseInsensitive: !0
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqstring: [{
        token: "string",
        regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }],
      qstring: [{
        token: "string",
        regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }]
    };
  };

  r.inherits(u, s), t.ScssHighlightRules = u;
}), ace.define("ace/mode/scss", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/scss_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/css", "ace/mode/folding/cstyle", "ace/mode/css_completions"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./scss_highlight_rules").ScssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/css").CssBehaviour,
      a = e("./folding/cstyle").FoldMode,
      f = e("./css_completions").CssCompletions,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.$completer = new f(), this.foldingRules = new a();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.$id = "ace/mode/scss";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/sass_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/scss_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./scss_highlight_rules").ScssHighlightRules,
      o = function o() {
    s.call(this);
    var e = this.$rules.start;
    e[1].token == "comment" && (e.splice(1, 1, {
      onMatch: function onMatch(e, t, n) {
        return n.unshift(this.next, -1, e.length - 2, t), "comment";
      },
      regex: /^\s*\/\*/,
      next: "comment"
    }, {
      token: "error.invalid",
      regex: "/\\*|[{;}]"
    }, {
      token: "support.type",
      regex: /^\s*:[\w\-]+\s/
    }), this.$rules.comment = [{
      regex: /^\s*/,
      onMatch: function onMatch(e, t, n) {
        return n[1] === -1 && (n[1] = Math.max(n[2], e.length - 1)), e.length <= n[1] ? (n.shift(), n.shift(), n.shift(), this.next = n.shift(), "text") : (this.next = "", "comment");
      },
      next: "start"
    }, {
      defaultToken: "comment"
    }]);
  };

  r.inherits(o, s), t.SassHighlightRules = o;
}), ace.define("ace/mode/sass", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/sass_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./sass_highlight_rules").SassHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.$id = "ace/mode/sass";
  }.call(u.prototype), t.Mode = u;
}), ace.define("ace/mode/less_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/css_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = e("./css_highlight_rules"),
      o = function o() {
    var e = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|or|and|when|not",
        t = e.split("|"),
        n = s.supportType.split("|"),
        r = this.createKeywordMapper({
      "support.constant": s.supportConstant,
      keyword: e,
      "support.constant.color": s.supportConstantColor,
      "support.constant.fonts": s.supportConstantFonts
    }, "identifier", !0),
        i = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + i + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: "constant.numeric",
        regex: i
      }, {
        token: ["support.function", "paren.lparen", "string", "paren.rparen"],
        regex: "(url)(\\()(.*)(\\))"
      }, {
        token: ["support.function", "paren.lparen"],
        regex: "(:extend|[a-z0-9_\\-]+)(\\()"
      }, {
        token: function token(e) {
          return t.indexOf(e.toLowerCase()) > -1 ? "keyword" : "variable";
        },
        regex: "[@\\$][a-z0-9_\\-@\\$]*\\b"
      }, {
        token: "variable",
        regex: "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"
      }, {
        token: function token(e, t) {
          return n.indexOf(e.toLowerCase()) > -1 ? ["support.type.property", "text"] : ["support.type.unknownProperty", "text"];
        },
        regex: "([a-z0-9-_]+)(\\s*:)"
      }, {
        token: "keyword",
        regex: "&"
      }, {
        token: r,
        regex: "\\-?[@a-z_][@a-z0-9_\\-]*"
      }, {
        token: "variable.language",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "variable.language",
        regex: ":[a-z_][a-z0-9-_]*"
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        token: "keyword.operator",
        regex: "<|>|<=|>=|=|!=|-|%|\\+|\\*"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        caseInsensitive: !0
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }]
    }, this.normalizeRules();
  };

  r.inherits(o, i), t.LessHighlightRules = o;
}), ace.define("ace/mode/less", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/less_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/css", "ace/mode/css_completions", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./less_highlight_rules").LessHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./behaviour/css").CssBehaviour,
      a = e("./css_completions").CssCompletions,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new u(), this.$completer = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions("ruleset", t, n, r);
    }, this.$id = "ace/mode/less";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/ruby_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = t.constantOtherSymbol = {
    token: "constant.other.symbol.ruby",
    regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
  };
  t.qString = {
    token: "string",
    regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
  }, t.qqString = {
    token: "string",
    regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
  }, t.tString = {
    token: "string",
    regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
  };

  var o = t.constantNumericHex = {
    token: "constant.numeric",
    regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
  },
      u = t.constantNumericBinary = {
    token: "constant.numeric",
    regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/
  },
      a = t.constantNumericDecimal = {
    token: "constant.numeric",
    regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/
  },
      f = t.constantNumericDecimal = {
    token: "constant.numeric",
    regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/
  },
      l = t.constantNumericRational = {
    token: "constant.numeric",
    regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/
  },
      c = t.constantNumericComplex = {
    token: "constant.numeric",
    regex: /\b([\d]i)\b/
  },
      h = t.constantNumericFloat = {
    token: "constant.numeric",
    regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"
  },
      p = t.instanceVariable = {
    token: "variable.instance",
    regex: "@{1,2}[a-zA-Z_\\d]+"
  },
      d = function d() {
    var e = "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method",
        t = "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend",
        n = "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION",
        r = "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",
        i = this.$keywords = this.createKeywordMapper({
      keyword: t,
      "constant.language": n,
      "variable.language": r,
      "support.function": e,
      "invalid.deprecated": "debugger"
    }, "identifier"),
        d = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",
        v = {
      "(": ")",
      "[": "]",
      "{": "}",
      "<": ">",
      "^": "^",
      "|": "|",
      "%": "%"
    };
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "comment.multiline",
        regex: "^=begin(?=$|\\s.*$)",
        next: "comment"
      }, {
        token: "string.regexp",
        regex: /[/](?=.*\/)/,
        next: "regex"
      }, [{
        token: ["constant.other.symbol.ruby", "string.start"],
        regex: /(:)?(")/,
        push: [{
          token: "constant.language.escape",
          regex: d
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /"/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /`/,
        push: [{
          token: "constant.language.escape",
          regex: d
        }, {
          token: "paren.start",
          regex: /#{/,
          push: "start"
        }, {
          token: "string.end",
          regex: /`/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: ["constant.other.symbol.ruby", "string.start"],
        regex: /(:)?(')/,
        push: [{
          token: "constant.language.escape",
          regex: /\\['\\]/
        }, {
          token: "string.end",
          regex: /'/,
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: /%[qwx]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "qStateWithoutInterpolation", this.token;
        }
      }, {
        token: "string.start",
        regex: /%[QWX]?([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "qStateWithInterpolation", this.token;
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /%[si]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "sStateWithoutInterpolation", this.token;
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /%[SI]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "sStateWithInterpolation", this.token;
        }
      }, {
        token: "string.regexp",
        regex: /%[r]([(\[<{^|%])/,
        onMatch: function onMatch(e, t, n) {
          n.length && (n = []);
          var r = e[e.length - 1];
          return n.unshift(r, t), this.next = "rState", this.token;
        }
      }], {
        token: "punctuation",
        regex: "::"
      }, p, {
        token: "variable.global",
        regex: "[$][a-zA-Z_\\d]+"
      }, {
        token: "support.class",
        regex: "[A-Z][a-zA-Z_\\d]*"
      }, {
        token: ["punctuation.operator", "support.function"],
        regex: /(\.)([a-zA-Z_\d]+)(?=\()/
      }, {
        token: ["punctuation.operator", "identifier"],
        regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/
      }, {
        token: "string.character",
        regex: "\\B\\?(?:" + d + "|\\S)"
      }, {
        token: "punctuation.operator",
        regex: /\?(?=.+:)/
      }, l, c, s, o, h, u, a, f, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: i,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "punctuation.separator.key-value",
        regex: "=>"
      }, {
        stateName: "heredoc",
        onMatch: function onMatch(e, t, n) {
          var r = e[2] == "-" || e[2] == "~" ? "indentedHeredoc" : "heredoc",
              i = e.split(this.splitRegex);
          return n.push(r, i[3]), [{
            type: "constant",
            value: i[1]
          }, {
            type: "string",
            value: i[2]
          }, {
            type: "support.class",
            value: i[3]
          }, {
            type: "string",
            value: i[4]
          }];
        },
        regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",
        rules: {
          heredoc: [{
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }],
          indentedHeredoc: [{
            token: "string",
            regex: "^ +"
          }, {
            onMatch: function onMatch(e, t, n) {
              return e === n[1] ? (n.shift(), n.shift(), this.next = n[0] || "start", "support.class") : (this.next = "", "string");
            },
            regex: ".*$",
            next: "start"
          }]
        }
      }, {
        regex: "$",
        token: "empty",
        next: function next(e, t) {
          return t[0] === "heredoc" || t[0] === "indentedHeredoc" ? t[0] : e;
        }
      }, {
        token: "keyword.operator",
        regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]",
        onMatch: function onMatch(e, t, n) {
          return this.next = "", e == "}" && n.length > 1 && n[1] != "start" && (n.shift(), this.next = n.shift()), this.token;
        }
      }, {
        token: "text",
        regex: "\\s+"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/
      }],
      comment: [{
        token: "comment.multiline",
        regex: "^=end(?=$|\\s.*$)",
        next: "start"
      }, {
        token: "comment",
        regex: ".+"
      }],
      qStateWithInterpolation: [{
        token: "string.start",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "string";
        }
      }, {
        token: "constant.language.escape",
        regex: d
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "string.end",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "string");
        }
      }, {
        defaultToken: "string"
      }],
      qStateWithoutInterpolation: [{
        token: "string.start",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "string";
        }
      }, {
        token: "constant.language.escape",
        regex: /\\['\\]/
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "string.end",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "string");
        }
      }, {
        defaultToken: "string"
      }],
      sStateWithoutInterpolation: [{
        token: "constant.other.symbol.ruby",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.other.symbol.ruby";
        }
      }, {
        token: "constant.other.symbol.ruby",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.other.symbol.ruby");
        }
      }, {
        defaultToken: "constant.other.symbol.ruby"
      }],
      sStateWithInterpolation: [{
        token: "constant.other.symbol.ruby",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.other.symbol.ruby";
        }
      }, {
        token: "constant.language.escape",
        regex: d
      }, {
        token: "constant.language.escape",
        regex: /\\./
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "constant.other.symbol.ruby",
        regex: /[)\]>}^|%]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.other.symbol.ruby");
        }
      }, {
        defaultToken: "constant.other.symbol.ruby"
      }],
      rState: [{
        token: "string.regexp",
        regex: /[(\[<{]/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e === n[0] ? (n.unshift(e, t), this.token) : "constant.language.escape";
        }
      }, {
        token: "paren.start",
        regex: /#{/,
        push: "start"
      }, {
        token: "string.regexp",
        regex: /\//
      }, {
        token: "string.regexp",
        regex: /[)\]>}^|%][imxouesn]*/,
        onMatch: function onMatch(e, t, n) {
          return n.length && e[0] === v[n[0]] ? (n.shift(), this.next = n.shift(), this.token) : (this.next = "", "constant.language.escape");
        }
      }, {
        include: "regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex: [{
        token: "regexp.keyword",
        regex: /\\[wWdDhHsS]/
      }, {
        token: "constant.language.escape",
        regex: /\\[AGbBzZ]/
      }, {
        token: "constant.language.escape",
        regex: /\\g<[a-zA-Z0-9]*>/
      }, {
        token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"],
        regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/
      }, {
        token: ["constant.language.escape", "invalid", "constant.language.escape"],
        regex: /(\\p{\^?)([^/]*)(})/
      }, {
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: /[/][imxouesn]*/,
        next: "start"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "regexp.keyword",
        regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        push: "regex_character_class"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.keyword",
        regex: /\\[wWdDhHsS]/
      }, {
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: /&?&?\[\^?/,
        push: "regex_character_class"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "pop"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        defaultToken: "string.regexp.characterclass"
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, i), t.RubyHighlightRules = d;
}), ace.define("ace/mode/folding/ruby", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = e("../../token_iterator").TokenIterator,
      u = t.FoldMode = function () {};

  r.inherits(u, i), function () {
    this.indentKeywords = {
      "class": 1,
      def: 1,
      module: 1,
      "do": 1,
      unless: 1,
      "if": 1,
      "while": 1,
      "for": 1,
      until: 1,
      begin: 1,
      "else": 0,
      elsif: 0,
      rescue: 0,
      ensure: 0,
      when: 0,
      end: -1,
      "case": 1,
      "=begin": 1,
      "=end": -1
    }, this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/, this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = this.foldingStartMarker.test(r),
          s = this.foldingStopMarker.test(r);

      if (i && !s) {
        var o = r.match(this.foldingStartMarker);

        if (o[1]) {
          if (o[1] == "if" || o[1] == "else" || o[1] == "while" || o[1] == "until" || o[1] == "unless") {
            if (o[1] == "else" && /^\s*else\s*$/.test(r) === !1) return;
            if (/^\s*(?:if|else|while|until|unless)\s*/.test(r) === !1) return;
          }

          if (o[1] == "when" && /\sthen\s/.test(r) === !0) return;
          if (e.getTokenAt(n, o.index + 2).type === "keyword") return "start";
        } else {
          if (!o[3]) return "start";
          if (e.getTokenAt(n, o.index + 1).type === "comment.multiline") return "start";
        }
      }

      if (t != "markbeginend" || !s || i && s) return "";
      var o = r.match(this.foldingStopMarker);

      if (o[3] === "end") {
        if (e.getTokenAt(n, o.index + 1).type === "keyword") return "end";
      } else {
        if (!o[1]) return "end";
        if (e.getTokenAt(n, o.index + 1).type === "comment.multiline") return "end";
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.doc.getLine(n),
          i = this.foldingStartMarker.exec(r);
      if (i) return i[1] || i[3] ? this.rubyBlock(e, n, i.index + 2) : this.openingBracketBlock(e, "{", n, i.index);
      var i = this.foldingStopMarker.exec(r);
      if (i) return i[3] === "end" && e.getTokenAt(n, i.index + 1).type === "keyword" ? this.rubyBlock(e, n, i.index + 1) : i[1] === "=end" && e.getTokenAt(n, i.index + 1).type === "comment.multiline" ? this.rubyBlock(e, n, i.index + 1) : this.closingBracketBlock(e, "}", n, i.index + i[0].length);
    }, this.rubyBlock = function (e, t, n, r) {
      var i = new o(e, t, n),
          u = i.getCurrentToken();
      if (!u || u.type != "keyword" && u.type != "comment.multiline") return;
      var a = u.value,
          f = e.getLine(t);

      switch (u.value) {
        case "if":
        case "unless":
        case "while":
        case "until":
          var l = new RegExp("^\\s*" + u.value);
          if (!l.test(f)) return;
          var c = this.indentKeywords[a];
          break;

        case "when":
          if (/\sthen\s/.test(f)) return;

        case "elsif":
        case "rescue":
        case "ensure":
          var c = 1;
          break;

        case "else":
          var l = new RegExp("^\\s*" + u.value + "\\s*$");
          if (!l.test(f)) return;
          var c = 1;
          break;

        default:
          var c = this.indentKeywords[a];
      }

      var h = [a];
      if (!c) return;
      var p = c === -1 ? e.getLine(t - 1).length : e.getLine(t).length,
          d = t,
          v = [];
      v.push(i.getCurrentTokenRange()), i.step = c === -1 ? i.stepBackward : i.stepForward;
      if (u.type == "comment.multiline") while (u = i.step()) {
        if (u.type !== "comment.multiline") continue;

        if (c == 1) {
          p = 6;
          if (u.value == "=end") break;
        } else if (u.value == "=begin") break;
      } else while (u = i.step()) {
        var m = !1;
        if (u.type !== "keyword") continue;
        var g = c * this.indentKeywords[u.value];
        f = e.getLine(i.getCurrentTokenRow());

        switch (u.value) {
          case "do":
            for (var y = i.$tokenIndex - 1; y >= 0; y--) {
              var b = i.$rowTokens[y];

              if (b && (b.value == "while" || b.value == "until" || b.value == "for")) {
                g = 0;
                break;
              }
            }

            break;

          case "else":
            var l = new RegExp("^\\s*" + u.value + "\\s*$");
            if (!l.test(f) || a == "case") g = 0, m = !0;
            break;

          case "if":
          case "unless":
          case "while":
          case "until":
            var l = new RegExp("^\\s*" + u.value);
            l.test(f) || (g = 0, m = !0);
            break;

          case "when":
            if (/\sthen\s/.test(f) || a == "case") g = 0, m = !0;
        }

        if (g > 0) h.unshift(u.value);else if (g <= 0 && m === !1) {
          h.shift();

          if (!h.length) {
            if ((a == "while" || a == "until" || a == "for") && u.value != "do") break;
            if (u.value == "do" && c == -1 && g != 0) break;
            if (u.value != "do") break;
          }

          g === 0 && h.unshift(u.value);
        }
      }
      if (!u) return null;
      if (r) return v.push(i.getCurrentTokenRange()), v;
      var t = i.getCurrentTokenRow();

      if (c === -1) {
        if (u.type === "comment.multiline") var w = 6;else var w = e.getLine(t).length;
        return new s(t, w, d - 1, p);
      }

      return new s(d, p, t - 1, e.getLine(t - 1).length);
    };
  }.call(u.prototype);
}), ace.define("ace/mode/ruby", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/ruby_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range", "ace/mode/behaviour/cstyle", "ace/mode/folding/ruby"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./ruby_highlight_rules").RubyHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../range").Range,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/ruby").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f(), this.indentKeywords = this.foldingRules.indentKeywords;
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[]\s*$/),
            u = t.match(/^\s*(class|def|module)\s.*$/),
            a = t.match(/.*do(\s*|\s+\|.*\|\s*)$/),
            f = t.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);
        if (o || u || a || f) r += n;
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return /^\s+(end|else|rescue|ensure)$/.test(t + n) || this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n);
      if (/}/.test(r)) return this.$outdent.autoOutdent(t, n);
      var i = this.$getIndent(r),
          s = t.getLine(n - 1),
          o = this.$getIndent(s),
          a = t.getTabString();
      o.length <= i.length && i.slice(-a.length) == a && t.remove(new u(n, i.length - a.length, n, i.length));
    }, this.getMatching = function (e, t, n) {
      if (t == undefined) {
        var r = e.selection.lead;
        n = r.column, t = r.row;
      }

      var i = e.getTokenAt(t, n);
      if (i && i.value in this.indentKeywords) return this.foldingRules.rubyBlock(e, t, n, !0);
    }, this.$id = "ace/mode/ruby", this.snippetFileId = "ace/snippets/ruby";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/slim", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/slim_highlight_rules", "ace/mode/javascript", "ace/mode/markdown", "ace/mode/coffee", "ace/mode/scss", "ace/mode/sass", "ace/mode/less", "ace/mode/ruby", "ace/mode/css"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./slim_highlight_rules").SlimHighlightRules,
      o = function o() {
    i.call(this), this.HighlightRules = s, this.createModeDelegates({
      javascript: e("./javascript").Mode,
      markdown: e("./markdown").Mode,
      coffee: e("./coffee").Mode,
      scss: e("./scss").Mode,
      sass: e("./sass").Mode,
      less: e("./less").Mode,
      ruby: e("./ruby").Mode,
      css: e("./css").Mode
    });
  };

  r.inherits(o, i), function () {
    this.$id = "ace/mode/slim";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/slim"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-smarty.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-smarty.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/smarty_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      s = function s() {
    i.call(this);
    var e = {
      start: [{
        include: "#comments"
      }, {
        include: "#blocks"
      }],
      "#blocks": [{
        token: "punctuation.section.embedded.begin.smarty",
        regex: "\\{%?",
        push: [{
          token: "punctuation.section.embedded.end.smarty",
          regex: "%?\\}",
          next: "pop"
        }, {
          include: "#strings"
        }, {
          include: "#variables"
        }, {
          include: "#lang"
        }, {
          defaultToken: "source.smarty"
        }]
      }],
      "#comments": [{
        token: ["punctuation.definition.comment.smarty", "comment.block.smarty"],
        regex: "(\\{%?)(\\*)",
        push: [{
          token: "comment.block.smarty",
          regex: "\\*%?\\}",
          next: "pop"
        }, {
          defaultToken: "comment.block.smarty"
        }]
      }],
      "#lang": [{
        token: "keyword.operator.smarty",
        regex: "(?:!=|!|<=|>=|<|>|===|==|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\b"
      }, {
        token: "constant.language.smarty",
        regex: "\\b(?:TRUE|FALSE|true|false)\\b"
      }, {
        token: "keyword.control.smarty",
        regex: "\\b(?:if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\b"
      }, {
        token: "variable.parameter.smarty",
        regex: "\\b[a-zA-Z]+="
      }, {
        token: "support.function.built-in.smarty",
        regex: "\\b(?:capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\b"
      }, {
        token: "support.function.variable-modifier.smarty",
        regex: "\\|(?:capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)"
      }],
      "#strings": [{
        token: "punctuation.definition.string.begin.smarty",
        regex: "'",
        push: [{
          token: "punctuation.definition.string.end.smarty",
          regex: "'",
          next: "pop"
        }, {
          token: "constant.character.escape.smarty",
          regex: "\\\\."
        }, {
          defaultToken: "string.quoted.single.smarty"
        }]
      }, {
        token: "punctuation.definition.string.begin.smarty",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.smarty",
          regex: '"',
          next: "pop"
        }, {
          token: "constant.character.escape.smarty",
          regex: "\\\\."
        }, {
          defaultToken: "string.quoted.double.smarty"
        }]
      }],
      "#variables": [{
        token: ["punctuation.definition.variable.smarty", "variable.other.global.smarty"],
        regex: "\\b(\\$)(Smarty\\.)"
      }, {
        token: ["punctuation.definition.variable.smarty", "variable.other.smarty"],
        regex: "(\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\b"
      }, {
        token: ["keyword.operator.smarty", "variable.other.property.smarty"],
        regex: "(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b"
      }, {
        token: ["keyword.operator.smarty", "meta.function-call.object.smarty", "punctuation.definition.variable.smarty", "variable.other.smarty", "punctuation.definition.variable.smarty"],
        regex: "(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))"
      }]
    },
        t = e.start;

    for (var n in this.$rules) {
      this.$rules[n].unshift.apply(this.$rules[n], t);
    }

    Object.keys(e).forEach(function (t) {
      this.$rules[t] || (this.$rules[t] = e[t]);
    }, this), this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["tpl"],
    foldingStartMarker: "\\{%?",
    foldingStopMarker: "%?\\}",
    name: "Smarty",
    scopeName: "text.html.smarty"
  }, r.inherits(s, i), t.SmartyHighlightRules = s;
}), ace.define("ace/mode/smarty", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/smarty_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./smarty_highlight_rules").SmartyHighlightRules,
      o = function o() {
    i.call(this), this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.$id = "ace/mode/smarty";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/smarty"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-snippets.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-snippets.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/snippets", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/text_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME";
    this.$rules = {
      start: [{
        token: "constant.language.escape",
        regex: /\\[\$}`\\]/
      }, {
        token: "keyword",
        regex: "\\$(?:TM_)?(?:" + e + ")\\b"
      }, {
        token: "variable",
        regex: "\\$\\w+"
      }, {
        onMatch: function onMatch(e, t, n) {
          return n[1] ? n[1]++ : n.unshift(t, 1), this.tokenName;
        },
        tokenName: "markup.list",
        regex: "\\${",
        next: "varDecl"
      }, {
        onMatch: function onMatch(e, t, n) {
          return n[1] ? (n[1]--, n[1] || n.splice(0, 2), this.tokenName) : "text";
        },
        tokenName: "markup.list",
        regex: "}"
      }, {
        token: "doc.comment",
        regex: /^\${2}-{5,}$/
      }],
      varDecl: [{
        regex: /\d+\b/,
        token: "constant.numeric"
      }, {
        token: "keyword",
        regex: "(?:TM_)?(?:" + e + ")\\b"
      }, {
        token: "variable",
        regex: "\\w+"
      }, {
        regex: /:/,
        token: "punctuation.operator",
        next: "start"
      }, {
        regex: /\//,
        token: "string.regex",
        next: "regexp"
      }, {
        regex: "",
        next: "start"
      }],
      regexp: [{
        regex: /\\./,
        token: "escape"
      }, {
        regex: /\[/,
        token: "regex.start",
        next: "charClass"
      }, {
        regex: "/",
        token: "string.regex",
        next: "format"
      }, {
        token: "string.regex",
        regex: "."
      }],
      charClass: [{
        regex: "\\.",
        token: "escape"
      }, {
        regex: "\\]",
        token: "regex.end",
        next: "regexp"
      }, {
        token: "string.regex",
        regex: "."
      }],
      format: [{
        regex: /\\[ulULE]/,
        token: "keyword"
      }, {
        regex: /\$\d+/,
        token: "variable"
      }, {
        regex: "/[gim]*:?",
        token: "string.regex",
        next: "start"
      }, {
        token: "string",
        regex: "."
      }]
    };
  };

  r.inherits(o, s), t.SnippetHighlightRules = o;

  var u = function u() {
    this.$rules = {
      start: [{
        token: "text",
        regex: "^\\t",
        next: "sn-start"
      }, {
        token: "invalid",
        regex: /^ \s*/
      }, {
        token: "comment",
        regex: /^#.*/
      }, {
        token: "constant.language.escape",
        regex: "^regex ",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "^(trigger|endTrigger|name|snippet|guard|endGuard|tabTrigger|key)\\b"
      }],
      regex: [{
        token: "text",
        regex: "\\."
      }, {
        token: "keyword",
        regex: "/"
      }, {
        token: "empty",
        regex: "$",
        next: "start"
      }]
    }, this.embedRules(o, "sn-", [{
      token: "text",
      regex: "^\\t",
      next: "sn-start"
    }, {
      onMatch: function onMatch(e, t, n) {
        return n.splice(n.length), this.tokenName;
      },
      tokenName: "text",
      regex: "^(?!	)",
      next: "start"
    }]);
  };

  r.inherits(u, s), t.SnippetGroupHighlightRules = u;

  var a = e("./folding/coffee").FoldMode,
      f = function f() {
    this.HighlightRules = u, this.foldingRules = new a(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(f, i), function () {
    this.$indentWithTabs = !0, this.lineCommentStart = "#", this.$id = "ace/mode/snippets", this.snippetFileId = "ace/snippets/snippets";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/snippets"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-soy_template.js":
/*!*************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-soy_template.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/soy_template_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html_highlight_rules").HtmlHighlightRules,
      s = function s() {
    i.call(this);
    var e = {
      start: [{
        include: "#template"
      }, {
        include: "#if"
      }, {
        include: "#comment-line"
      }, {
        include: "#comment-block"
      }, {
        include: "#comment-doc"
      }, {
        include: "#call"
      }, {
        include: "#css"
      }, {
        include: "#param"
      }, {
        include: "#print"
      }, {
        include: "#msg"
      }, {
        include: "#for"
      }, {
        include: "#foreach"
      }, {
        include: "#switch"
      }, {
        include: "#tag"
      }, {
        include: "text.html.basic"
      }],
      "#call": [{
        token: ["punctuation.definition.tag.begin.soy", "meta.tag.call.soy"],
        regex: "(\\{/?)(\\s*)(?=call|delcall)",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          include: "#string-quoted-single"
        }, {
          include: "#string-quoted-double"
        }, {
          token: ["entity.name.tag.soy", "variable.parameter.soy"],
          regex: "(call|delcall)(\\s+[\\.\\w]+)"
        }, {
          token: ["entity.other.attribute-name.soy", "text", "keyword.operator.soy"],
          regex: "\\b(data)(\\s*)(=)"
        }, {
          defaultToken: "meta.tag.call.soy"
        }]
      }],
      "#comment-line": [{
        token: ["comment.line.double-slash.soy", "comment.line.double-slash.soy"],
        regex: "(//)(.*$)"
      }],
      "#comment-block": [{
        token: "punctuation.definition.comment.begin.soy",
        regex: "/\\*(?!\\*)",
        push: [{
          token: "punctuation.definition.comment.end.soy",
          regex: "\\*/",
          next: "pop"
        }, {
          defaultToken: "comment.block.soy"
        }]
      }],
      "#comment-doc": [{
        token: "punctuation.definition.comment.begin.soy",
        regex: "/\\*\\*(?!/)",
        push: [{
          token: "punctuation.definition.comment.end.soy",
          regex: "\\*/",
          next: "pop"
        }, {
          token: ["support.type.soy", "text", "variable.parameter.soy"],
          regex: "(@param|@param\\?)(\\s+)(\\w+)"
        }, {
          defaultToken: "comment.block.documentation.soy"
        }]
      }],
      "#css": [{
        token: ["punctuation.definition.tag.begin.soy", "meta.tag.css.soy", "entity.name.tag.soy"],
        regex: "(\\{/?)(\\s*)(css)\\b",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          token: "support.constant.soy",
          regex: "\\b(?:LITERAL|REFERENCE|BACKEND_SPECIFIC|GOOG)\\b"
        }, {
          defaultToken: "meta.tag.css.soy"
        }]
      }],
      "#for": [{
        token: ["punctuation.definition.tag.begin.soy", "meta.tag.for.soy", "entity.name.tag.soy"],
        regex: "(\\{/?)(\\s*)(for)\\b",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          token: "keyword.operator.soy",
          regex: "\\bin\\b"
        }, {
          token: "support.function.soy",
          regex: "\\brange\\b"
        }, {
          include: "#variable"
        }, {
          include: "#number"
        }, {
          include: "#primitive"
        }, {
          defaultToken: "meta.tag.for.soy"
        }]
      }],
      "#foreach": [{
        token: ["punctuation.definition.tag.begin.soy", "meta.tag.foreach.soy", "entity.name.tag.soy"],
        regex: "(\\{/?)(\\s*)(foreach)\\b",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          token: "keyword.operator.soy",
          regex: "\\bin\\b"
        }, {
          include: "#variable"
        }, {
          defaultToken: "meta.tag.foreach.soy"
        }]
      }],
      "#function": [{
        token: "support.function.soy",
        regex: "\\b(?:isFirst|isLast|index|hasData|length|keys|round|floor|ceiling|min|max|randomInt)\\b"
      }],
      "#if": [{
        token: ["punctuation.definition.tag.begin.soy", "meta.tag.if.soy", "entity.name.tag.soy"],
        regex: "(\\{/?)(\\s*)(if|elseif)\\b",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          include: "#variable"
        }, {
          include: "#operator"
        }, {
          include: "#function"
        }, {
          include: "#string-quoted-single"
        }, {
          include: "#string-quoted-double"
        }, {
          defaultToken: "meta.tag.if.soy"
        }]
      }],
      "#namespace": [{
        token: ["entity.name.tag.soy", "text", "variable.parameter.soy"],
        regex: "(namespace|delpackage)(\\s+)([\\w\\.]+)"
      }],
      "#number": [{
        token: "constant.numeric",
        regex: "[\\d]+"
      }],
      "#operator": [{
        token: "keyword.operator.soy",
        regex: "==|!=|\\band\\b|\\bor\\b|\\bnot\\b|-|\\+|/|\\?:"
      }],
      "#param": [{
        token: ["punctuation.definition.tag.begin.soy", "meta.tag.param.soy", "entity.name.tag.soy"],
        regex: "(\\{/?)(\\s*)(param)",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          include: "#variable"
        }, {
          token: ["entity.other.attribute-name.soy", "text", "keyword.operator.soy"],
          regex: "\\b([\\w]+)(\\s*)((?::)?)"
        }, {
          defaultToken: "meta.tag.param.soy"
        }]
      }],
      "#primitive": [{
        token: "constant.language.soy",
        regex: "\\b(?:null|false|true)\\b"
      }],
      "#msg": [{
        token: ["punctuation.definition.tag.begin.soy", "meta.tag.msg.soy", "entity.name.tag.soy"],
        regex: "(\\{/?)(\\s*)(msg)\\b",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          include: "#string-quoted-single"
        }, {
          include: "#string-quoted-double"
        }, {
          token: ["entity.other.attribute-name.soy", "text", "keyword.operator.soy"],
          regex: "\\b(meaning|desc)(\\s*)(=)"
        }, {
          defaultToken: "meta.tag.msg.soy"
        }]
      }],
      "#print": [{
        token: ["punctuation.definition.tag.begin.soy", "meta.tag.print.soy", "entity.name.tag.soy"],
        regex: "(\\{/?)(\\s*)(print)\\b",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          include: "#variable"
        }, {
          include: "#print-parameter"
        }, {
          include: "#number"
        }, {
          include: "#primitive"
        }, {
          include: "#attribute-lookup"
        }, {
          defaultToken: "meta.tag.print.soy"
        }]
      }],
      "#print-parameter": [{
        token: "keyword.operator.soy",
        regex: "\\|"
      }, {
        token: "variable.parameter.soy",
        regex: "noAutoescape|id|escapeHtml|escapeJs|insertWorkBreaks|truncate"
      }],
      "#special-character": [{
        token: "support.constant.soy",
        regex: "\\bsp\\b|\\bnil\\b|\\\\r|\\\\n|\\\\t|\\blb\\b|\\brb\\b"
      }],
      "#string-quoted-double": [{
        token: "string.quoted.double",
        regex: '"[^"]*"'
      }],
      "#string-quoted-single": [{
        token: "string.quoted.single",
        regex: "'[^']*'"
      }],
      "#switch": [{
        token: ["punctuation.definition.tag.begin.soy", "meta.tag.switch.soy", "entity.name.tag.soy"],
        regex: "(\\{/?)(\\s*)(switch|case)\\b",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          include: "#variable"
        }, {
          include: "#function"
        }, {
          include: "#number"
        }, {
          include: "#string-quoted-single"
        }, {
          include: "#string-quoted-double"
        }, {
          defaultToken: "meta.tag.switch.soy"
        }]
      }],
      "#attribute-lookup": [{
        token: "punctuation.definition.attribute-lookup.begin.soy",
        regex: "\\[",
        push: [{
          token: "punctuation.definition.attribute-lookup.end.soy",
          regex: "\\]",
          next: "pop"
        }, {
          include: "#variable"
        }, {
          include: "#function"
        }, {
          include: "#operator"
        }, {
          include: "#number"
        }, {
          include: "#primitive"
        }, {
          include: "#string-quoted-single"
        }, {
          include: "#string-quoted-double"
        }]
      }],
      "#tag": [{
        token: "punctuation.definition.tag.begin.soy",
        regex: "\\{",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          include: "#namespace"
        }, {
          include: "#variable"
        }, {
          include: "#special-character"
        }, {
          include: "#tag-simple"
        }, {
          include: "#function"
        }, {
          include: "#operator"
        }, {
          include: "#attribute-lookup"
        }, {
          include: "#number"
        }, {
          include: "#primitive"
        }, {
          include: "#print-parameter"
        }]
      }],
      "#tag-simple": [{
        token: "entity.name.tag.soy",
        regex: "{{\\s*(?:literal|else|ifempty|default)\\s*(?=\\})"
      }],
      "#template": [{
        token: ["punctuation.definition.tag.begin.soy", "meta.tag.template.soy"],
        regex: "(\\{/?)(\\s*)(?=template|deltemplate)",
        push: [{
          token: "punctuation.definition.tag.end.soy",
          regex: "\\}",
          next: "pop"
        }, {
          token: ["entity.name.tag.soy", "text", "entity.name.function.soy"],
          regex: "(template|deltemplate)(\\s+)([\\.\\w]+)",
          originalRegex: "(?<=template|deltemplate)\\s+([\\.\\w]+)"
        }, {
          token: ["entity.other.attribute-name.soy", "text", "keyword.operator.soy", "text", "string.quoted.double.soy"],
          regex: '\\b(private)(\\s*)(=)(\\s*)("true"|"false")'
        }, {
          token: ["entity.other.attribute-name.soy", "text", "keyword.operator.soy", "text", "string.quoted.single.soy"],
          regex: "\\b(private)(\\s*)(=)(\\s*)('true'|'false')"
        }, {
          token: ["entity.other.attribute-name.soy", "text", "keyword.operator.soy", "text", "string.quoted.double.soy"],
          regex: '\\b(autoescape)(\\s*)(=)(\\s*)("true"|"false"|"contextual")'
        }, {
          token: ["entity.other.attribute-name.soy", "text", "keyword.operator.soy", "text", "string.quoted.single.soy"],
          regex: "\\b(autoescape)(\\s*)(=)(\\s*)('true'|'false'|'contextual')"
        }, {
          defaultToken: "meta.tag.template.soy"
        }]
      }],
      "#variable": [{
        token: "variable.other.soy",
        regex: "\\$[\\w\\.]+"
      }]
    };

    for (var t in e) {
      this.$rules[t] ? this.$rules[t].unshift.apply(this.$rules[t], e[t]) : this.$rules[t] = e[t];
    }

    this.normalizeRules();
  };

  s.metaData = {
    comment: "SoyTemplate",
    fileTypes: ["soy"],
    firstLineMatch: "\\{\\s*namespace\\b",
    foldingStartMarker: "\\{\\s*template\\s+[^\\}]*\\}",
    foldingStopMarker: "\\{\\s*/\\s*template\\s*\\}",
    name: "SoyTemplate",
    scopeName: "source.soy"
  }, r.inherits(s, i), t.SoyTemplateHighlightRules = s;
}), ace.define("ace/mode/soy_template", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/soy_template_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./soy_template_highlight_rules").SoyTemplateHighlightRules,
      o = function o() {
    i.call(this), this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/soy_template";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/soy_template"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-space.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-space.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/space_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "empty_line",
        regex: / */,
        next: "key"
      }, {
        token: "empty_line",
        regex: /$/,
        next: "key"
      }],
      key: [{
        token: "variable",
        regex: /\S+/
      }, {
        token: "empty_line",
        regex: /$/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: / /,
        next: "value"
      }],
      value: [{
        token: "keyword.operator",
        regex: /$/,
        next: "start"
      }, {
        token: "string",
        regex: /[^$]/
      }]
    };
  };

  r.inherits(s, i), t.SpaceHighlightRules = s;
}), ace.define("ace/mode/space", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/folding/coffee", "ace/mode/space_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./folding/coffee").FoldMode,
      o = e("./space_highlight_rules").SpaceHighlightRules,
      u = function u() {
    this.HighlightRules = o, this.foldingRules = new s(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.$id = "ace/mode/space";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/space"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-sparql.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-sparql.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/sparql_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        include: "#comments"
      }, {
        include: "#strings"
      }, {
        include: "#string-language-suffixes"
      }, {
        include: "#string-datatype-suffixes"
      }, {
        include: "#logic-operators"
      }, {
        include: "#relative-urls"
      }, {
        include: "#xml-schema-types"
      }, {
        include: "#rdf-schema-types"
      }, {
        include: "#owl-types"
      }, {
        include: "#qnames"
      }, {
        include: "#keywords"
      }, {
        include: "#built-in-functions"
      }, {
        include: "#variables"
      }, {
        include: "#boolean-literal"
      }, {
        include: "#punctuation-operators"
      }],
      "#boolean-literal": [{
        token: "constant.language.boolean.sparql",
        regex: /true|false/
      }],
      "#built-in-functions": [{
        token: "support.function.sparql",
        regex: /[Aa][Bb][Ss]|[Aa][Vv][Gg]|[Bb][Nn][Oo][Dd][Ee]|[Bb][Oo][Uu][Nn][Dd]|[Cc][Ee][Ii][Ll]|[Cc][Oo][Aa][Ll][Ee][Ss][Cc][Ee]|[Cc][Oo][Nn][Cc][Aa][Tt]|[Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]|[Cc][Oo][Uu][Nn][Tt]|[Dd][Aa][Tt][Aa][Tt][Yy][Pp][Ee]|[Dd][Aa][Yy]|[Ee][Nn][Cc][Oo][Dd][Ee]_[Ff][Oo][Rr]_[Uu][Rr][Ii]|[Ee][Xx][Ii][Ss][Tt][Ss]|[Ff][Ll][Oo][Oo][Rr]|[Gg][Rr][Oo][Uu][Pp]_[Cc][Oo][Nn][Cc][Aa][Tt]|[Hh][Oo][Uu][Rr][Ss]|[Ii][Ff]|[Ii][Rr][Ii]|[Ii][Ss][Bb][Ll][Aa][Nn][Kk]|[Ii][Ss][Ii][Rr][Ii]|[Ii][Ss][Ll][Ii][Tt][Ee][Rr][Aa][Ll]|[Ii][Ss][Nn][Uu][Mm][Ee][Rr][Ii][Cc]|[Ii][Ss][Uu][Rr][Ii]|[Ll][Aa][Nn][Gg]|[Ll][Aa][Nn][Gg][Mm][Aa][Tt][Cc][Hh][Ee][Ss]|[Ll][Cc][Aa][Ss][Ee]|[Mm][Aa][Xx]|[Mm][Dd]5|[Mm][Ii][Nn]|[Mm][Ii][Nn][Uu][Tt][Ee][Ss]|[Mm][Oo][Nn][Tt][Hh]|[Nn][Oo][Ww]|[Rr][Aa][Nn][Dd]|[Rr][Ee][Gg][Ee][Xx]|[Rr][Ee][Pp][Ll][Aa][Cc][Ee]|[Rr][Oo][Uu][Nn][Dd]|[Ss][Aa][Mm][Ee][Tt][Ee][Rr][Mm]|[Ss][Aa][Mm][Pp][Ll][Ee]|[Ss][Ee][Cc][Oo][Nn][Dd][Ss]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Hh][Aa](?:1|256|384|512)|[Ss][Tt][Rr]|[Ss][Tt][Rr][Aa][Ff][Tt][Ee][Rr]|[Ss][Tt][Rr][Bb][Ee][Ff][Oo][Rr][Ee]|[Ss][Tt][Rr][Dd][Tt]|[Ss][Tt][Rr][Ee][Nn][Dd][Ss]|[Ss][Tt][Rr][Ll][Aa][Nn][Gg]|[Ss][Tt][Rr][Ll][Ee][Nn]|[Ss][Tt][Rr][Ss][Tt][Aa][Rr][Tt][Ss]|[Ss][Tt][Rr][Uu][Uu][Ii][Dd]|[Ss][Uu][Bb][Ss][Tt][Rr]|[Ss][Uu][Mm]|[Tt][Ii][Mm][Ee][Zz][Oo][Nn][Ee]|[Tt][Zz]|[Uu][Cc][Aa][Ss][Ee]|[Uu][Rr][Ii]|[Uu][Uu][Ii][Dd]|[Yy][Ee][Aa][Rr]/
      }],
      "#comments": [{
        token: ["punctuation.definition.comment.sparql", "comment.line.hash.sparql"],
        regex: /(#)(.*$)/
      }],
      "#keywords": [{
        token: "keyword.other.sparql",
        regex: /[Aa][Dd][Dd]|[Aa][Ll][Ll]|[Aa][Ss]|[As][Ss][Cc]|[Aa][Ss][Kk]|[Bb][Aa][Ss][Ee]|[Bb][Ii][Nn][Dd]|[Bb][Yy]|[Cc][Ll][Ee][Aa][Rr]|[Cc][Oo][Nn][Ss][Tt][Rr][Uu][Cc][Tt]|[Cc][Oo][Pp][Yy]|[Cc][Rr][Ee][Aa][Tt][Ee]|[Dd][Aa][Tt][Aa]|[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Dd][Ee][Ll][Ee][Tt][Ee]|[Dd][Ee][Sc][Cc]|[Dd][Ee][Ss][Cc][Rr][Ii][Bb][Ee]|[Dd][Ii][Ss][Tt][Ii][Nn][Cc][Tt]|[Dd][Rr][Oo][Pp]|[Ff][Ii][Ll][Tt][Ee][Rr]|[Ff][Rr][Oo][Mm]|[Gg][Rr][Aa][Pp][Hh]|[Gg][Rr][Oo][Uu][Pp]|[Hh][Aa][Vv][Ii][Nn][Gg]|[Ii][Nn][Ss][Ee][Rr][Tt]|[Ll][Ii][Mm][Ii][Tt]|[Ll][Oo][Aa][Dd]|[Mm][Ii][Nn][Uu][Ss]|[Mm][Oo][Vv][Ee]|[Nn][Aa][Mm][Ee][Dd]|[Oo][Ff][Ff][Ss][Ee][Tt]|[Oo][Pp][Tt][Ii][Oo][Nn][Aa][Ll]|[Oo][Rr][Dd][Ee][Rr]|[Pp][Rr][Ee][Ff][Ii][Xx]|[Rr][Ee][Dd][Uu][Cc][Ee][Dd]|[Ss][Ee][Ll][Ee][Cc][Tt]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Ee][Rr][Vv][Ii][Cc][Ee]|[Ss][Ii][Ll][Ee][Nn][Tt]|[Tt][Oo]|[Uu][Nn][Dd][Ee][Ff]|[Uu][Nn][Ii][Oo][Nn]|[Uu][Ss][Ii][Nn][Gg]|[Vv][Aa][Ll][Uu][Ee][Ss]|[Ww][He][Ee][Rr][Ee]|[Ww][Ii][Tt][Hh]/
      }],
      "#logic-operators": [{
        token: "keyword.operator.logical.sparql",
        regex: /\|\||&&|=|!=|<|>|<=|>=|(?:^|!?\s)IN(?:!?\s|$)|(?:^|!?\s)NOT(?:!?\s|$)|-|\+|\*|\/|\!/
      }],
      "#owl-types": [{
        token: "support.type.datatype.owl.sparql",
        regex: /owl:[a-zA-Z]+/
      }],
      "#punctuation-operators": [{
        token: "keyword.operator.punctuation.sparql",
        regex: /;|,|\.|\(|\)|\{|\}|\|/
      }],
      "#qnames": [{
        token: "entity.name.other.qname.sparql",
        regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/
      }],
      "#rdf-schema-types": [{
        token: "support.type.datatype.rdf.schema.sparql",
        regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/
      }],
      "#relative-urls": [{
        token: "string.quoted.other.relative.url.sparql",
        regex: /</,
        push: [{
          token: "string.quoted.other.relative.url.sparql",
          regex: />/,
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.relative.url.sparql"
        }]
      }],
      "#string-datatype-suffixes": [{
        token: "keyword.operator.datatype.suffix.sparql",
        regex: /\^\^/
      }],
      "#string-language-suffixes": [{
        token: ["keyword.operator.language.suffix.sparql", "constant.language.suffix.sparql"],
        regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/
      }],
      "#strings": [{
        token: "string.quoted.triple.sparql",
        regex: /"""/,
        push: [{
          token: "string.quoted.triple.sparql",
          regex: /"""/,
          next: "pop"
        }, {
          defaultToken: "string.quoted.triple.sparql"
        }]
      }, {
        token: "string.quoted.double.sparql",
        regex: /"/,
        push: [{
          token: "string.quoted.double.sparql",
          regex: /"/,
          next: "pop"
        }, {
          token: "invalid.string.newline",
          regex: /$/
        }, {
          token: "constant.character.escape.sparql",
          regex: /\\./
        }, {
          defaultToken: "string.quoted.double.sparql"
        }]
      }],
      "#variables": [{
        token: "variable.other.sparql",
        regex: /(?:\?|\$)[-_a-zA-Z0-9]+/
      }],
      "#xml-schema-types": [{
        token: "support.type.datatype.schema.sparql",
        regex: /xsd?:[a-z][a-zA-Z]+/
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["rq", "sparql"],
    name: "SPARQL",
    scopeName: "source.sparql"
  }, r.inherits(s, i), t.SPARQLHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/sparql", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/sparql_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./sparql_highlight_rules").SPARQLHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.$id = "ace/mode/sparql";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/sparql"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-sql.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-sql.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/sql_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|when|then|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|foreign|not|references|default|null|inner|cross|natural|database|drop|grant",
        t = "true|false",
        n = "avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl",
        r = "int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|money|real|number|integer",
        i = this.createKeywordMapper({
      "support.function": n,
      keyword: e,
      "constant.language": t,
      "storage.type": r
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: "--.*$"
      }, {
        token: "comment",
        start: "/\\*",
        end: "\\*/"
      }, {
        token: "string",
        regex: '".*?"'
      }, {
        token: "string",
        regex: "'.*?'"
      }, {
        token: "string",
        regex: "`.*?`"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: i,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "paren.lparen",
        regex: "[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\)]"
      }, {
        token: "text",
        regex: "\\s+"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.SqlHighlightRules = s;
}), ace.define("ace/mode/sql", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/sql_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./sql_highlight_rules").SqlHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = "--", this.$id = "ace/mode/sql", this.snippetFileId = "ace/snippets/sql";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/sql"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-sqlserver.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-sqlserver.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/sqlserver_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "ALL|AND|ANY|BETWEEN|EXISTS|IN|LIKE|NOT|OR|SOME";
    e += "|NULL|IS|APPLY|INNER|OUTER|LEFT|RIGHT|JOIN|CROSS";
    var t = "OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|AVG|CHECKSUM_AGG|COUNT|COUNT_BIG|GROUPING|GROUPING_ID|MAX|MIN|STDEV|STDEVP|SUM|VAR|VARP|DENSE_RANK|NTILE|RANK|ROW_NUMBER@@DATEFIRST|@@DBTS|@@LANGID|@@LANGUAGE|@@LOCK_TIMEOUT|@@MAX_CONNECTIONS|@@MAX_PRECISION|@@NESTLEVEL|@@OPTIONS|@@REMSERVER|@@SERVERNAME|@@SERVICENAME|@@SPID|@@TEXTSIZE|@@VERSION|CAST|CONVERT|PARSE|TRY_CAST|TRY_CONVERT|TRY_PARSE@@CURSOR_ROWS|@@FETCH_STATUS|CURSOR_STATUS|@@DATEFIRST|@@LANGUAGE|CURRENT_TIMESTAMP|DATEADD|DATEDIFF|DATEFROMPARTS|DATENAME|DATEPART|DATETIME2FROMPARTS|DATETIMEFROMPARTS|DATETIMEOFFSETFROMPARTS|DAY|EOMONTH|GETDATE|GETUTCDATE|ISDATE|MONTH|SET DATEFIRST|SET DATEFORMAT|SET LANGUAGE|SMALLDATETIMEFROMPARTS|SP_HELPLANGUAGE|SWITCHOFFSET|SYSDATETIME|SYSDATETIMEOFFSET|SYSUTCDATETIME|TIMEFROMPARTS|TODATETIMEOFFSET|YEAR|CHOOSE|IIF|ABS|ACOS|ASIN|ATAN|ATN2|CEILING|COS|COT|DEGREES|EXP|FLOOR|LOG|LOG10|PI|POWER|RADIANS|RAND|ROUND|SIGN|SIN|SQRT|SQUARE|TAN|@@PROCID|APPLOCK_MODE|APPLOCK_TEST|APP_NAME|ASSEMBLYPROPERTY|COLUMNPROPERTY|COL_LENGTH|COL_NAME|DATABASEPROPERTYEX|DATABASE_PRINCIPAL_ID|DB_ID|DB_NAME|FILEGROUPPROPERTY|FILEGROUP_ID|FILEGROUP_NAME|FILEPROPERTY|FILE_ID|FILE_IDEX|FILE_NAME|FULLTEXTCATALOGPROPERTY|FULLTEXTSERVICEPROPERTY|INDEXKEY_PROPERTY|INDEXPROPERTY|INDEX_COL|OBJECTPROPERTY|OBJECTPROPERTYEX|OBJECT_DEFINITION|OBJECT_ID|OBJECT_NAME|OBJECT_SCHEMA_NAME|ORIGINAL_DB_NAME|PARSENAME|SCHEMA_ID|SCHEMA_NAME|SCOPE_IDENTITY|SERVERPROPERTY|STATS_DATE|TYPEPROPERTY|TYPE_ID|TYPE_NAME|CERTENCODED|CERTPRIVATEKEY|CURRENT_USER|DATABASE_PRINCIPAL_ID|HAS_PERMS_BY_NAME|IS_MEMBER|IS_ROLEMEMBER|IS_SRVROLEMEMBER|ORIGINAL_LOGIN|PERMISSIONS|PWDCOMPARE|PWDENCRYPT|SCHEMA_ID|SCHEMA_NAME|SESSION_USER|SUSER_ID|SUSER_NAME|SUSER_SID|SUSER_SNAME|SYS.FN_BUILTIN_PERMISSIONS|SYS.FN_GET_AUDIT_FILE|SYS.FN_MY_PERMISSIONS|SYSTEM_USER|USER_ID|USER_NAME|ASCII|CHAR|CHARINDEX|CONCAT|DIFFERENCE|FORMAT|LEN|LOWER|LTRIM|NCHAR|PATINDEX|QUOTENAME|REPLACE|REPLICATE|REVERSE|RTRIM|SOUNDEX|SPACE|STR|STUFF|SUBSTRING|UNICODE|UPPER|$PARTITION|@@ERROR|@@IDENTITY|@@PACK_RECEIVED|@@ROWCOUNT|@@TRANCOUNT|BINARY_CHECKSUM|CHECKSUM|CONNECTIONPROPERTY|CONTEXT_INFO|CURRENT_REQUEST_ID|ERROR_LINE|ERROR_MESSAGE|ERROR_NUMBER|ERROR_PROCEDURE|ERROR_SEVERITY|ERROR_STATE|FORMATMESSAGE|GETANSINULL|GET_FILESTREAM_TRANSACTION_CONTEXT|HOST_ID|HOST_NAME|ISNULL|ISNUMERIC|MIN_ACTIVE_ROWVERSION|NEWID|NEWSEQUENTIALID|ROWCOUNT_BIG|XACT_STATE|@@CONNECTIONS|@@CPU_BUSY|@@IDLE|@@IO_BUSY|@@PACKET_ERRORS|@@PACK_RECEIVED|@@PACK_SENT|@@TIMETICKS|@@TOTAL_ERRORS|@@TOTAL_READ|@@TOTAL_WRITE|FN_VIRTUALFILESTATS|PATINDEX|TEXTPTR|TEXTVALID|COALESCE|NULLIF",
        n = "BIGINT|BINARY|BIT|CHAR|CURSOR|DATE|DATETIME|DATETIME2|DATETIMEOFFSET|DECIMAL|FLOAT|HIERARCHYID|IMAGE|INTEGER|INT|MONEY|NCHAR|NTEXT|NUMERIC|NVARCHAR|REAL|SMALLDATETIME|SMALLINT|SMALLMONEY|SQL_VARIANT|TABLE|TEXT|TIME|TIMESTAMP|TINYINT|UNIQUEIDENTIFIER|VARBINARY|VARCHAR|XML",
        r = "sp_addextendedproc|sp_addextendedproperty|sp_addmessage|sp_addtype|sp_addumpdevice|sp_add_data_file_recover_suspect_db|sp_add_log_file_recover_suspect_db|sp_altermessage|sp_attach_db|sp_attach_single_file_db|sp_autostats|sp_bindefault|sp_bindrule|sp_bindsession|sp_certify_removable|sp_clean_db_file_free_space|sp_clean_db_free_space|sp_configure|sp_control_plan_guide|sp_createstats|sp_create_plan_guide|sp_create_plan_guide_from_handle|sp_create_removable|sp_cycle_errorlog|sp_datatype_info|sp_dbcmptlevel|sp_dbmmonitoraddmonitoring|sp_dbmmonitorchangealert|sp_dbmmonitorchangemonitoring|sp_dbmmonitordropalert|sp_dbmmonitordropmonitoring|sp_dbmmonitorhelpalert|sp_dbmmonitorhelpmonitoring|sp_dbmmonitorresults|sp_db_increased_partitions|sp_delete_backuphistory|sp_depends|sp_describe_first_result_set|sp_describe_undeclared_parameters|sp_detach_db|sp_dropdevice|sp_dropextendedproc|sp_dropextendedproperty|sp_dropmessage|sp_droptype|sp_execute|sp_executesql|sp_getapplock|sp_getbindtoken|sp_help|sp_helpconstraint|sp_helpdb|sp_helpdevice|sp_helpextendedproc|sp_helpfile|sp_helpfilegroup|sp_helpindex|sp_helplanguage|sp_helpserver|sp_helpsort|sp_helpstats|sp_helptext|sp_helptrigger|sp_indexoption|sp_invalidate_textptr|sp_lock|sp_monitor|sp_prepare|sp_prepexec|sp_prepexecrpc|sp_procoption|sp_recompile|sp_refreshview|sp_releaseapplock|sp_rename|sp_renamedb|sp_resetstatus|sp_sequence_get_range|sp_serveroption|sp_setnetname|sp_settriggerorder|sp_spaceused|sp_tableoption|sp_unbindefault|sp_unbindrule|sp_unprepare|sp_updateextendedproperty|sp_updatestats|sp_validname|sp_who|sys.sp_merge_xtp_checkpoint_files|sys.sp_xtp_bind_db_resource_pool|sys.sp_xtp_checkpoint_force_garbage_collection|sys.sp_xtp_control_proc_exec_stats|sys.sp_xtp_control_query_exec_stats|sys.sp_xtp_unbind_db_resource_pool",
        s = "ABSOLUTE|ACTION|ADA|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOCATE|ALTER|AND|ANY|ARE|ARRAY|AS|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|ATOMIC|AUTHORIZATION|BACKUP|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BLOB|BOOLEAN|BOTH|BREADTH|BREAK|BROWSE|BULK|BY|CALL|CALLED|CARDINALITY|CASCADE|CASCADED|CASE|CATALOG|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CHECKPOINT|CLASS|CLOB|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COLLECT|COLUMN|COMMIT|COMPLETION|COMPUTE|CONDITION|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTAINS|CONTAINSTABLE|CONTINUE|CORR|CORRESPONDING|COVAR_POP|COVAR_SAMP|CREATE|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CYCLE|DATA|DATABASE|DBCC|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DENY|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DETERMINISTIC|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISK|DISTINCT|DISTRIBUTED|DOMAIN|DOUBLE|DROP|DUMP|DYNAMIC|EACH|ELEMENT|ELSE|END|END-EXEC|EQUALS|ERRLVL|ESCAPE|EVERY|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXIT|EXTERNAL|EXTRACT|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FREE|FREETEXT|FREETEXTTABLE|FROM|FULL|FULLTEXTTABLE|FUNCTION|FUSION|GENERAL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|HOLD|HOLDLOCK|HOST|HOUR|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|IMMEDIATE|IN|INCLUDE|INDEX|INDICATOR|INITIALIZE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INTEGER|INTERSECT|INTERSECTION|INTERVAL|INTO|IS|ISOLATION|ITERATE|JOIN|KEY|KILL|LANGUAGE|LARGE|LAST|LATERAL|LEADING|LESS|LEVEL|LIKE|LIKE_REGEX|LIMIT|LINENO|LN|LOAD|LOCAL|LOCALTIME|LOCALTIMESTAMP|LOCATOR|MAP|MATCH|MEMBER|MERGE|METHOD|MINUTE|MOD|MODIFIES|MODIFY|MODULE|MULTISET|NAMES|NATIONAL|NATURAL|NCLOB|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NORMALIZE|NOT|NULL|NULLIF|OBJECT|OCCURRENCES_REGEX|OCTET_LENGTH|OF|OFF|OFFSETS|OLD|ON|ONLY|OPEN|OPERATION|OPTION|OR|ORDER|ORDINALITY|OUT|OUTER|OUTPUT|OVER|OVERLAPS|OVERLAY|PAD|PARAMETER|PARAMETERS|PARTIAL|PARTITION|PASCAL|PATH|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLAN|POSITION|POSITION_REGEX|POSTFIX|PRECISION|PREFIX|PREORDER|PREPARE|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|RAISERROR|RANGE|READ|READS|READTEXT|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCING|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|RELATIVE|RELEASE|REPLICATION|RESTORE|RESTRICT|RESULT|RETURN|RETURNS|REVERT|REVOKE|ROLE|ROLLBACK|ROLLUP|ROUTINE|ROW|ROWCOUNT|ROWGUIDCOL|ROWS|RULE|SAVE|SAVEPOINT|SCHEMA|SCOPE|SCROLL|SEARCH|SECOND|SECTION|SECURITYAUDIT|SELECT|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEQUENCE|SESSION|SET|SETS|SETUSER|SHUTDOWN|SIMILAR|SIZE|SOME|SPECIFIC|SPECIFICTYPE|SQL|SQLCA|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STATE|STATEMENT|STATIC|STATISTICS|STDDEV_POP|STDDEV_SAMP|STRUCTURE|SUBMULTISET|SUBSTRING_REGEX|SYMMETRIC|SYSTEM|TABLESAMPLE|TEMPORARY|TERMINATE|TEXTSIZE|THAN|THEN|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATE_REGEX|TRANSLATION|TREAT|TRIGGER|TRIM|TRUNCATE|TSEQUAL|UESCAPE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARIABLE|VARYING|VAR_POP|VAR_SAMP|VIEW|WAITFOR|WHEN|WHENEVER|WHERE|WHILE|WIDTH_BUCKET|WINDOW|WITH|WITHIN|WITHIN GROUP|WITHOUT|WORK|WRITE|WRITETEXT|XMLAGG|XMLATTRIBUTES|XMLBINARY|XMLCAST|XMLCOMMENT|XMLCONCAT|XMLDOCUMENT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLITERATE|XMLNAMESPACES|XMLPARSE|XMLPI|XMLQUERY|XMLSERIALIZE|XMLTABLE|XMLTEXT|XMLVALIDATE|ZONE";
    s += "|KEEPIDENTITY|KEEPDEFAULTS|IGNORE_CONSTRAINTS|IGNORE_TRIGGERS|XLOCK|FORCESCAN|FORCESEEK|HOLDLOCK|NOLOCK|NOWAIT|PAGLOCK|READCOMMITTED|READCOMMITTEDLOCK|READPAST|READUNCOMMITTED|REPEATABLEREAD|ROWLOCK|SERIALIZABLE|SNAPSHOT|SPATIAL_WINDOW_MAX_CELLS|TABLOCK|TABLOCKX|UPDLOCK|XLOCK|IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX|EXPAND|VIEWS|FAST|FORCE|KEEP|KEEPFIXED|MAXDOP|MAXRECURSION|OPTIMIZE|PARAMETERIZATION|SIMPLE|FORCED|RECOMPILE|ROBUST|PLAN|SPATIAL_WINDOW_MAX_CELLS|NOEXPAND|HINT", s += "|LOOP|HASH|MERGE|REMOTE", s += "|TRY|CATCH|THROW", s += "|TYPE", s = s.split("|"), s = s.filter(function (r, i, s) {
      return e.split("|").indexOf(r) === -1 && t.split("|").indexOf(r) === -1 && n.split("|").indexOf(r) === -1;
    }), s = s.sort().join("|");
    var o = this.createKeywordMapper({
      "constant.language": e,
      "storage.type": n,
      "support.function": t,
      "support.storedprocedure": r,
      keyword: s
    }, "identifier", !0),
        u = "SET ANSI_DEFAULTS|SET ANSI_NULLS|SET ANSI_NULL_DFLT_OFF|SET ANSI_NULL_DFLT_ON|SET ANSI_PADDING|SET ANSI_WARNINGS|SET ARITHABORT|SET ARITHIGNORE|SET CONCAT_NULL_YIELDS_NULL|SET CURSOR_CLOSE_ON_COMMIT|SET DATEFIRST|SET DATEFORMAT|SET DEADLOCK_PRIORITY|SET FIPS_FLAGGER|SET FMTONLY|SET FORCEPLAN|SET IDENTITY_INSERT|SET IMPLICIT_TRANSACTIONS|SET LANGUAGE|SET LOCK_TIMEOUT|SET NOCOUNT|SET NOEXEC|SET NUMERIC_ROUNDABORT|SET OFFSETS|SET PARSEONLY|SET QUERY_GOVERNOR_COST_LIMIT|SET QUOTED_IDENTIFIER|SET REMOTE_PROC_TRANSACTIONS|SET ROWCOUNT|SET SHOWPLAN_ALL|SET SHOWPLAN_TEXT|SET SHOWPLAN_XML|SET STATISTICS IO|SET STATISTICS PROFILE|SET STATISTICS TIME|SET STATISTICS XML|SET TEXTSIZE|SET XACT_ABORT".split("|"),
        a = "READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SNAPSHOP|SERIALIZABLE".split("|");

    for (var f = 0; f < a.length; f++) {
      u.push("SET TRANSACTION ISOLATION LEVEL " + a[f]);
    }

    this.$rules = {
      start: [{
        token: "string.start",
        regex: "'",
        next: [{
          token: "constant.language.escape",
          regex: /''/
        }, {
          token: "string.end",
          next: "start",
          regex: "'"
        }, {
          defaultToken: "string"
        }]
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "--.*$"
      }, {
        token: "comment",
        start: "/\\*",
        end: "\\*/"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: o,
        regex: "@{0,2}[a-zA-Z_$][a-zA-Z0-9_$]*\\b(?!])"
      }, {
        token: "constant.class",
        regex: "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\*"
      }, {
        token: "paren.lparen",
        regex: "[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\)]"
      }, {
        token: "punctuation",
        regex: ",|;"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: "no_regex"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    };

    for (var f = 0; f < u.length; f++) {
      this.$rules.start.unshift({
        token: "set.statement",
        regex: u[f]
      });
    }

    this.embedRules(i, "doc-", [i.getEndRule("start")]), this.normalizeRules();

    var l = [],
        c = function c(e, t) {
      e.forEach(function (e) {
        l.push({
          name: e,
          value: e,
          score: 0,
          meta: t
        });
      });
    };

    c(r.split("|"), "procedure"), c(e.split("|"), "operator"), c(t.split("|"), "function"), c(n.split("|"), "type"), c(u, "statement"), c(s.split("|"), "keyword"), this.completions = l;
  };

  r.inherits(o, s), t.SqlHighlightRules = o;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/folding/sqlserver", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./cstyle").FoldMode,
      o = t.FoldMode = function () {};

  r.inherits(o, s), function () {
    this.foldingStartMarker = /(\bCASE\b|\bBEGIN\b)|^\s*(\/\*)/i, this.startRegionRe = /^\s*(\/\*|--)#?region\b/, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.getBeginEndBlock(e, n, o, s[1]);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      return;
    }, this.getBeginEndBlock = function (e, t, n, r) {
      var s = {
        row: t,
        column: n + r.length
      },
          o = e.getLength(),
          u,
          a = 1,
          f = /(\bCASE\b|\bBEGIN\b)|(\bEND\b)/i;

      while (++t < o) {
        u = e.getLine(t);
        var l = f.exec(u);
        if (!l) continue;
        l[1] ? a++ : a--;
        if (!a) break;
      }

      var c = t;
      if (c > s.row) return new i(s.row, s.column, c, u.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/sqlserver", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/sqlserver_highlight_rules", "ace/mode/folding/sqlserver"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./sqlserver_highlight_rules").SqlHighlightRules,
      o = e("./folding/sqlserver").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "--", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getCompletions = function (e, t, n, r) {
      return t.$mode.$highlightRules.completions;
    }, this.$id = "ace/mode/sqlserver", this.snippetFileId = "ace/snippets/sqlserver";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/sqlserver"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-stylus.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-stylus.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/stylus_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/css_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = e("./css_highlight_rules"),
      o = function o() {
    var e = this.createKeywordMapper({
      "support.type": s.supportType,
      "support.function": s.supportFunction,
      "support.constant": s.supportConstant,
      "support.constant.color": s.supportConstantColor,
      "support.constant.fonts": s.supportConstantFonts
    }, "text", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: /\/\/.*$/
      }, {
        token: "comment",
        regex: /\/\*/,
        next: "comment"
      }, {
        token: ["entity.name.function.stylus", "text"],
        regex: "^([-a-zA-Z_][-\\w]*)?(\\()"
      }, {
        token: ["entity.other.attribute-name.class.stylus"],
        regex: "\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*"
      }, {
        token: ["entity.language.stylus"],
        regex: "^ *&"
      }, {
        token: ["variable.language.stylus"],
        regex: "(arguments)"
      }, {
        token: ["keyword.stylus"],
        regex: "@[-\\w]+"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: s.pseudoElements
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: s.pseudoClasses
      }, {
        token: ["entity.name.tag.stylus"],
        regex: "(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation.definition.entity.stylus", "entity.other.attribute-name.id.stylus"],
        regex: "(#)([a-zA-Z][a-zA-Z0-9_-]*)"
      }, {
        token: "meta.vendor-prefix.stylus",
        regex: "-webkit-|-moz\\-|-ms-|-o-"
      }, {
        token: "keyword.control.stylus",
        regex: "(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b"
      }, {
        token: "keyword.operator.stylus",
        regex: "!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!="
      }, {
        token: "keyword.operator.stylus",
        regex: "(?:in|is(?:nt)?|not)\\b"
      }, {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: s.numRe
      }, {
        token: "keyword",
        regex: "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }],
      comment: [{
        token: "comment",
        regex: "\\*\\/",
        next: "start"
      }, {
        defaultToken: "comment"
      }],
      qqstring: [{
        token: "string",
        regex: '[^"\\\\]+'
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qqstring"
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }],
      qstring: [{
        token: "string",
        regex: "[^'\\\\]+"
      }, {
        token: "string",
        regex: "\\\\$",
        next: "qstring"
      }, {
        token: "string",
        regex: "'|$",
        next: "start"
      }]
    };
  };

  r.inherits(o, i), t.StylusHighlightRules = o;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/stylus", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/stylus_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./stylus_highlight_rules").StylusHighlightRules,
      o = e("./folding/coffee").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/stylus";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/stylus"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-svg.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-svg.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/xml_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/xml", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./xml_highlight_rules").XmlHighlightRules,
      u = e("./behaviour/xml").XmlBehaviour,
      a = e("./folding/xml").FoldMode,
      f = e("../worker/worker_client").WorkerClient,
      l = function l() {
    this.HighlightRules = o, this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(l, s), function () {
    this.voidElements = i.arrayToMap([]), this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.createWorker = function (e) {
      var t = new f(["ace"], "ace/mode/xml_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/xml";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/svg_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      s = e("./xml_highlight_rules").XmlHighlightRules,
      o = function o() {
    s.call(this), this.embedTagRules(i, "js-", "script"), this.normalizeRules();
  };

  r.inherits(o, s), t.SvgHighlightRules = o;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/svg", ["require", "exports", "module", "ace/lib/oop", "ace/mode/xml", "ace/mode/javascript", "ace/mode/svg_highlight_rules", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./xml").Mode,
      s = e("./javascript").Mode,
      o = e("./svg_highlight_rules").SvgHighlightRules,
      u = e("./folding/mixed").FoldMode,
      a = e("./folding/xml").FoldMode,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    i.call(this), this.HighlightRules = o, this.createModeDelegates({
      "js-": s
    }), this.foldingRules = new u(new a(), {
      "js-": new f()
    });
  };

  r.inherits(l, i), function () {
    this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.$id = "ace/mode/svg";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/svg"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-swift.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-swift.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/swift_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = function u() {
    function t(e, t) {
      var n = t.nestable || t.interpolation,
          r = t.interpolation && t.interpolation.nextState || "start",
          s = {
        regex: e + (t.multiline ? "" : "(?=.)"),
        token: "string.start"
      },
          o = [t.escape && {
        regex: t.escape,
        token: "character.escape"
      }, t.interpolation && {
        token: "paren.quasi.start",
        regex: i.escapeRegExp(t.interpolation.lead + t.interpolation.open),
        push: r
      }, t.error && {
        regex: t.error,
        token: "error.invalid"
      }, {
        regex: e + (t.multiline ? "" : "|$"),
        token: "string.end",
        next: n ? "pop" : "start"
      }, {
        defaultToken: "string"
      }].filter(Boolean);
      n ? s.push = o : s.next = o;
      if (!t.interpolation) return s;
      var u = t.interpolation.open,
          a = t.interpolation.close,
          f = {
        regex: "[" + i.escapeRegExp(u + a) + "]",
        onMatch: function onMatch(e, t, n) {
          this.next = e == u ? this.nextState : "";
          if (e == u && n.length) return n.unshift("start", t), "paren";

          if (e == a && n.length) {
            n.shift(), this.next = n.shift();
            if (this.next.indexOf("string") != -1) return "paren.quasi.end";
          }

          return e == u ? "paren.lparen" : "paren.rparen";
        },
        nextState: r
      };
      return [f, s];
    }

    function n() {
      return [{
        token: "comment",
        regex: "\\/\\/(?=.)",
        next: [s.getTagRule(), {
          token: "comment",
          regex: "$|^",
          next: "start"
        }, {
          defaultToken: "comment",
          caseInsensitive: !0
        }]
      }, s.getStartRule("doc-start"), {
        token: "comment.start",
        regex: /\/\*/,
        stateName: "nested_comment",
        push: [s.getTagRule(), {
          token: "comment.start",
          regex: /\/\*/,
          push: "nested_comment"
        }, {
          token: "comment.end",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment",
          caseInsensitive: !0
        }]
      }];
    }

    var e = this.createKeywordMapper({
      "variable.language": "",
      keyword: "__COLUMN__|__FILE__|__FUNCTION__|__LINE__|as|associativity|break|case|class|continue|default|deinit|didSet|do|dynamicType|else|enum|extension|fallthrough|for|func|get|if|import|in|infix|init|inout|is|left|let|let|mutating|new|none|nonmutating|operator|override|postfix|precedence|prefix|protocol|return|right|safe|Self|self|set|struct|subscript|switch|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|convenience|dynamic|final|infix|lazy|mutating|nonmutating|optional|override|postfix|prefix|required|static|guard|defer",
      "storage.type": "bool|double|Double|extension|float|Float|int|Int|open|internal|fileprivate|private|public|string|String",
      "constant.language": "false|Infinity|NaN|nil|no|null|null|off|on|super|this|true|undefined|yes",
      "support.function": ""
    }, "identifier");
    this.$rules = {
      start: [t('"""', {
        escape: /\\(?:[0\\tnr"']|u{[a-fA-F1-9]{0,8}})/,
        interpolation: {
          lead: "\\",
          open: "(",
          close: ")"
        },
        error: /\\./,
        multiline: !0
      }), t('"', {
        escape: /\\(?:[0\\tnr"']|u{[a-fA-F1-9]{0,8}})/,
        interpolation: {
          lead: "\\",
          open: "(",
          close: ")"
        },
        error: /\\./,
        multiline: !1
      }), n(), {
        regex: /@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/,
        token: "variable.parameter"
      }, {
        regex: /[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/,
        token: e
      }, {
        token: "constant.numeric",
        regex: /[+-]?(?:0(?:b[01]+|o[0-7]+|x[\da-fA-F])|\d+(?:(?:\.\d*)?(?:[PpEe][+-]?\d+)?)\b)/
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }]
    }, this.embedRules(s, "doc-", [s.getEndRule("start")]), this.normalizeRules();
  };

  r.inherits(u, o), t.HighlightRules = u;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/swift", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/swift_highlight_rules", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./swift_highlight_rules").HighlightRules,
      o = e("./behaviour/cstyle").CstyleBehaviour,
      u = e("./folding/cstyle").FoldMode,
      a = function a() {
    this.HighlightRules = s, this.foldingRules = new u(), this.$behaviour = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/",
      nestable: !0
    }, this.$id = "ace/mode/swift";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/swift"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-tcl.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-tcl.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/tcl_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*\\\\$",
        next: "commentfollow"
      }, {
        token: "comment",
        regex: "#.*$"
      }, {
        token: "support.function",
        regex: "[\\\\]$",
        next: "splitlineStart"
      }, {
        token: "text",
        regex: /\\(?:["{}\[\]$\\])/
      }, {
        token: "text",
        regex: "^|[^{][;][^}]|[/\r/]",
        next: "commandItem"
      }, {
        token: "string",
        regex: '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: '[ ]*["]',
        next: "qqstring"
      }, {
        token: "variable.instance",
        regex: "[$]",
        next: "variable"
      }, {
        token: "support.function",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::"
      }, {
        token: "identifier",
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "paren.lparen",
        regex: "[[{]",
        next: "commandItem"
      }, {
        token: "paren.lparen",
        regex: "[(]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      commandItem: [{
        token: "comment",
        regex: "#.*\\\\$",
        next: "commentfollow"
      }, {
        token: "comment",
        regex: "#.*$",
        next: "start"
      }, {
        token: "string",
        regex: '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "variable.instance",
        regex: "[$]",
        next: "variable"
      }, {
        token: "support.function",
        regex: "(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])",
        next: "commandItem"
      }, {
        token: "support.function",
        regex: "[a-zA-Z0-9_/]+(?:[:][:])",
        next: "commandItem"
      }, {
        token: "support.function",
        regex: "(?:[:][:])",
        next: "commandItem"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "support.function",
        regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::"
      }, {
        token: "keyword",
        regex: "[a-zA-Z0-9_/]+",
        next: "start"
      }],
      commentfollow: [{
        token: "comment",
        regex: ".*\\\\$",
        next: "commentfollow"
      }, {
        token: "comment",
        regex: ".+",
        next: "start"
      }],
      splitlineStart: [{
        token: "text",
        regex: "^.",
        next: "start"
      }],
      variable: [{
        token: "variable.instance",
        regex: "[a-zA-Z_\\d]+(?:[(][a-zA-Z_\\d]+[)])?",
        next: "start"
      }, {
        token: "variable.instance",
        regex: "{?[a-zA-Z_\\d]+}?",
        next: "start"
      }],
      qqstring: [{
        token: "string",
        regex: '(?:[^\\\\]|\\\\.)*?["]',
        next: "start"
      }, {
        token: "string",
        regex: ".+"
      }]
    };
  };

  r.inherits(s, i), t.TclHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/tcl", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/folding/cstyle", "ace/mode/tcl_highlight_rules", "ace/mode/matching_brace_outdent", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./folding/cstyle").FoldMode,
      o = e("./tcl_highlight_rules").TclHighlightRules,
      u = e("./matching_brace_outdent").MatchingBraceOutdent,
      a = e("../range").Range,
      f = function f() {
    this.HighlightRules = o, this.$outdent = new u(), this.foldingRules = new s(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = "#", this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var o = t.match(/^.*[\{\(\[]\s*$/);
        o && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/tcl", this.snippetFileId = "ace/snippets/tcl";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/tcl"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-terraform.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-terraform.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/terraform_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: ["storage.function.terraform"],
        regex: "\\b(output|resource|data|variable|module|export)\\b"
      }, {
        token: "variable.terraform",
        regex: "\\$\\s",
        push: [{
          token: "keyword.terraform",
          regex: "(-var-file|-var)"
        }, {
          token: "variable.terraform",
          regex: "\\n|$",
          next: "pop"
        }, {
          include: "strings"
        }, {
          include: "variables"
        }, {
          include: "operators"
        }, {
          defaultToken: "text"
        }]
      }, {
        token: "language.support.class",
        regex: "\\b(timeouts|provider|connection|provisioner|lifecycleprovider|atlas)\\b"
      }, {
        token: "singleline.comment.terraform",
        regex: "#.*$"
      }, {
        token: "singleline.comment.terraform",
        regex: "//.*$"
      }, {
        token: "multiline.comment.begin.terraform",
        regex: /\/\*/,
        push: "blockComment"
      }, {
        token: "storage.function.terraform",
        regex: "^\\s*(locals|terraform)\\s*{"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        include: "constants"
      }, {
        include: "strings"
      }, {
        include: "operators"
      }, {
        include: "variables"
      }],
      blockComment: [{
        regex: /\*\//,
        token: "multiline.comment.end.terraform",
        next: "pop"
      }, {
        defaultToken: "comment"
      }],
      constants: [{
        token: "constant.language.terraform",
        regex: "\\b(true|false|yes|no|on|off|EOF)\\b"
      }, {
        token: "constant.numeric.terraform",
        regex: "(\\b([0-9]+)([kKmMgG]b?)?\\b)|(\\b(0x[0-9A-Fa-f]+)([kKmMgG]b?)?\\b)"
      }],
      variables: [{
        token: ["variable.assignment.terraform", "keyword.operator"],
        regex: "\\b([a-zA-Z_]+)(\\s*=)"
      }],
      interpolated_variables: [{
        token: "variable.terraform",
        regex: "\\b(var|self|count|path|local)\\b(?:\\.*[a-zA-Z_-]*)?"
      }],
      strings: [{
        token: "punctuation.quote.terraform",
        regex: "'",
        push: [{
          token: "punctuation.quote.terraform",
          regex: "'",
          next: "pop"
        }, {
          include: "escaped_chars"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "punctuation.quote.terraform",
        regex: '"',
        push: [{
          token: "punctuation.quote.terraform",
          regex: '"',
          next: "pop"
        }, {
          include: "interpolation"
        }, {
          include: "escaped_chars"
        }, {
          defaultToken: "string"
        }]
      }],
      escaped_chars: [{
        token: "constant.escaped_char.terraform",
        regex: "\\\\."
      }],
      operators: [{
        token: "keyword.operator",
        regex: "\\?|:|==|!=|>|<|>=|<=|&&|\\|\\||!|%|&|\\*|\\+|\\-|/|="
      }],
      interpolation: [{
        token: "punctuation.interpolated.begin.terraform",
        regex: "\\$?\\$\\{",
        push: [{
          token: "punctuation.interpolated.end.terraform",
          regex: "\\}",
          next: "pop"
        }, {
          include: "interpolated_variables"
        }, {
          include: "operators"
        }, {
          include: "constants"
        }, {
          include: "strings"
        }, {
          include: "functions"
        }, {
          include: "parenthesis"
        }, {
          defaultToken: "punctuation"
        }]
      }],
      functions: [{
        token: "keyword.function.terraform",
        regex: "\\b(abs|basename|base64decode|base64encode|base64gzip|base64sha256|base64sha512|bcrypt|ceil|chomp|chunklist|cidrhost|cidrnetmask|cidrsubnet|coalesce|coalescelist|compact|concat|contains|dirname|distinct|element|file|floor|flatten|format|formatlist|indent|index|join|jsonencode|keys|length|list|log|lookup|lower|map|matchkeys|max|merge|min|md5|pathexpand|pow|replace|rsadecrypt|sha1|sha256|sha512|signum|slice|sort|split|substr|timestamp|timeadd|title|transpose|trimspace|upper|urlencode|uuid|values|zipmap)\\b"
      }],
      parenthesis: [{
        token: "paren.lparen",
        regex: "\\["
      }, {
        token: "paren.rparen",
        regex: "\\]"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.TerraformHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/terraform", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/terraform_highlight_rules", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./terraform_highlight_rules").TerraformHighlightRules,
      o = e("./behaviour/cstyle").CstyleBehaviour,
      u = e("./folding/cstyle").FoldMode,
      a = e("./matching_brace_outdent").MatchingBraceOutdent,
      f = function f() {
    i.call(this), this.HighlightRules = s, this.$outdent = new a(), this.$behaviour = new o(), this.foldingRules = new u();
  };

  r.inherits(f, i), function () {
    this.lineCommentStart = ["#", "//"], this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$id = "ace/mode/terraform";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/terraform"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-tex.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-tex.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/tex_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o(e) {
    e || (e = "text"), this.$rules = {
      start: [{
        token: "comment",
        regex: "%.*$"
      }, {
        token: e,
        regex: "\\\\[$&%#\\{\\}]"
      }, {
        token: "keyword",
        regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",
        next: "nospell"
      }, {
        token: "keyword",
        regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])"
      }, {
        token: "paren.keyword.operator",
        regex: "[[({]"
      }, {
        token: "paren.keyword.operator",
        regex: "[\\])}]"
      }, {
        token: e,
        regex: "\\s+"
      }],
      nospell: [{
        token: "comment",
        regex: "%.*$",
        next: "start"
      }, {
        token: "nospell." + e,
        regex: "\\\\[$&%#\\{\\}]"
      }, {
        token: "keyword",
        regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"
      }, {
        token: "keyword",
        regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])",
        next: "start"
      }, {
        token: "paren.keyword.operator",
        regex: "[[({]"
      }, {
        token: "paren.keyword.operator",
        regex: "[\\])]"
      }, {
        token: "paren.keyword.operator",
        regex: "}",
        next: "start"
      }, {
        token: "nospell." + e,
        regex: "\\s+"
      }, {
        token: "nospell." + e,
        regex: "\\w+"
      }]
    };
  };

  r.inherits(o, s), t.TexHighlightRules = o;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/tex", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/text_highlight_rules", "ace/mode/tex_highlight_rules", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./tex_highlight_rules").TexHighlightRules,
      u = e("./matching_brace_outdent").MatchingBraceOutdent,
      a = function a(e) {
    e ? this.HighlightRules = s : this.HighlightRules = o, this.$outdent = new u(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = "%", this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.allowAutoInsert = function () {
      return !1;
    }, this.$id = "ace/mode/tex", this.snippetFileId = "ace/snippets/tex";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/tex"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-text.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-text.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/mode/text"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-textile.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-textile.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/textile_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: function token(e) {
          return e.charAt(0) == "h" ? "markup.heading." + e.charAt(1) : "markup.heading";
        },
        regex: "h1|h2|h3|h4|h5|h6|bq|p|bc|pre",
        next: "blocktag"
      }, {
        token: "keyword",
        regex: "[\\*]+|[#]+"
      }, {
        token: "text",
        regex: ".+"
      }],
      blocktag: [{
        token: "keyword",
        regex: "\\. ",
        next: "start"
      }, {
        token: "keyword",
        regex: "\\(",
        next: "blocktagproperties"
      }],
      blocktagproperties: [{
        token: "keyword",
        regex: "\\)",
        next: "blocktag"
      }, {
        token: "string",
        regex: "[a-zA-Z0-9\\-_]+"
      }, {
        token: "keyword",
        regex: "#"
      }]
    };
  };

  r.inherits(s, i), t.TextileHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/textile", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/textile_highlight_rules", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./textile_highlight_rules").TextileHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = function u() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.type = "text", this.getNextLineIndent = function (e, t, n) {
      return e == "intag" ? n : "";
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/textile", this.snippetFileId = "ace/snippets/textile";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/textile"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-toml.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-toml.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/toml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = this.createKeywordMapper({
      "constant.language.boolean": "true|false"
    }, "identifier"),
        t = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*\\b";
    this.$rules = {
      start: [{
        token: "comment.toml",
        regex: /#.*$/
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: ["variable.keygroup.toml"],
        regex: "(?:^\\s*)(\\[\\[([^\\]]+)\\]\\])"
      }, {
        token: ["variable.keygroup.toml"],
        regex: "(?:^\\s*)(\\[([^\\]]+)\\])"
      }, {
        token: e,
        regex: t
      }, {
        token: "support.date.toml",
        regex: "\\d{4}-\\d{2}-\\d{2}(T)\\d{2}:\\d{2}:\\d{2}(Z)"
      }, {
        token: "constant.numeric.toml",
        regex: "-?\\d+(\\.?\\d+)?"
      }],
      qqstring: [{
        token: "string",
        regex: "\\\\$",
        next: "qqstring"
      }, {
        token: "constant.language.escape",
        regex: '\\\\[0tnr"\\\\]'
      }, {
        token: "string",
        regex: '"|$',
        next: "start"
      }, {
        defaultToken: "string"
      }]
    };
  };

  r.inherits(s, i), t.TomlHighlightRules = s;
}), ace.define("ace/mode/folding/ini", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function () {};

  r.inherits(o, s), function () {
    this.foldingStartMarker = /^\s*\[([^\])]*)]\s*(?:$|[;#])/, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.foldingStartMarker,
          s = e.getLine(n),
          o = s.match(r);
      if (!o) return;
      var u = o[1] + ".",
          a = s.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        s = e.getLine(n);
        if (/^\s*$/.test(s)) continue;
        o = s.match(r);
        if (o && o[1].lastIndexOf(u, 0) !== 0) break;
        c = n;
      }

      if (c > l) {
        var h = e.getLine(c).length;
        return new i(l, a, c, h);
      }
    };
  }.call(o.prototype);
}), ace.define("ace/mode/toml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/toml_highlight_rules", "ace/mode/folding/ini"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./toml_highlight_rules").TomlHighlightRules,
      o = e("./folding/ini").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.$id = "ace/mode/toml";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/toml"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-tsx.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-tsx.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/typescript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      s = function s(e) {
    var t = [{
      token: ["storage.type", "text", "entity.name.function.ts"],
      regex: "(function)(\\s+)([a-zA-Z0-9$_\xA1-\uFFFF][a-zA-Z0-9d$_\xA1-\uFFFF]*)"
    }, {
      token: "keyword",
      regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)"
    }, {
      token: ["keyword", "storage.type.variable.ts"],
      regex: "(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)"
    }, {
      token: "keyword",
      regex: "\\b(?:super|export|import|keyof|infer)\\b"
    }, {
      token: ["storage.type.variable.ts"],
      regex: "(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))"
    }],
        n = new i({
      jsx: (e && e.jsx) == 1
    }).getRules();
    n.no_regex = t.concat(n.no_regex), this.$rules = n;
  };

  r.inherits(s, i), t.TypeScriptHighlightRules = s;
}), ace.define("ace/mode/typescript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript", "ace/mode/typescript_highlight_rules", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript").Mode,
      s = e("./typescript_highlight_rules").TypeScriptHighlightRules,
      o = e("./behaviour/cstyle").CstyleBehaviour,
      u = e("./folding/cstyle").FoldMode,
      a = e("./matching_brace_outdent").MatchingBraceOutdent,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new a(), this.$behaviour = new o(), this.foldingRules = new u();
  };

  r.inherits(f, i), function () {
    this.createWorker = function (e) {
      return null;
    }, this.$id = "ace/mode/typescript";
  }.call(f.prototype), t.Mode = f;
}), ace.define("ace/mode/tsx", ["require", "exports", "module", "ace/lib/oop", "ace/mode/typescript"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./typescript").Mode,
      s = function s() {
    i.call(this), this.$highlightRuleConfig = {
      jsx: !0
    };
  };

  r.inherits(s, i), function () {
    this.$id = "ace/mode/tsx";
  }.call(s.prototype), t.Mode = s;
});

(function () {
  ace.require(["ace/mode/tsx"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-turtle.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-turtle.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/turtle_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        include: "#comments"
      }, {
        include: "#strings"
      }, {
        include: "#base-prefix-declarations"
      }, {
        include: "#string-language-suffixes"
      }, {
        include: "#string-datatype-suffixes"
      }, {
        include: "#relative-urls"
      }, {
        include: "#xml-schema-types"
      }, {
        include: "#rdf-schema-types"
      }, {
        include: "#owl-types"
      }, {
        include: "#qnames"
      }, {
        include: "#punctuation-operators"
      }],
      "#base-prefix-declarations": [{
        token: "keyword.other.prefix.turtle",
        regex: /@(?:base|prefix)/
      }],
      "#comments": [{
        token: ["punctuation.definition.comment.turtle", "comment.line.hash.turtle"],
        regex: /(#)(.*$)/
      }],
      "#owl-types": [{
        token: "support.type.datatype.owl.turtle",
        regex: /owl:[a-zA-Z]+/
      }],
      "#punctuation-operators": [{
        token: "keyword.operator.punctuation.turtle",
        regex: /;|,|\.|\(|\)|\[|\]/
      }],
      "#qnames": [{
        token: "entity.name.other.qname.turtle",
        regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/
      }],
      "#rdf-schema-types": [{
        token: "support.type.datatype.rdf.schema.turtle",
        regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/
      }],
      "#relative-urls": [{
        token: "string.quoted.other.relative.url.turtle",
        regex: /</,
        push: [{
          token: "string.quoted.other.relative.url.turtle",
          regex: />/,
          next: "pop"
        }, {
          defaultToken: "string.quoted.other.relative.url.turtle"
        }]
      }],
      "#string-datatype-suffixes": [{
        token: "keyword.operator.datatype.suffix.turtle",
        regex: /\^\^/
      }],
      "#string-language-suffixes": [{
        token: ["keyword.operator.language.suffix.turtle", "constant.language.suffix.turtle"],
        regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/
      }],
      "#strings": [{
        token: "string.quoted.triple.turtle",
        regex: /"""/,
        push: [{
          token: "string.quoted.triple.turtle",
          regex: /"""/,
          next: "pop"
        }, {
          defaultToken: "string.quoted.triple.turtle"
        }]
      }, {
        token: "string.quoted.double.turtle",
        regex: /"/,
        push: [{
          token: "string.quoted.double.turtle",
          regex: /"/,
          next: "pop"
        }, {
          token: "invalid.string.newline",
          regex: /$/
        }, {
          token: "constant.character.escape.turtle",
          regex: /\\./
        }, {
          defaultToken: "string.quoted.double.turtle"
        }]
      }],
      "#xml-schema-types": [{
        token: "support.type.datatype.xml.schema.turtle",
        regex: /xsd?:[a-z][a-zA-Z]+/
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["ttl", "nt"],
    name: "Turtle",
    scopeName: "source.turtle"
  }, r.inherits(s, i), t.TurtleHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/turtle", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/turtle_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./turtle_highlight_rules").TurtleHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.$id = "ace/mode/turtle";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/turtle"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-twig.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-twig.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/twig_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/html_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./html_highlight_rules").HtmlHighlightRules,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = function u() {
    s.call(this);
    var e = "autoescape|block|do|embed|extends|filter|flush|for|from|if|import|include|macro|sandbox|set|spaceless|use|verbatim";
    e = e + "|end" + e.replace(/\|/g, "|end");
    var t = "abs|batch|capitalize|convert_encoding|date|date_modify|default|e|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|slice|sort|split|striptags|title|trim|upper|url_encode",
        n = "attribute|constant|cycle|date|dump|parent|random|range|template_from_string",
        r = "constant|divisibleby|sameas|defined|empty|even|iterable|odd",
        i = "null|none|true|false",
        o = "b-and|b-xor|b-or|in|is|and|or|not",
        u = this.createKeywordMapper({
      "keyword.control.twig": e,
      "support.function.twig": [t, n, r].join("|"),
      "keyword.operator.twig": o,
      "constant.language.twig": i
    }, "identifier");

    for (var a in this.$rules) {
      this.$rules[a].unshift({
        token: "variable.other.readwrite.local.twig",
        regex: "\\{\\{-?",
        push: "twig-start"
      }, {
        token: "meta.tag.twig",
        regex: "\\{%-?",
        push: "twig-start"
      }, {
        token: "comment.block.twig",
        regex: "\\{#-?",
        push: "twig-comment"
      });
    }

    this.$rules["twig-comment"] = [{
      token: "comment.block.twig",
      regex: ".*-?#\\}",
      next: "pop"
    }], this.$rules["twig-start"] = [{
      token: "variable.other.readwrite.local.twig",
      regex: "-?\\}\\}",
      next: "pop"
    }, {
      token: "meta.tag.twig",
      regex: "-?%\\}",
      next: "pop"
    }, {
      token: "string",
      regex: "'",
      next: "twig-qstring"
    }, {
      token: "string",
      regex: '"',
      next: "twig-qqstring"
    }, {
      token: "constant.numeric",
      regex: "0[xX][0-9a-fA-F]+\\b"
    }, {
      token: "constant.numeric",
      regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
    }, {
      token: "constant.language.boolean",
      regex: "(?:true|false)\\b"
    }, {
      token: u,
      regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
    }, {
      token: "keyword.operator.assignment",
      regex: "=|~"
    }, {
      token: "keyword.operator.comparison",
      regex: "==|!=|<|>|>=|<=|==="
    }, {
      token: "keyword.operator.arithmetic",
      regex: "\\+|-|/|%|//|\\*|\\*\\*"
    }, {
      token: "keyword.operator.other",
      regex: "\\.\\.|\\|"
    }, {
      token: "punctuation.operator",
      regex: /\?|:|,|;|\./
    }, {
      token: "paren.lparen",
      regex: /[\[\({]/
    }, {
      token: "paren.rparen",
      regex: /[\])}]/
    }, {
      token: "text",
      regex: "\\s+"
    }], this.$rules["twig-qqstring"] = [{
      token: "constant.language.escape",
      regex: /\\[\\"$#ntr]|#{[^"}]*}/
    }, {
      token: "string",
      regex: '"',
      next: "twig-start"
    }, {
      defaultToken: "string"
    }], this.$rules["twig-qstring"] = [{
      token: "constant.language.escape",
      regex: /\\[\\'ntr]}/
    }, {
      token: "string",
      regex: "'",
      next: "twig-start"
    }, {
      defaultToken: "string"
    }], this.normalizeRules();
  };

  r.inherits(u, o), t.TwigHighlightRules = u;
}), ace.define("ace/mode/twig", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/twig_highlight_rules", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./twig_highlight_rules").TwigHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = function u() {
    i.call(this), this.HighlightRules = s, this.$outdent = new o();
  };

  r.inherits(u, i), function () {
    this.blockComment = {
      start: "{#",
      end: "#}"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start") {
        var u = t.match(/^.*[\{\(\[]\s*$/);
        u && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/twig";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/twig"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-typescript.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-typescript.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/typescript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      s = function s(e) {
    var t = [{
      token: ["storage.type", "text", "entity.name.function.ts"],
      regex: "(function)(\\s+)([a-zA-Z0-9$_\xA1-\uFFFF][a-zA-Z0-9d$_\xA1-\uFFFF]*)"
    }, {
      token: "keyword",
      regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)"
    }, {
      token: ["keyword", "storage.type.variable.ts"],
      regex: "(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)"
    }, {
      token: "keyword",
      regex: "\\b(?:super|export|import|keyof|infer)\\b"
    }, {
      token: ["storage.type.variable.ts"],
      regex: "(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))"
    }],
        n = new i({
      jsx: (e && e.jsx) == 1
    }).getRules();
    n.no_regex = t.concat(n.no_regex), this.$rules = n;
  };

  r.inherits(s, i), t.TypeScriptHighlightRules = s;
}), ace.define("ace/mode/typescript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript", "ace/mode/typescript_highlight_rules", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript").Mode,
      s = e("./typescript_highlight_rules").TypeScriptHighlightRules,
      o = e("./behaviour/cstyle").CstyleBehaviour,
      u = e("./folding/cstyle").FoldMode,
      a = e("./matching_brace_outdent").MatchingBraceOutdent,
      f = function f() {
    this.HighlightRules = s, this.$outdent = new a(), this.$behaviour = new o(), this.foldingRules = new u();
  };

  r.inherits(f, i), function () {
    this.createWorker = function (e) {
      return null;
    }, this.$id = "ace/mode/typescript";
  }.call(f.prototype), t.Mode = f;
});

(function () {
  ace.require(["ace/mode/typescript"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-vala.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-vala.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/vala_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: ["meta.using.vala", "keyword.other.using.vala", "meta.using.vala", "storage.modifier.using.vala", "meta.using.vala", "punctuation.terminator.vala"],
        regex: "^(\\s*)(using)\\b(?:(\\s*)([^ ;$]+)(\\s*)((?:;)?))?"
      }, {
        include: "#code"
      }],
      "#all-types": [{
        include: "#primitive-arrays"
      }, {
        include: "#primitive-types"
      }, {
        include: "#object-types"
      }],
      "#annotations": [{
        token: ["storage.type.annotation.vala", "punctuation.definition.annotation-arguments.begin.vala"],
        regex: "(@[^ (]+)(\\()",
        push: [{
          token: "punctuation.definition.annotation-arguments.end.vala",
          regex: "\\)",
          next: "pop"
        }, {
          token: ["constant.other.key.vala", "text", "keyword.operator.assignment.vala"],
          regex: "(\\w*)(\\s*)(=)"
        }, {
          include: "#code"
        }, {
          token: "punctuation.seperator.property.vala",
          regex: ","
        }, {
          defaultToken: "meta.declaration.annotation.vala"
        }]
      }, {
        token: "storage.type.annotation.vala",
        regex: "@\\w*"
      }],
      "#anonymous-classes-and-new": [{
        token: "keyword.control.new.vala",
        regex: "\\bnew\\b",
        push_disabled: [{
          token: "text",
          regex: "(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)",
          TODO: "FIXME: regexp doesn't have js equivalent",
          originalRegex: "(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)",
          next: "pop"
        }, {
          token: ["storage.type.vala", "text"],
          regex: "(\\w+)(\\s*)(?=\\[)",
          push: [{
            token: "text",
            regex: "}|(?=;|\\))",
            next: "pop"
          }, {
            token: "text",
            regex: "\\[",
            push: [{
              token: "text",
              regex: "\\]",
              next: "pop"
            }, {
              include: "#code"
            }]
          }, {
            token: "text",
            regex: "{",
            push: [{
              token: "text",
              regex: "(?=})",
              next: "pop"
            }, {
              include: "#code"
            }]
          }]
        }, {
          token: "text",
          regex: "(?=\\w.*\\()",
          push: [{
            token: "text",
            regex: "(?<=\\))",
            TODO: "FIXME: regexp doesn't have js equivalent",
            originalRegex: "(?<=\\))",
            next: "pop"
          }, {
            include: "#object-types"
          }, {
            token: "text",
            regex: "\\(",
            push: [{
              token: "text",
              regex: "\\)",
              next: "pop"
            }, {
              include: "#code"
            }]
          }]
        }, {
          token: "meta.inner-class.vala",
          regex: "{",
          push: [{
            token: "meta.inner-class.vala",
            regex: "}",
            next: "pop"
          }, {
            include: "#class-body"
          }, {
            defaultToken: "meta.inner-class.vala"
          }]
        }]
      }],
      "#assertions": [{
        token: ["keyword.control.assert.vala", "meta.declaration.assertion.vala"],
        regex: "\\b(assert|requires|ensures)(\\s)",
        push: [{
          token: "meta.declaration.assertion.vala",
          regex: "$",
          next: "pop"
        }, {
          token: "keyword.operator.assert.expression-seperator.vala",
          regex: ":"
        }, {
          include: "#code"
        }, {
          defaultToken: "meta.declaration.assertion.vala"
        }]
      }],
      "#class": [{
        token: "meta.class.vala",
        regex: "(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\s+\\w+)",
        push: [{
          token: "paren.vala",
          regex: "}",
          next: "pop"
        }, {
          include: "#storage-modifiers"
        }, {
          include: "#comments"
        }, {
          token: ["storage.modifier.vala", "meta.class.identifier.vala", "entity.name.type.class.vala"],
          regex: "(class|(?:@)?interface|enum|struct|namespace)(\\s+)([\\w\\.]+)"
        }, {
          token: "storage.modifier.extends.vala",
          regex: ":",
          push: [{
            token: "meta.definition.class.inherited.classes.vala",
            regex: "(?={|,)",
            next: "pop"
          }, {
            include: "#object-types-inherited"
          }, {
            include: "#comments"
          }, {
            defaultToken: "meta.definition.class.inherited.classes.vala"
          }]
        }, {
          token: ["storage.modifier.implements.vala", "meta.definition.class.implemented.interfaces.vala"],
          regex: "(,)(\\s)",
          push: [{
            token: "meta.definition.class.implemented.interfaces.vala",
            regex: "(?=\\{)",
            next: "pop"
          }, {
            include: "#object-types-inherited"
          }, {
            include: "#comments"
          }, {
            defaultToken: "meta.definition.class.implemented.interfaces.vala"
          }]
        }, {
          token: "paren.vala",
          regex: "{",
          push: [{
            token: "paren.vala",
            regex: "(?=})",
            next: "pop"
          }, {
            include: "#class-body"
          }, {
            defaultToken: "meta.class.body.vala"
          }]
        }, {
          defaultToken: "meta.class.vala"
        }],
        comment: "attempting to put namespace in here."
      }],
      "#class-body": [{
        include: "#comments"
      }, {
        include: "#class"
      }, {
        include: "#enums"
      }, {
        include: "#methods"
      }, {
        include: "#annotations"
      }, {
        include: "#storage-modifiers"
      }, {
        include: "#code"
      }],
      "#code": [{
        include: "#comments"
      }, {
        include: "#class"
      }, {
        token: "text",
        regex: "{",
        push: [{
          token: "text",
          regex: "}",
          next: "pop"
        }, {
          include: "#code"
        }]
      }, {
        include: "#assertions"
      }, {
        include: "#parens"
      }, {
        include: "#constants-and-special-vars"
      }, {
        include: "#anonymous-classes-and-new"
      }, {
        include: "#keywords"
      }, {
        include: "#storage-modifiers"
      }, {
        include: "#strings"
      }, {
        include: "#all-types"
      }],
      "#comments": [{
        token: "punctuation.definition.comment.vala",
        regex: "/\\*\\*/"
      }, {
        include: "text.html.javadoc"
      }, {
        include: "#comments-inline"
      }],
      "#comments-inline": [{
        token: "punctuation.definition.comment.vala",
        regex: "/\\*",
        push: [{
          token: "punctuation.definition.comment.vala",
          regex: "\\*/",
          next: "pop"
        }, {
          defaultToken: "comment.block.vala"
        }]
      }, {
        token: ["text", "punctuation.definition.comment.vala", "comment.line.double-slash.vala"],
        regex: "(\\s*)(//)(.*$)"
      }],
      "#constants-and-special-vars": [{
        token: "constant.language.vala",
        regex: "\\b(?:true|false|null)\\b"
      }, {
        token: "variable.language.vala",
        regex: "\\b(?:this|base)\\b"
      }, {
        token: "constant.numeric.vala",
        regex: "\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\\b"
      }, {
        token: ["keyword.operator.dereference.vala", "constant.other.vala"],
        regex: "((?:\\.)?)\\b([A-Z][A-Z0-9_]+)(?!<|\\.class|\\s*\\w+\\s*=)\\b"
      }],
      "#enums": [{
        token: "text",
        regex: "^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))",
        push: [{
          token: "text",
          regex: "(?=;|})",
          next: "pop"
        }, {
          token: "constant.other.enum.vala",
          regex: "\\w+",
          push: [{
            token: "meta.enum.vala",
            regex: "(?=,|;|})",
            next: "pop"
          }, {
            include: "#parens"
          }, {
            token: "text",
            regex: "{",
            push: [{
              token: "text",
              regex: "}",
              next: "pop"
            }, {
              include: "#class-body"
            }]
          }, {
            defaultToken: "meta.enum.vala"
          }]
        }]
      }],
      "#keywords": [{
        token: "keyword.control.catch-exception.vala",
        regex: "\\b(?:try|catch|finally|throw)\\b"
      }, {
        token: "keyword.control.vala",
        regex: "\\?|:|\\?\\?"
      }, {
        token: "keyword.control.vala",
        regex: "\\b(?:return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\b"
      }, {
        token: "keyword.operator.vala",
        regex: "\\b(?:typeof|is|as)\\b"
      }, {
        token: "keyword.operator.comparison.vala",
        regex: "==|!=|<=|>=|<>|<|>"
      }, {
        token: "keyword.operator.assignment.vala",
        regex: "="
      }, {
        token: "keyword.operator.increment-decrement.vala",
        regex: "\\-\\-|\\+\\+"
      }, {
        token: "keyword.operator.arithmetic.vala",
        regex: "\\-|\\+|\\*|\\/|%"
      }, {
        token: "keyword.operator.logical.vala",
        regex: "!|&&|\\|\\|"
      }, {
        token: "keyword.operator.dereference.vala",
        regex: "\\.(?=\\S)",
        originalRegex: "(?<=\\S)\\.(?=\\S)"
      }, {
        token: "punctuation.terminator.vala",
        regex: ";"
      }, {
        token: "keyword.operator.ownership",
        regex: "owned|unowned"
      }],
      "#methods": [{
        token: "meta.method.vala",
        regex: "(?!new)(?=\\w.*\\s+)(?=[^=]+\\()",
        push: [{
          token: "paren.vala",
          regex: "}|(?=;)",
          next: "pop"
        }, {
          include: "#storage-modifiers"
        }, {
          token: ["entity.name.function.vala", "meta.method.identifier.vala"],
          regex: "([\\~\\w\\.]+)(\\s*\\()",
          push: [{
            token: "meta.method.identifier.vala",
            regex: "\\)",
            next: "pop"
          }, {
            include: "#parameters"
          }, {
            defaultToken: "meta.method.identifier.vala"
          }]
        }, {
          token: "meta.method.return-type.vala",
          regex: "(?=\\w.*\\s+\\w+\\s*\\()",
          push: [{
            token: "meta.method.return-type.vala",
            regex: "(?=\\w+\\s*\\()",
            next: "pop"
          }, {
            include: "#all-types"
          }, {
            defaultToken: "meta.method.return-type.vala"
          }]
        }, {
          include: "#throws"
        }, {
          token: "paren.vala",
          regex: "{",
          push: [{
            token: "paren.vala",
            regex: "(?=})",
            next: "pop"
          }, {
            include: "#code"
          }, {
            defaultToken: "meta.method.body.vala"
          }]
        }, {
          defaultToken: "meta.method.vala"
        }]
      }],
      "#namespace": [{
        token: "text",
        regex: "^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))",
        push: [{
          token: "text",
          regex: "(?=;|})",
          next: "pop"
        }, {
          token: "constant.other.namespace.vala",
          regex: "\\w+",
          push: [{
            token: "meta.namespace.vala",
            regex: "(?=,|;|})",
            next: "pop"
          }, {
            include: "#parens"
          }, {
            token: "text",
            regex: "{",
            push: [{
              token: "text",
              regex: "}",
              next: "pop"
            }, {
              include: "#code"
            }]
          }, {
            defaultToken: "meta.namespace.vala"
          }]
        }],
        comment: "This is not quite right. See the class grammar right now"
      }],
      "#object-types": [{
        token: "storage.type.generic.vala",
        regex: "\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<",
        push: [{
          token: "storage.type.generic.vala",
          regex: ">|[^\\w\\s,\\?<\\[()\\]]",
          TODO: "FIXME: regexp doesn't have js equivalent",
          originalRegex: ">|[^\\w\\s,\\?<\\[(?:[,]+)\\]]",
          next: "pop"
        }, {
          include: "#object-types"
        }, {
          token: "storage.type.generic.vala",
          regex: "<",
          push: [{
            token: "storage.type.generic.vala",
            regex: ">|[^\\w\\s,\\[\\]<]",
            next: "pop"
          }, {
            defaultToken: "storage.type.generic.vala"
          }],
          comment: "This is just to support <>'s with no actual type prefix"
        }, {
          defaultToken: "storage.type.generic.vala"
        }]
      }, {
        token: "storage.type.object.array.vala",
        regex: "\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*(?=\\[)",
        push: [{
          token: "storage.type.object.array.vala",
          regex: "(?=[^\\]\\s])",
          next: "pop"
        }, {
          token: "text",
          regex: "\\[",
          push: [{
            token: "text",
            regex: "\\]",
            next: "pop"
          }, {
            include: "#code"
          }]
        }, {
          defaultToken: "storage.type.object.array.vala"
        }]
      }, {
        token: ["storage.type.vala", "keyword.operator.dereference.vala", "storage.type.vala"],
        regex: "\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*\\b)"
      }],
      "#object-types-inherited": [{
        token: "entity.other.inherited-class.vala",
        regex: "\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<",
        push: [{
          token: "entity.other.inherited-class.vala",
          regex: ">|[^\\w\\s,<]",
          next: "pop"
        }, {
          include: "#object-types"
        }, {
          token: "storage.type.generic.vala",
          regex: "<",
          push: [{
            token: "storage.type.generic.vala",
            regex: ">|[^\\w\\s,<]",
            next: "pop"
          }, {
            defaultToken: "storage.type.generic.vala"
          }],
          comment: "This is just to support <>'s with no actual type prefix"
        }, {
          defaultToken: "entity.other.inherited-class.vala"
        }]
      }, {
        token: ["entity.other.inherited-class.vala", "keyword.operator.dereference.vala", "entity.other.inherited-class.vala"],
        regex: "\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*)"
      }],
      "#parameters": [{
        token: "storage.modifier.vala",
        regex: "final"
      }, {
        include: "#primitive-arrays"
      }, {
        include: "#primitive-types"
      }, {
        include: "#object-types"
      }, {
        token: "variable.parameter.vala",
        regex: "\\w+"
      }],
      "#parens": [{
        token: "text",
        regex: "\\(",
        push: [{
          token: "text",
          regex: "\\)",
          next: "pop"
        }, {
          include: "#code"
        }]
      }],
      "#primitive-arrays": [{
        token: "storage.type.primitive.array.vala",
        regex: "\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(?:\\[\\])*\\b"
      }],
      "#primitive-types": [{
        token: "storage.type.primitive.vala",
        regex: "\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\b",
        comment: "var is not really a primitive, but acts like one in most cases"
      }],
      "#storage-modifiers": [{
        token: "storage.modifier.vala",
        regex: "\\b(?:public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\b",
        comment: "Not sure about unsafe and readonly"
      }],
      "#strings": [{
        token: "punctuation.definition.string.begin.vala",
        regex: '@"',
        push: [{
          token: "punctuation.definition.string.end.vala",
          regex: '"',
          next: "pop"
        }, {
          token: "constant.character.escape.vala",
          regex: "\\\\.|%[\\w\\.\\-]+|\\$(?:\\w+|\\([\\w\\s\\+\\-\\*\\/]+\\))"
        }, {
          defaultToken: "string.quoted.interpolated.vala"
        }]
      }, {
        token: "punctuation.definition.string.begin.vala",
        regex: '"',
        push: [{
          token: "punctuation.definition.string.end.vala",
          regex: '"',
          next: "pop"
        }, {
          token: "constant.character.escape.vala",
          regex: "\\\\."
        }, {
          token: "constant.character.escape.vala",
          regex: "%[\\w\\.\\-]+"
        }, {
          defaultToken: "string.quoted.double.vala"
        }]
      }, {
        token: "punctuation.definition.string.begin.vala",
        regex: "'",
        push: [{
          token: "punctuation.definition.string.end.vala",
          regex: "'",
          next: "pop"
        }, {
          token: "constant.character.escape.vala",
          regex: "\\\\."
        }, {
          defaultToken: "string.quoted.single.vala"
        }]
      }, {
        token: "punctuation.definition.string.begin.vala",
        regex: '"""',
        push: [{
          token: "punctuation.definition.string.end.vala",
          regex: '"""',
          next: "pop"
        }, {
          token: "constant.character.escape.vala",
          regex: "%[\\w\\.\\-]+"
        }, {
          defaultToken: "string.quoted.triple.vala"
        }]
      }],
      "#throws": [{
        token: "storage.modifier.vala",
        regex: "throws",
        push: [{
          token: "meta.throwables.vala",
          regex: "(?={|;)",
          next: "pop"
        }, {
          include: "#object-types"
        }, {
          defaultToken: "meta.throwables.vala"
        }]
      }],
      "#values": [{
        include: "#strings"
      }, {
        include: "#object-types"
      }, {
        include: "#constants-and-special-vars"
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    comment: "Based heavily on the Java bundle's language syntax. TODO:\n* Closures\n* Delegates\n* Properties: Better support for properties.\n* Annotations\n* Error domains\n* Named arguments\n* Array slicing, negative indexes, multidimensional\n* construct blocks\n* lock blocks?\n* regex literals\n* DocBlock syntax highlighting. (Currently importing javadoc)\n* Folding rule for comments.\n",
    fileTypes: ["vala"],
    foldingStartMarker: "(\\{\\s*(//.*)?$|^\\s*// \\{\\{\\{)",
    foldingStopMarker: "^\\s*(\\}|// \\}\\}\\}$)",
    name: "Vala",
    scopeName: "source.vala"
  }, r.inherits(s, i), t.ValaHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/vala", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/tokenizer", "ace/mode/vala_highlight_rules", "ace/mode/folding/cstyle", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle", "ace/mode/matching_brace_outdent"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("../tokenizer").Tokenizer,
      o = e("./vala_highlight_rules").ValaHighlightRules,
      u = e("./folding/cstyle").FoldMode,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = e("./matching_brace_outdent").MatchingBraceOutdent,
      c = function c() {
    this.HighlightRules = o, this.$outdent = new l(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(c, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/vala", this.snippetFileId = "ace/snippets/vala";
  }.call(c.prototype), t.Mode = c;
});

(function () {
  ace.require(["ace/mode/vala"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-vbscript.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-vbscript.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/vbscript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = this.createKeywordMapper({
      "keyword.control.asp": "If|Then|Else|ElseIf|End|While|Wend|For|To|Each|Case|Select|Return|Continue|Do|Until|Loop|Next|With|Exit|Function|Property|Type|Enum|Sub|IIf|Class",
      "storage.type.asp": "Dim|Call|Const|Redim|Set|Let|Get|New|Randomize|Option|Explicit|Preserve|Erase|Execute|ExecuteGlobal",
      "storage.modifier.asp": "Private|Public|Default",
      "keyword.operator.asp": "Mod|And|Not|Or|Xor|As|Eqv|Imp|Is",
      "constant.language.asp": "Empty|False|Nothing|Null|True",
      "variable.language.vb.asp": "Me",
      "support.class.vb.asp": "RegExp",
      "support.class.asp": "Application|ObjectContext|Request|Response|Server|Session",
      "support.class.collection.asp": "Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables",
      "support.constant.asp": "TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout",
      "support.function.asp": "Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex",
      "support.function.event.asp": "Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart",
      "support.function.vb.asp": "Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year|AscB|AscW|ChrB|ChrW|InStrB|LeftB|LenB|MidB|RightB|Abs|GetUILanguage",
      "support.type.vb.asp": "vbTrue|vbFalse|vbCr|vbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString|vbTab|vbVerticalTab|vbBinaryCompare|vbTextCompare|vbSunday|vbMonday|vbTuesday|vbWednesday|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek|vbFirstJan1|vbFirstFourDays|vbFirstFullWeek|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime|vbObjectError|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray|vbOKOnly|vbOKCancel|vbAbortRetryIgnore|vbYesNoCancel|vbYesNo|vbRetryCancel|vbCritical|vbQuestion|vbExclamation|vbInformation|vbDefaultButton1|vbDefaultButton2|vbDefaultButton3|vbDefaultButton4|vbApplicationModal|vbSystemModal|vbOK|vbCancel|vbAbort|vbRetry|vbIgnore|vbYes|vbNo|vbUseDefault"
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: ["meta.ending-space"],
        regex: "$"
      }, {
        token: [null],
        regex: "^(?=\\t)",
        next: "state_3"
      }, {
        token: [null],
        regex: "^(?= )",
        next: "state_4"
      }, {
        token: ["text", "storage.type.function.asp", "text", "entity.name.function.asp", "text", "punctuation.definition.parameters.asp", "variable.parameter.function.asp", "punctuation.definition.parameters.asp"],
        regex: "^(\\s*)(Function|Sub)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()([^)]*)(\\))"
      }, {
        token: "punctuation.definition.comment.asp",
        regex: "'|REM(?=\\s|$)",
        next: "comment",
        caseInsensitive: !0
      }, {
        token: "storage.type.asp",
        regex: "On\\s+Error\\s+(?:Resume\\s+Next|GoTo)\\b",
        caseInsensitive: !0
      }, {
        token: "punctuation.definition.string.begin.asp",
        regex: '"',
        next: "string"
      }, {
        token: ["punctuation.definition.variable.asp"],
        regex: "(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*"
      }, {
        token: "constant.numeric.asp",
        regex: "-?\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\.?[0-9]*)|(?:\\.[0-9]+))(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"
      }, {
        regex: "\\w+",
        token: e
      }, {
        token: ["entity.name.function.asp"],
        regex: "(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))"
      }, {
        token: ["keyword.operator.asp"],
        regex: "\\-|\\+|\\*|\\/|\\>|\\<|\\=|\\&|\\\\|\\^"
      }],
      state_3: [{
        token: ["meta.odd-tab.tabs", "meta.even-tab.tabs"],
        regex: "(\\t)(\\t)?"
      }, {
        token: "meta.leading-space",
        regex: "(?=[^\\t])",
        next: "start"
      }, {
        token: "meta.leading-space",
        regex: ".",
        next: "state_3"
      }],
      state_4: [{
        token: ["meta.odd-tab.spaces", "meta.even-tab.spaces"],
        regex: "(  )(  )?"
      }, {
        token: "meta.leading-space",
        regex: "(?=[^ ])",
        next: "start"
      }, {
        defaultToken: "meta.leading-space"
      }],
      comment: [{
        token: "comment.line.apostrophe.asp",
        regex: "$",
        next: "start"
      }, {
        defaultToken: "comment.line.apostrophe.asp"
      }],
      string: [{
        token: "constant.character.escape.apostrophe.asp",
        regex: '""'
      }, {
        token: "string.quoted.double.asp",
        regex: '"',
        next: "start"
      }, {
        defaultToken: "string.quoted.double.asp"
      }]
    };
  };

  r.inherits(s, i), t.VBScriptHighlightRules = s;
}), ace.define("ace/mode/folding/vbscript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = e("../../token_iterator").TokenIterator,
      u = t.FoldMode = function () {};

  r.inherits(u, i), function () {
    this.indentKeywords = {
      "class": 1,
      "function": 1,
      sub: 1,
      "if": 1,
      select: 1,
      "do": 1,
      "for": 1,
      "while": 1,
      "with": 1,
      property: 1,
      "else": 1,
      elseif: 1,
      end: -1,
      loop: -1,
      next: -1,
      wend: -1
    }, this.foldingStartMarker = /(?:\s|^)(class|function|sub|if|select|do|for|while|with|property|else|elseif)\b/i, this.foldingStopMarker = /\b(end|loop|next|wend)\b/i, this.getFoldWidgetRange = function (e, t, n) {
      var r = e.getLine(n),
          i = this.foldingStartMarker.test(r),
          s = this.foldingStopMarker.test(r);

      if (i || s) {
        var o = s ? this.foldingStopMarker.exec(r) : this.foldingStartMarker.exec(r),
            u = o && o[1].toLowerCase();

        if (u) {
          var a = e.getTokenAt(n, o.index + 2).type;
          if (a === "keyword.control.asp" || a === "storage.type.function.asp") return this.vbsBlock(e, n, o.index + 2);
        }
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = this.foldingStartMarker.test(r),
          s = this.foldingStopMarker.test(r);

      if (i && !s) {
        var o = this.foldingStartMarker.exec(r),
            u = o && o[1].toLowerCase();

        if (u) {
          var a = e.getTokenAt(n, o.index + 2).type;
          if (a == "keyword.control.asp" || a == "storage.type.function.asp") return u == "if" && !/then\s*('|$)/i.test(r) ? "" : "start";
        }
      }

      return "";
    }, this.vbsBlock = function (e, t, n, r) {
      var i = new o(e, t, n),
          u = {
        "class": 1,
        "function": 1,
        sub: 1,
        "if": 1,
        select: 1,
        "with": 1,
        property: 1,
        "else": 1,
        elseif: 1
      },
          a = i.getCurrentToken();
      if (!a || a.type != "keyword.control.asp" && a.type != "storage.type.function.asp") return;
      var f = a.value.toLowerCase(),
          l = a.value.toLowerCase(),
          c = [l],
          h = this.indentKeywords[l];
      if (!h) return;
      var p = i.getCurrentTokenRange();

      switch (l) {
        case "property":
        case "sub":
        case "function":
        case "if":
        case "select":
        case "do":
        case "for":
        case "class":
        case "while":
        case "with":
          var d = e.getLine(t),
              v = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(d);
          if (v) return;
          var m = new RegExp("(?:^|\\s)" + l, "i"),
              g = /^\s*End\s(If|Sub|Select|Function|Class|With|Property)\s*/i.test(d);
          if (!m.test(d) && !g) return;

          if (g) {
            var r = i.getCurrentTokenRange();
            i.step = i.stepBackward, i.step(), i.step(), a = i.getCurrentToken(), a && (l = a.value.toLowerCase(), l == "end" && (p = i.getCurrentTokenRange(), p = new s(p.start.row, p.start.column, r.start.row, r.end.column))), h = -1;
          }

          break;

        case "end":
          var y = i.getCurrentTokenPosition();
          p = i.getCurrentTokenRange(), i.step = i.stepForward, i.step(), i.step(), a = i.getCurrentToken();

          if (a) {
            l = a.value.toLowerCase();

            if (l in u) {
              f = l;
              var b = i.getCurrentTokenPosition(),
                  w = b.column + l.length;
              p = new s(y.row, y.column, b.row, w);
            }
          }

          i.step = i.stepBackward, i.step(), i.step();
      }

      var E = h === -1 ? e.getLine(t - 1).length : e.getLine(t).length,
          S = t,
          x = [];
      x.push(p), i.step = h === -1 ? i.stepBackward : i.stepForward;

      while (a = i.step()) {
        var T = null,
            N = !1;
        if (a.type != "keyword.control.asp" && a.type != "storage.type.function.asp") continue;
        l = a.value.toLowerCase();
        var C = h * this.indentKeywords[l];

        switch (l) {
          case "property":
          case "sub":
          case "function":
          case "if":
          case "select":
          case "do":
          case "for":
          case "class":
          case "while":
          case "with":
            var d = e.getLine(i.getCurrentTokenRow()),
                v = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(d);
            v && (C = 0, N = !0);
            var m = new RegExp("^\\s* end\\s+" + l, "i");
            m.test(d) && (C = 0, N = !0);
            break;

          case "elseif":
          case "else":
            C = 0, f != "elseif" && (N = !0);
        }

        if (C > 0) c.unshift(l);else if (C <= 0 && N === !1) {
          c.shift();

          if (!c.length) {
            switch (l) {
              case "end":
                var y = i.getCurrentTokenPosition();
                T = i.getCurrentTokenRange(), i.step(), i.step(), a = i.getCurrentToken();

                if (a) {
                  l = a.value.toLowerCase();

                  if (l in u) {
                    f == "else" || f == "elseif" ? l !== "if" && x.shift() : l != f && x.shift();
                    var b = i.getCurrentTokenPosition(),
                        w = b.column + l.length;
                    T = new s(y.row, y.column, b.row, w);
                  } else x.shift();
                } else x.shift();

                i.step = i.stepBackward, i.step(), i.step(), a = i.getCurrentToken(), l = a.value.toLowerCase();
                break;

              case "select":
              case "sub":
              case "if":
              case "function":
              case "class":
              case "with":
              case "property":
                l != f && x.shift();
                break;

              case "do":
                f != "loop" && x.shift();
                break;

              case "loop":
                f != "do" && x.shift();
                break;

              case "for":
                f != "next" && x.shift();
                break;

              case "next":
                f != "for" && x.shift();
                break;

              case "while":
                f != "wend" && x.shift();
                break;

              case "wend":
                f != "while" && x.shift();
            }

            break;
          }

          C === 0 && c.unshift(l);
        }
      }

      if (!a) return null;
      if (r) return T ? x.push(T) : x.push(i.getCurrentTokenRange()), x;
      var t = i.getCurrentTokenRow();

      if (h === -1) {
        var w = e.getLine(t).length;
        return new s(t, w, S - 1, E);
      }

      return new s(S, E, t - 1, e.getLine(t - 1).length);
    };
  }.call(u.prototype);
}), ace.define("ace/mode/vbscript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/vbscript_highlight_rules", "ace/mode/folding/vbscript", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./vbscript_highlight_rules").VBScriptHighlightRules,
      o = e("./folding/vbscript").FoldMode,
      u = e("../range").Range,
      a = function a() {
    this.HighlightRules = s, this.foldingRules = new o(), this.$behaviour = this.$defaultBehaviour, this.indentKeywords = this.foldingRules.indentKeywords;
  };

  r.inherits(a, i), function () {
    function t(e, t, n) {
      var r = 0;

      for (var i = 0; i < e.length; i++) {
        var s = e[i];

        if (s.type == "keyword.control.asp" || s.type == "storage.type.function.asp") {
          var o = s.value.toLowerCase();
          if (o in n) switch (o) {
            case "property":
            case "sub":
            case "function":
            case "select":
            case "do":
            case "for":
            case "class":
            case "while":
            case "with":
            case "if":
              var u = new RegExp("^\\s* end\\s+" + o, "i"),
                  a = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(t);
              !a && !u.test(t) && (r += n[o]);
              break;

            default:
              r += n[o];
          }
        }
      }

      return r < 0 ? -1 : r > 0 ? 1 : 0;
    }

    this.lineCommentStart = ["'", "REM"];
    var e = ["else", "elseif", "end", "loop", "next", "wend"];
    this.getNextLineIndent = function (e, n, r) {
      var i = this.$getIndent(n),
          s = 0,
          o = this.getTokenizer().getLineTokens(n, e),
          u = o.tokens;
      return e == "start" && (s = t(u, n, this.indentKeywords)), s > 0 ? i + r : s < 0 && i.substr(i.length - r.length) == r && !this.checkOutdent(e, n, "\n") ? i.substr(0, i.length - r.length) : i;
    }, this.checkOutdent = function (t, n, r) {
      if (r != "\n" && r != "\r" && r != "\r\n") return !1;
      var i = this.getTokenizer().getLineTokens(n.trim(), t).tokens;
      if (!i || !i.length) return !1;
      var s = i[0].value.toLowerCase();
      return (i[0].type == "keyword.control.asp" || i[0].type == "storage.type.function.asp") && e.indexOf(s) != -1;
    }, this.getMatching = function (e, t, n, r) {
      if (t == undefined) {
        var i = e.selection.lead;
        n = i.column, t = i.row;
      }

      r == undefined && (r = !0);
      var s = e.getTokenAt(t, n);

      if (s) {
        var o = s.value.toLowerCase();
        if (o in this.indentKeywords) return this.foldingRules.vbsBlock(e, t, n, r);
      }
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n),
          i = r.match(/^\s*/)[0].length;
      if (!i || !n) return;
      var s = this.getMatching(t, n, i + 1, !1);
      if (!s || s.start.row == n) return;
      var o = this.$getIndent(t.getLine(s.start.row));
      o.length != i && (t.replace(new u(n, 0, n, i), o), t.outdentRows(new u(n + 1, 0, n + 1, 0)));
    }, this.$id = "ace/mode/vbscript";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/vbscript"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-velocity.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-velocity.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/velocity_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = e("./html_highlight_rules").HtmlHighlightRules,
      u = function u() {
    o.call(this);
    var e = i.arrayToMap("true|false|null".split("|")),
        t = i.arrayToMap("_DateTool|_DisplayTool|_EscapeTool|_FieldTool|_MathTool|_NumberTool|_SerializerTool|_SortTool|_StringTool|_XPathTool".split("|")),
        n = i.arrayToMap("$contentRoot|$foreach".split("|")),
        r = i.arrayToMap("#set|#macro|#include|#parse|#if|#elseif|#else|#foreach|#break|#end|#stop".split("|"));
    this.$rules.start.push({
      token: "comment",
      regex: "##.*$"
    }, {
      token: "comment.block",
      regex: "#\\*",
      next: "vm_comment"
    }, {
      token: "string.regexp",
      regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
    }, {
      token: "string",
      regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
    }, {
      token: "string",
      regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
    }, {
      token: "constant.numeric",
      regex: "0[xX][0-9a-fA-F]+\\b"
    }, {
      token: "constant.numeric",
      regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
    }, {
      token: "constant.language.boolean",
      regex: "(?:true|false)\\b"
    }, {
      token: function token(i) {
        return r.hasOwnProperty(i) ? "keyword" : e.hasOwnProperty(i) ? "constant.language" : n.hasOwnProperty(i) ? "variable.language" : t.hasOwnProperty(i) || t.hasOwnProperty(i.substring(1)) ? "support.function" : i == "debugger" ? "invalid.deprecated" : i.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*)$/) ? "variable" : "identifier";
      },
      regex: "[a-zA-Z$#][a-zA-Z0-9_]*\\b"
    }, {
      token: "keyword.operator",
      regex: "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|"
    }, {
      token: "lparen",
      regex: "[[({]"
    }, {
      token: "rparen",
      regex: "[\\])}]"
    }, {
      token: "text",
      regex: "\\s+"
    }), this.$rules.vm_comment = [{
      token: "comment",
      regex: "\\*#|-->",
      next: "start"
    }, {
      defaultToken: "comment"
    }], this.$rules.vm_start = [{
      token: "variable",
      regex: "}",
      next: "pop"
    }, {
      token: "string.regexp",
      regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
    }, {
      token: "string",
      regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
    }, {
      token: "string",
      regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
    }, {
      token: "constant.numeric",
      regex: "0[xX][0-9a-fA-F]+\\b"
    }, {
      token: "constant.numeric",
      regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
    }, {
      token: "constant.language.boolean",
      regex: "(?:true|false)\\b"
    }, {
      token: function token(i) {
        return r.hasOwnProperty(i) ? "keyword" : e.hasOwnProperty(i) ? "constant.language" : n.hasOwnProperty(i) ? "variable.language" : t.hasOwnProperty(i) || t.hasOwnProperty(i.substring(1)) ? "support.function" : i == "debugger" ? "invalid.deprecated" : i.match(/^(\$[a-zA-Z_$][a-zA-Z0-9_]*)$/) ? "variable" : "identifier";
      },
      regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
    }, {
      token: "keyword.operator",
      regex: "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|"
    }, {
      token: "lparen",
      regex: "[[({]"
    }, {
      token: "rparen",
      regex: "[\\])}]"
    }, {
      token: "text",
      regex: "\\s+"
    }];

    for (var s in this.$rules) {
      this.$rules[s].unshift({
        token: "variable",
        regex: "\\${",
        push: "vm_start"
      });
    }

    this.normalizeRules();
  };

  r.inherits(u, s), t.VelocityHighlightRules = u;
}), ace.define("ace/mode/folding/velocity", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "##") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "##") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "##" && s[i] == "##") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "##" && o[i] == "##" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/velocity", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/velocity_highlight_rules", "ace/mode/folding/velocity"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./velocity_highlight_rules").VelocityHighlightRules,
      o = e("./folding/velocity").FoldMode,
      u = function u() {
    i.call(this), this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "##", this.blockComment = {
      start: "#*",
      end: "*#"
    }, this.$id = "ace/mode/velocity", this.snippetFileId = "ace/snippets/velocity";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/velocity"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-verilog.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-verilog.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/verilog_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|generate|genvar|highz0|highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|strong0|strong1|supply0|supply1|table|task|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xorbegin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|macromodule|module|primitive|repeat|specify|table|task|while",
        t = "true|false|null",
        n = "count|min|max|avg|sum|rank|now|coalesce|main",
        r = this.createKeywordMapper({
      "support.function": n,
      keyword: e,
      "constant.language": t
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: "//.*$"
      }, {
        token: "comment.start",
        regex: "/\\*",
        next: [{
          token: "comment.end",
          regex: "\\*/",
          next: "start"
        }, {
          defaultToken: "comment"
        }]
      }, {
        token: "string.start",
        regex: '"',
        next: [{
          token: "constant.language.escape",
          regex: /\\(?:[ntvfa\\"]|[0-7]{1,3}|\x[a-fA-F\d]{1,2}|)/,
          consumeLineEnd: !0
        }, {
          token: "string.end",
          regex: '"|$',
          next: "start"
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string",
        regex: "'^[']'"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="
      }, {
        token: "paren.lparen",
        regex: "[\\(]"
      }, {
        token: "paren.rparen",
        regex: "[\\)]"
      }, {
        token: "text",
        regex: "\\s+"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.VerilogHighlightRules = s;
}), ace.define("ace/mode/verilog", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/verilog_highlight_rules", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./verilog_highlight_rules").VerilogHighlightRules,
      o = e("../range").Range,
      u = function u() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"'
    }, this.$id = "ace/mode/verilog";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/verilog"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-vhdl.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-vhdl.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/vhdl_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    var e = "access|after|ailas|all|architecture|assert|attribute|begin|block|buffer|bus|case|component|configuration|disconnect|downto|else|elsif|end|entity|file|for|function|generate|generic|guarded|if|impure|in|inertial|inout|is|label|linkage|literal|loop|mapnew|next|of|on|open|others|out|port|process|pure|range|record|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|united|until|wait|when|while|with",
        t = "bit|bit_vector|boolean|character|integer|line|natural|positive|real|register|signed|std_logic|std_logic_vector|string||text|time|unsigned|variable",
        n = "array|constant",
        r = "abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|srasrl|xnor|xor",
        i = "true|false|null",
        s = this.createKeywordMapper({
      "keyword.operator": r,
      keyword: e,
      "constant.language": i,
      "storage.modifier": n,
      "storage.type": t
    }, "identifier", !0);
    this.$rules = {
      start: [{
        token: "comment",
        regex: "--.*$"
      }, {
        token: "string",
        regex: '".*?"'
      }, {
        token: "string",
        regex: "'.*?'"
      }, {
        token: "constant.numeric",
        regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
      }, {
        token: "keyword",
        regex: "\\s*(?:library|package|use)\\b"
      }, {
        token: s,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>"
      }, {
        token: "punctuation.operator",
        regex: "\\'|\\:|\\,|\\;|\\."
      }, {
        token: "paren.lparen",
        regex: "[[(]"
      }, {
        token: "paren.rparen",
        regex: "[\\])]"
      }, {
        token: "text",
        regex: "\\s+"
      }]
    };
  };

  r.inherits(s, i), t.VHDLHighlightRules = s;
}), ace.define("ace/mode/vhdl", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/vhdl_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./vhdl_highlight_rules").VHDLHighlightRules,
      o = function o() {
    this.HighlightRules = s, this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(o, i), function () {
    this.lineCommentStart = "--", this.$id = "ace/mode/vhdl";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/vhdl"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-visualforce.js":
/*!************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-visualforce.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/css_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text_highlight_rules").TextHighlightRules,
      o = t.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",
      u = t.supportFunction = "rgb|rgba|url|attr|counter|counters",
      a = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",
      f = t.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
      l = t.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",
      c = t.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",
      h = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",
      p = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",
      d = function d() {
    var e = this.createKeywordMapper({
      "support.function": u,
      "support.constant": a,
      "support.type": o,
      "support.constant.color": f,
      "support.constant.fonts": l
    }, "text", !0);
    this.$rules = {
      start: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "ruleset"
      }, {
        token: "paren.rparen",
        regex: "\\}"
      }, {
        token: "string",
        regex: "@(?!viewport)",
        next: "media"
      }, {
        token: "keyword",
        regex: "#[a-z0-9-_]+"
      }, {
        token: "keyword",
        regex: "%"
      }, {
        token: "variable",
        regex: "\\.[a-z0-9-_]+"
      }, {
        token: "string",
        regex: ":[a-z0-9-_]+"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant",
        regex: "[a-z0-9-_]+"
      }, {
        caseInsensitive: !0
      }],
      media: [{
        include: ["strings", "url", "comments"]
      }, {
        token: "paren.lparen",
        regex: "\\{",
        next: "start"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        token: "string",
        regex: ";",
        next: "start"
      }, {
        token: "keyword",
        regex: "(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"
      }],
      comments: [{
        token: "comment",
        regex: "\\/\\*",
        push: [{
          token: "comment",
          regex: "\\*\\/",
          next: "pop"
        }, {
          defaultToken: "comment"
        }]
      }],
      ruleset: [{
        regex: "-(webkit|ms|moz|o)-",
        token: "text"
      }, {
        token: "punctuation.operator",
        regex: "[:;]"
      }, {
        token: "paren.rparen",
        regex: "\\}",
        next: "start"
      }, {
        include: ["strings", "url", "comments"]
      }, {
        token: ["constant.numeric", "keyword"],
        regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
      }, {
        token: "constant.numeric",
        regex: c
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{6}"
      }, {
        token: "constant.numeric",
        regex: "#[a-f0-9]{3}"
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
        regex: h
      }, {
        token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
        regex: p
      }, {
        include: "url"
      }, {
        token: e,
        regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
      }, {
        caseInsensitive: !0
      }],
      url: [{
        token: "support.function",
        regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
        push: [{
          token: "support.function",
          regex: "\\)",
          next: "pop"
        }, {
          defaultToken: "string"
        }]
      }],
      strings: [{
        token: "string.start",
        regex: "'",
        push: [{
          token: "string.end",
          regex: "'|$",
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }, {
        token: "string.start",
        regex: '"',
        push: [{
          token: "string.end",
          regex: '"|$',
          next: "pop"
        }, {
          include: "escapes"
        }, {
          token: "constant.language.escape",
          regex: /\\$/,
          consumeLineEnd: !0
        }, {
          defaultToken: "string"
        }]
      }],
      escapes: [{
        token: "constant.language.escape",
        regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
      }]
    }, this.normalizeRules();
  };

  r.inherits(d, s), t.CssHighlightRules = d;
}), ace.define("ace/mode/css_completions", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  var r = {
    background: {
      "#$0": 1
    },
    "background-color": {
      "#$0": 1,
      transparent: 1,
      fixed: 1
    },
    "background-image": {
      "url('/$0')": 1
    },
    "background-repeat": {
      repeat: 1,
      "repeat-x": 1,
      "repeat-y": 1,
      "no-repeat": 1,
      inherit: 1
    },
    "background-position": {
      bottom: 2,
      center: 2,
      left: 2,
      right: 2,
      top: 2,
      inherit: 2
    },
    "background-attachment": {
      scroll: 1,
      fixed: 1
    },
    "background-size": {
      cover: 1,
      contain: 1
    },
    "background-clip": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    "background-origin": {
      "border-box": 1,
      "padding-box": 1,
      "content-box": 1
    },
    border: {
      "solid $0": 1,
      "dashed $0": 1,
      "dotted $0": 1,
      "#$0": 1
    },
    "border-color": {
      "#$0": 1
    },
    "border-style": {
      solid: 2,
      dashed: 2,
      dotted: 2,
      "double": 2,
      groove: 2,
      hidden: 2,
      inherit: 2,
      inset: 2,
      none: 2,
      outset: 2,
      ridged: 2
    },
    "border-collapse": {
      collapse: 1,
      separate: 1
    },
    bottom: {
      px: 1,
      em: 1,
      "%": 1
    },
    clear: {
      left: 1,
      right: 1,
      both: 1,
      none: 1
    },
    color: {
      "#$0": 1,
      "rgb(#$00,0,0)": 1
    },
    cursor: {
      "default": 1,
      pointer: 1,
      move: 1,
      text: 1,
      wait: 1,
      help: 1,
      progress: 1,
      "n-resize": 1,
      "ne-resize": 1,
      "e-resize": 1,
      "se-resize": 1,
      "s-resize": 1,
      "sw-resize": 1,
      "w-resize": 1,
      "nw-resize": 1
    },
    display: {
      none: 1,
      block: 1,
      inline: 1,
      "inline-block": 1,
      "table-cell": 1
    },
    "empty-cells": {
      show: 1,
      hide: 1
    },
    "float": {
      left: 1,
      right: 1,
      none: 1
    },
    "font-family": {
      Arial: 2,
      "Comic Sans MS": 2,
      Consolas: 2,
      "Courier New": 2,
      Courier: 2,
      Georgia: 2,
      Monospace: 2,
      "Sans-Serif": 2,
      "Segoe UI": 2,
      Tahoma: 2,
      "Times New Roman": 2,
      "Trebuchet MS": 2,
      Verdana: 1
    },
    "font-size": {
      px: 1,
      em: 1,
      "%": 1
    },
    "font-weight": {
      bold: 1,
      normal: 1
    },
    "font-style": {
      italic: 1,
      normal: 1
    },
    "font-variant": {
      normal: 1,
      "small-caps": 1
    },
    height: {
      px: 1,
      em: 1,
      "%": 1
    },
    left: {
      px: 1,
      em: 1,
      "%": 1
    },
    "letter-spacing": {
      normal: 1
    },
    "line-height": {
      normal: 1
    },
    "list-style-type": {
      none: 1,
      disc: 1,
      circle: 1,
      square: 1,
      decimal: 1,
      "decimal-leading-zero": 1,
      "lower-roman": 1,
      "upper-roman": 1,
      "lower-greek": 1,
      "lower-latin": 1,
      "upper-latin": 1,
      georgian: 1,
      "lower-alpha": 1,
      "upper-alpha": 1
    },
    margin: {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "margin-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "max-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-height": {
      px: 1,
      em: 1,
      "%": 1
    },
    "min-width": {
      px: 1,
      em: 1,
      "%": 1
    },
    overflow: {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-x": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    "overflow-y": {
      hidden: 1,
      visible: 1,
      auto: 1,
      scroll: 1
    },
    padding: {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-top": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-right": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-bottom": {
      px: 1,
      em: 1,
      "%": 1
    },
    "padding-left": {
      px: 1,
      em: 1,
      "%": 1
    },
    "page-break-after": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    "page-break-before": {
      auto: 1,
      always: 1,
      avoid: 1,
      left: 1,
      right: 1
    },
    position: {
      absolute: 1,
      relative: 1,
      fixed: 1,
      "static": 1
    },
    right: {
      px: 1,
      em: 1,
      "%": 1
    },
    "table-layout": {
      fixed: 1,
      auto: 1
    },
    "text-decoration": {
      none: 1,
      underline: 1,
      "line-through": 1,
      blink: 1
    },
    "text-align": {
      left: 1,
      right: 1,
      center: 1,
      justify: 1
    },
    "text-transform": {
      capitalize: 1,
      uppercase: 1,
      lowercase: 1,
      none: 1
    },
    top: {
      px: 1,
      em: 1,
      "%": 1
    },
    "vertical-align": {
      top: 1,
      bottom: 1
    },
    visibility: {
      hidden: 1,
      visible: 1
    },
    "white-space": {
      nowrap: 1,
      normal: 1,
      pre: 1,
      "pre-line": 1,
      "pre-wrap": 1
    },
    width: {
      px: 1,
      em: 1,
      "%": 1
    },
    "word-spacing": {
      normal: 1
    },
    filter: {
      "alpha(opacity=$0100)": 1
    },
    "text-shadow": {
      "$02px 2px 2px #777": 1
    },
    "text-overflow": {
      "ellipsis-word": 1,
      clip: 1,
      ellipsis: 1
    },
    "-moz-border-radius": 1,
    "-moz-border-radius-topright": 1,
    "-moz-border-radius-bottomright": 1,
    "-moz-border-radius-topleft": 1,
    "-moz-border-radius-bottomleft": 1,
    "-webkit-border-radius": 1,
    "-webkit-border-top-right-radius": 1,
    "-webkit-border-top-left-radius": 1,
    "-webkit-border-bottom-right-radius": 1,
    "-webkit-border-bottom-left-radius": 1,
    "-moz-box-shadow": 1,
    "-webkit-box-shadow": 1,
    transform: {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-moz-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    },
    "-webkit-transform": {
      "rotate($00deg)": 1,
      "skew($00deg)": 1
    }
  },
      i = function i() {};

  (function () {
    this.completionsDefined = !1, this.defineCompletions = function () {
      if (document) {
        var e = document.createElement("c").style;

        for (var t in e) {
          if (typeof e[t] != "string") continue;
          var n = t.replace(/[A-Z]/g, function (e) {
            return "-" + e.toLowerCase();
          });
          r.hasOwnProperty(n) || (r[n] = 1);
        }
      }

      this.completionsDefined = !0;
    }, this.getCompletions = function (e, t, n, r) {
      this.completionsDefined || this.defineCompletions();

      if (e === "ruleset" || t.$mode.$id == "ace/mode/scss") {
        var i = t.getLine(n.row).substr(0, n.column);
        return /:[^;]+$/.test(i) ? (/([\w\-]+):[^:]*$/.test(i), this.getPropertyValueCompletions(e, t, n, r)) : this.getPropertyCompletions(e, t, n, r);
      }

      return [];
    }, this.getPropertyCompletions = function (e, t, n, i) {
      var s = Object.keys(r);
      return s.map(function (e) {
        return {
          caption: e,
          snippet: e + ": $0;",
          meta: "property",
          score: 1e6
        };
      });
    }, this.getPropertyValueCompletions = function (e, t, n, i) {
      var s = t.getLine(n.row).substr(0, n.column),
          o = (/([\w\-]+):[^:]*$/.exec(s) || {})[1];
      if (!o) return [];
      var u = [];
      return o in r && _typeof(r[o]) == "object" && (u = Object.keys(r[o])), u.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "property value",
          score: 1e6
        };
      });
    };
  }).call(i.prototype), t.CssCompletions = i;
}), ace.define("ace/mode/behaviour/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../../token_iterator").TokenIterator,
      u = function u() {
    this.inherit(s), this.add("colon", "insertion", function (e, t, n, r, i) {
      if (i === ":" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            u = new o(r, s.row, s.column),
            a = u.getCurrentToken();
        a && a.value.match(/\s+/) && (a = u.stepBackward());

        if (a && a.type === "support.type") {
          var f = r.doc.getLine(s.row),
              l = f.substring(s.column, s.column + 1);
          if (l === ":") return {
            text: "",
            selection: [1, 1]
          };
          if (/^(\s+[^;]|\s*$)/.test(f.substring(s.column))) return {
            text: ":;",
            selection: [1, 1]
          };
        }
      }
    }), this.add("colon", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && s === ":") {
        var u = n.getCursorPosition(),
            a = new o(r, u.row, u.column),
            f = a.getCurrentToken();
        f && f.value.match(/\s+/) && (f = a.stepBackward());

        if (f && f.type === "support.type") {
          var l = r.doc.getLine(i.start.row),
              c = l.substring(i.end.column, i.end.column + 1);
          if (c === ";") return i.end.column++, i;
        }
      }
    }), this.add("semicolon", "insertion", function (e, t, n, r, i) {
      if (i === ";" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row),
            u = o.substring(s.column, s.column + 1);
        if (u === ";") return {
          text: "",
          selection: [1, 1]
        };
      }
    }), this.add("!important", "insertion", function (e, t, n, r, i) {
      if (i === "!" && n.selection.isEmpty()) {
        var s = n.getCursorPosition(),
            o = r.doc.getLine(s.row);
        if (/^\s*(;|}|$)/.test(o.substring(s.column))) return {
          text: "!important",
          selection: [10, 10]
        };
      }
    });
  };

  r.inherits(u, s), t.CssBehaviour = u;
}), ace.define("ace/mode/css", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/css_completions", "ace/mode/behaviour/css", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./css_completions").CssCompletions,
      f = e("./behaviour/css").CssBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = function c() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new f(), this.$completer = new a(), this.foldingRules = new l();
  };

  r.inherits(c, i), function () {
    this.foldingRules = "cStyle", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e).tokens;
      if (i.length && i[i.length - 1].type == "comment") return r;
      var s = t.match(/^.*\{\s*$/);
      return s && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/css_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/css", this.snippetFileId = "ace/snippets/css";
  }.call(c.prototype), t.Mode = c;
}), ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/html_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/xml_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./css_highlight_rules").CssHighlightRules,
      o = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      u = e("./xml_highlight_rules").XmlHighlightRules,
      a = i.createMap({
    a: "anchor",
    button: "form",
    form: "form",
    img: "image",
    input: "form",
    label: "form",
    option: "form",
    script: "script",
    select: "form",
    textarea: "form",
    style: "style",
    table: "table",
    tbody: "table",
    td: "table",
    tfoot: "table",
    th: "table",
    tr: "table"
  }),
      f = function f() {
    u.call(this), this.addRules({
      attributes: [{
        include: "tag_whitespace"
      }, {
        token: "entity.other.attribute-name.xml",
        regex: "[-_a-zA-Z0-9:.]+"
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "=",
        push: [{
          include: "tag_whitespace"
        }, {
          token: "string.unquoted.attribute-value.html",
          regex: "[^<>='\"`\\s]+",
          next: "pop"
        }, {
          token: "empty",
          regex: "",
          next: "pop"
        }]
      }, {
        include: "attribute_value"
      }],
      tag: [{
        token: function token(e, t) {
          var n = a[t];
          return ["meta.tag.punctuation." + (e == "<" ? "" : "end-") + "tag-open.xml", "meta.tag" + (n ? "." + n : "") + ".tag-name.xml"];
        },
        regex: "(</?)([-_a-zA-Z0-9:.]+)",
        next: "tag_stuff"
      }],
      tag_stuff: [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start"
      }]
    }), this.embedTagRules(s, "css-", "style"), this.embedTagRules(new o({
      jsx: !1
    }).getRules(), "js-", "script"), this.constructor === f && this.normalizeRules();
  };

  r.inherits(f, u), t.HtmlHighlightRules = f;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/mixed", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = t.FoldMode = function (e, t) {
    this.defaultMode = e, this.subModes = t;
  };

  r.inherits(s, i), function () {
    this.$getMode = function (e) {
      typeof e != "string" && (e = e[0]);

      for (var t in this.subModes) {
        if (e.indexOf(t) === 0) return this.subModes[t];
      }

      return null;
    }, this.$tryMode = function (e, t, n, r) {
      var i = this.$getMode(e);
      return i ? i.getFoldWidget(t, n, r) : "";
    }, this.getFoldWidget = function (e, t, n) {
      return this.$tryMode(e.getState(n - 1), e, t, n) || this.$tryMode(e.getState(n), e, t, n) || this.defaultMode.getFoldWidget(e, t, n);
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this.$getMode(e.getState(n - 1));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.$getMode(e.getState(n));
      if (!r || !r.getFoldWidget(e, t, n)) r = this.defaultMode;
      return r.getFoldWidgetRange(e, t, n);
    };
  }.call(s.prototype);
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/folding/html", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/mixed", "ace/mode/folding/xml", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./mixed").FoldMode,
      s = e("./xml").FoldMode,
      o = e("./cstyle").FoldMode,
      u = t.FoldMode = function (e, t) {
    i.call(this, new s(e, t), {
      "js-": new o(),
      "css-": new o()
    });
  };

  r.inherits(u, i);
}), ace.define("ace/mode/html_completions", ["require", "exports", "module", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function f(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  function l(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "tag-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  function c(e, t) {
    var n = new r(e, t.row, t.column),
        i = n.getCurrentToken();

    while (i && !f(i, "attribute-name")) {
      i = n.stepBackward();
    }

    if (i) return i.value;
  }

  var r = e("../token_iterator").TokenIterator,
      i = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "hidden", "id", "inert", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "spellcheck", "style", "tabindex", "title", "translate"],
      s = ["onabort", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting"],
      o = i.concat(s),
      u = {
    a: {
      href: 1,
      target: {
        _blank: 1,
        top: 1
      },
      ping: 1,
      rel: {
        nofollow: 1,
        alternate: 1,
        author: 1,
        bookmark: 1,
        help: 1,
        license: 1,
        next: 1,
        noreferrer: 1,
        prefetch: 1,
        prev: 1,
        search: 1,
        tag: 1
      },
      media: 1,
      hreflang: 1,
      type: 1
    },
    abbr: {},
    address: {},
    area: {
      shape: 1,
      coords: 1,
      href: 1,
      hreflang: 1,
      alt: 1,
      target: 1,
      media: 1,
      rel: 1,
      ping: 1,
      type: 1
    },
    article: {
      pubdate: 1
    },
    aside: {},
    audio: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    b: {},
    base: {
      href: 1,
      target: 1
    },
    bdi: {},
    bdo: {},
    blockquote: {
      cite: 1
    },
    body: {
      onafterprint: 1,
      onbeforeprint: 1,
      onbeforeunload: 1,
      onhashchange: 1,
      onmessage: 1,
      onoffline: 1,
      onpopstate: 1,
      onredo: 1,
      onresize: 1,
      onstorage: 1,
      onundo: 1,
      onunload: 1
    },
    br: {},
    button: {
      autofocus: 1,
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: 1,
      formmethod: 1,
      formnovalidate: 1,
      formtarget: 1,
      name: 1,
      value: 1,
      type: {
        button: 1,
        submit: 1
      }
    },
    canvas: {
      width: 1,
      height: 1
    },
    caption: {},
    cite: {},
    code: {},
    col: {
      span: 1
    },
    colgroup: {
      span: 1
    },
    command: {
      type: 1,
      label: 1,
      icon: 1,
      disabled: 1,
      checked: 1,
      radiogroup: 1,
      command: 1
    },
    data: {},
    datalist: {},
    dd: {},
    del: {
      cite: 1,
      datetime: 1
    },
    details: {
      open: 1
    },
    dfn: {},
    dialog: {
      open: 1
    },
    div: {},
    dl: {},
    dt: {},
    em: {},
    embed: {
      src: 1,
      height: 1,
      width: 1,
      type: 1
    },
    fieldset: {
      disabled: 1,
      form: 1,
      name: 1
    },
    figcaption: {},
    figure: {},
    footer: {},
    form: {
      "accept-charset": 1,
      action: 1,
      autocomplete: 1,
      enctype: {
        "multipart/form-data": 1,
        "application/x-www-form-urlencoded": 1
      },
      method: {
        get: 1,
        post: 1
      },
      name: 1,
      novalidate: 1,
      target: {
        _blank: 1,
        top: 1
      }
    },
    h1: {},
    h2: {},
    h3: {},
    h4: {},
    h5: {},
    h6: {},
    head: {},
    header: {},
    hr: {},
    html: {
      manifest: 1
    },
    i: {},
    iframe: {
      name: 1,
      src: 1,
      height: 1,
      width: 1,
      sandbox: {
        "allow-same-origin": 1,
        "allow-top-navigation": 1,
        "allow-forms": 1,
        "allow-scripts": 1
      },
      seamless: {
        seamless: 1
      }
    },
    img: {
      alt: 1,
      src: 1,
      height: 1,
      width: 1,
      usemap: 1,
      ismap: 1
    },
    input: {
      type: {
        text: 1,
        password: 1,
        hidden: 1,
        checkbox: 1,
        submit: 1,
        radio: 1,
        file: 1,
        button: 1,
        reset: 1,
        image: 31,
        color: 1,
        date: 1,
        datetime: 1,
        "datetime-local": 1,
        email: 1,
        month: 1,
        number: 1,
        range: 1,
        search: 1,
        tel: 1,
        time: 1,
        url: 1,
        week: 1
      },
      accept: 1,
      alt: 1,
      autocomplete: {
        on: 1,
        off: 1
      },
      autofocus: {
        autofocus: 1
      },
      checked: {
        checked: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      formaction: 1,
      formenctype: {
        "application/x-www-form-urlencoded": 1,
        "multipart/form-data": 1,
        "text/plain": 1
      },
      formmethod: {
        get: 1,
        post: 1
      },
      formnovalidate: {
        formnovalidate: 1
      },
      formtarget: {
        _blank: 1,
        _self: 1,
        _parent: 1,
        _top: 1
      },
      height: 1,
      list: 1,
      max: 1,
      maxlength: 1,
      min: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      pattern: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      size: 1,
      src: 1,
      step: 1,
      width: 1,
      files: 1,
      value: 1
    },
    ins: {
      cite: 1,
      datetime: 1
    },
    kbd: {},
    keygen: {
      autofocus: 1,
      challenge: {
        challenge: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      keytype: {
        rsa: 1,
        dsa: 1,
        ec: 1
      },
      name: 1
    },
    label: {
      form: 1,
      "for": 1
    },
    legend: {},
    li: {
      value: 1
    },
    link: {
      href: 1,
      hreflang: 1,
      rel: {
        stylesheet: 1,
        icon: 1
      },
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      type: {
        "text/css": 1,
        "image/png": 1,
        "image/jpeg": 1,
        "image/gif": 1
      },
      sizes: 1
    },
    main: {},
    map: {
      name: 1
    },
    mark: {},
    math: {},
    menu: {
      type: 1,
      label: 1
    },
    meta: {
      "http-equiv": {
        "content-type": 1
      },
      name: {
        description: 1,
        keywords: 1
      },
      content: {
        "text/html; charset=UTF-8": 1
      },
      charset: 1
    },
    meter: {
      value: 1,
      min: 1,
      max: 1,
      low: 1,
      high: 1,
      optimum: 1
    },
    nav: {},
    noscript: {
      href: 1
    },
    object: {
      param: 1,
      data: 1,
      type: 1,
      height: 1,
      width: 1,
      usemap: 1,
      name: 1,
      form: 1,
      classid: 1
    },
    ol: {
      start: 1,
      reversed: 1
    },
    optgroup: {
      disabled: 1,
      label: 1
    },
    option: {
      disabled: 1,
      selected: 1,
      label: 1,
      value: 1
    },
    output: {
      "for": 1,
      form: 1,
      name: 1
    },
    p: {},
    param: {
      name: 1,
      value: 1
    },
    pre: {},
    progress: {
      value: 1,
      max: 1
    },
    q: {
      cite: 1
    },
    rp: {},
    rt: {},
    ruby: {},
    s: {},
    samp: {},
    script: {
      charset: 1,
      type: {
        "text/javascript": 1
      },
      src: 1,
      defer: 1,
      async: 1
    },
    select: {
      autofocus: 1,
      disabled: 1,
      form: 1,
      multiple: {
        multiple: 1
      },
      name: 1,
      size: 1,
      readonly: {
        readonly: 1
      }
    },
    small: {},
    source: {
      src: 1,
      type: 1,
      media: 1
    },
    span: {},
    strong: {},
    style: {
      type: 1,
      media: {
        all: 1,
        screen: 1,
        print: 1
      },
      scoped: 1
    },
    sub: {},
    sup: {},
    svg: {},
    table: {
      summary: 1
    },
    tbody: {},
    td: {
      headers: 1,
      rowspan: 1,
      colspan: 1
    },
    textarea: {
      autofocus: {
        autofocus: 1
      },
      disabled: {
        disabled: 1
      },
      form: 1,
      maxlength: 1,
      name: 1,
      placeholder: 1,
      readonly: {
        readonly: 1
      },
      required: {
        required: 1
      },
      rows: 1,
      cols: 1,
      wrap: {
        on: 1,
        off: 1,
        hard: 1,
        soft: 1
      }
    },
    tfoot: {},
    th: {
      headers: 1,
      rowspan: 1,
      colspan: 1,
      scope: 1
    },
    thead: {},
    time: {
      datetime: 1
    },
    title: {},
    tr: {},
    track: {
      kind: 1,
      src: 1,
      srclang: 1,
      label: 1,
      "default": 1
    },
    section: {},
    summary: {},
    u: {},
    ul: {},
    "var": {},
    video: {
      src: 1,
      autobuffer: 1,
      autoplay: {
        autoplay: 1
      },
      loop: {
        loop: 1
      },
      controls: {
        controls: 1
      },
      width: 1,
      height: 1,
      poster: 1,
      muted: {
        muted: 1
      },
      preload: {
        auto: 1,
        metadata: 1,
        none: 1
      }
    },
    wbr: {}
  },
      a = Object.keys(u),
      h = function h() {};

  (function () {
    this.getCompletions = function (e, t, n, r) {
      var i = t.getTokenAt(n.row, n.column);
      if (!i) return [];
      if (f(i, "tag-name") || f(i, "tag-open") || f(i, "end-tag-open")) return this.getTagCompletions(e, t, n, r);
      if (f(i, "tag-whitespace") || f(i, "attribute-name")) return this.getAttributeCompletions(e, t, n, r);
      if (f(i, "attribute-value")) return this.getAttributeValueCompletions(e, t, n, r);
      var s = t.getLine(n.row).substr(0, n.column);
      return /&[a-z]*$/i.test(s) ? this.getHTMLEntityCompletions(e, t, n, r) : [];
    }, this.getTagCompletions = function (e, t, n, r) {
      return a.map(function (e) {
        return {
          value: e,
          meta: "tag",
          score: 1e6
        };
      });
    }, this.getAttributeCompletions = function (e, t, n, r) {
      var i = l(t, n);
      if (!i) return [];
      var s = o;
      return i in u && (s = s.concat(Object.keys(u[i]))), s.map(function (e) {
        return {
          caption: e,
          snippet: e + '="$0"',
          meta: "attribute",
          score: 1e6
        };
      });
    }, this.getAttributeValueCompletions = function (e, t, n, r) {
      var i = l(t, n),
          s = c(t, n);
      if (!i) return [];
      var o = [];
      return i in u && s in u[i] && _typeof(u[i][s]) == "object" && (o = Object.keys(u[i][s])), o.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "attribute value",
          score: 1e6
        };
      });
    }, this.getHTMLEntityCompletions = function (e, t, n, r) {
      var i = ["Aacute;", "aacute;", "Acirc;", "acirc;", "acute;", "AElig;", "aelig;", "Agrave;", "agrave;", "alefsym;", "Alpha;", "alpha;", "amp;", "and;", "ang;", "Aring;", "aring;", "asymp;", "Atilde;", "atilde;", "Auml;", "auml;", "bdquo;", "Beta;", "beta;", "brvbar;", "bull;", "cap;", "Ccedil;", "ccedil;", "cedil;", "cent;", "Chi;", "chi;", "circ;", "clubs;", "cong;", "copy;", "crarr;", "cup;", "curren;", "Dagger;", "dagger;", "dArr;", "darr;", "deg;", "Delta;", "delta;", "diams;", "divide;", "Eacute;", "eacute;", "Ecirc;", "ecirc;", "Egrave;", "egrave;", "empty;", "emsp;", "ensp;", "Epsilon;", "epsilon;", "equiv;", "Eta;", "eta;", "ETH;", "eth;", "Euml;", "euml;", "euro;", "exist;", "fnof;", "forall;", "frac12;", "frac14;", "frac34;", "frasl;", "Gamma;", "gamma;", "ge;", "gt;", "hArr;", "harr;", "hearts;", "hellip;", "Iacute;", "iacute;", "Icirc;", "icirc;", "iexcl;", "Igrave;", "igrave;", "image;", "infin;", "int;", "Iota;", "iota;", "iquest;", "isin;", "Iuml;", "iuml;", "Kappa;", "kappa;", "Lambda;", "lambda;", "lang;", "laquo;", "lArr;", "larr;", "lceil;", "ldquo;", "le;", "lfloor;", "lowast;", "loz;", "lrm;", "lsaquo;", "lsquo;", "lt;", "macr;", "mdash;", "micro;", "middot;", "minus;", "Mu;", "mu;", "nabla;", "nbsp;", "ndash;", "ne;", "ni;", "not;", "notin;", "nsub;", "Ntilde;", "ntilde;", "Nu;", "nu;", "Oacute;", "oacute;", "Ocirc;", "ocirc;", "OElig;", "oelig;", "Ograve;", "ograve;", "oline;", "Omega;", "omega;", "Omicron;", "omicron;", "oplus;", "or;", "ordf;", "ordm;", "Oslash;", "oslash;", "Otilde;", "otilde;", "otimes;", "Ouml;", "ouml;", "para;", "part;", "permil;", "perp;", "Phi;", "phi;", "Pi;", "pi;", "piv;", "plusmn;", "pound;", "Prime;", "prime;", "prod;", "prop;", "Psi;", "psi;", "quot;", "radic;", "rang;", "raquo;", "rArr;", "rarr;", "rceil;", "rdquo;", "real;", "reg;", "rfloor;", "Rho;", "rho;", "rlm;", "rsaquo;", "rsquo;", "sbquo;", "Scaron;", "scaron;", "sdot;", "sect;", "shy;", "Sigma;", "sigma;", "sigmaf;", "sim;", "spades;", "sub;", "sube;", "sum;", "sup;", "sup1;", "sup2;", "sup3;", "supe;", "szlig;", "Tau;", "tau;", "there4;", "Theta;", "theta;", "thetasym;", "thinsp;", "THORN;", "thorn;", "tilde;", "times;", "trade;", "Uacute;", "uacute;", "uArr;", "uarr;", "Ucirc;", "ucirc;", "Ugrave;", "ugrave;", "uml;", "upsih;", "Upsilon;", "upsilon;", "Uuml;", "uuml;", "weierp;", "Xi;", "xi;", "Yacute;", "yacute;", "yen;", "Yuml;", "yuml;", "Zeta;", "zeta;", "zwj;", "zwnj;"];
      return i.map(function (e) {
        return {
          caption: e,
          snippet: e,
          meta: "html entity",
          score: 1e6
        };
      });
    };
  }).call(h.prototype), t.HtmlCompletions = h;
}), ace.define("ace/mode/html", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/mode/html_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html", "ace/mode/html_completions", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./javascript").Mode,
      u = e("./css").Mode,
      a = e("./html_highlight_rules").HtmlHighlightRules,
      f = e("./behaviour/xml").XmlBehaviour,
      l = e("./folding/html").FoldMode,
      c = e("./html_completions").HtmlCompletions,
      h = e("../worker/worker_client").WorkerClient,
      p = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"],
      d = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"],
      v = function v(e) {
    this.fragmentContext = e && e.fragmentContext, this.HighlightRules = a, this.$behaviour = new f(), this.$completer = new c(), this.createModeDelegates({
      "js-": o,
      "css-": u
    }), this.foldingRules = new l(this.voidElements, i.arrayToMap(d));
  };

  r.inherits(v, s), function () {
    this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.voidElements = i.arrayToMap(p), this.getNextLineIndent = function (e, t, n) {
      return this.$getIndent(t);
    }, this.checkOutdent = function (e, t, n) {
      return !1;
    }, this.getCompletions = function (e, t, n, r) {
      return this.$completer.getCompletions(e, t, n, r);
    }, this.createWorker = function (e) {
      if (this.constructor != v) return;
      var t = new h(["ace"], "ace/mode/html_worker", "Worker");
      return t.attachToDocument(e.getDocument()), this.fragmentContext && t.call("setOptions", [{
        context: this.fragmentContext
      }]), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/html", this.snippetFileId = "ace/snippets/html";
  }.call(v.prototype), t.Mode = v;
}), ace.define("ace/mode/visualforce_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html_highlight_rules"], function (e, t, n) {
  "use strict";

  function s(e) {
    return {
      token: e.token + ".start",
      regex: e.start,
      push: [{
        token: "constant.language.escape",
        regex: e.escape
      }, {
        token: e.token + ".end",
        regex: e.start,
        next: "pop"
      }, {
        defaultToken: e.token
      }]
    };
  }

  var r = e("../lib/oop"),
      i = e("../mode/html_highlight_rules").HtmlHighlightRules,
      o = function o() {
    var e = this.createKeywordMapper({
      "variable.language": "$Action|$Api|$Component|$ComponentLabel|$CurrentPage|$FieldSet|$Label|$Label|$ObjectType|$Organization|$Page|$Permission|$Profile|$Resource|$SControl|$Setup|$Site|$System.OriginDateTime|$User|$UserRole|Site|UITheme|UIThemeDisplayed",
      keyword: "",
      "storage.type": "",
      "constant.language": "true|false|null|TRUE|FALSE|NULL",
      "support.function": "DATE|DATEVALUE|DATETIMEVALUE|DAY|MONTH|NOW|TODAY|YEAR|BLANKVALUE|ISBLANK|NULLVALUE|PRIORVALUE|AND|CASE|IF|ISCHANGED|ISNEW|ISNUMBER|NOT|OR|ABS|CEILING|EXP|FLOOR|LN|LOG|MAX|MIN|MOD|ROUND|SQRT|BEGINS|BR|CASESAFEID|CONTAINS|FIND|GETSESSIONID|HTMLENCODE|ISPICKVAL|JSENCODE|JSINHTMLENCODE|LEFT|LEN|LOWER|LPAD|MID|RIGHT|RPAD|SUBSTITUTE|TEXT|TRIM|UPPER|URLENCODE|VALUE|GETRECORDIDS|INCLUDE|LINKTO|REGEX|REQUIRESCRIPT|URLFOR|VLOOKUP|HTMLENCODE|JSENCODE|JSINHTMLENCODE|URLENCODE"
    }, "identifier");
    i.call(this);
    var t = {
      token: "keyword.start",
      regex: "{!",
      push: "Visualforce"
    };

    for (var n in this.$rules) {
      this.$rules[n].unshift(t);
    }

    this.$rules.Visualforce = [s({
      start: '"',
      escape: /\\[btnfr"'\\]/,
      token: "string",
      multiline: !0
    }), s({
      start: "'",
      escape: /\\[btnfr"'\\]/,
      token: "string",
      multiline: !0
    }), {
      token: "comment.start",
      regex: "\\/\\*",
      push: [{
        token: "comment.end",
        regex: "\\*\\/|(?=})",
        next: "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "keyword.end",
      regex: "}",
      next: "pop"
    }, {
      token: e,
      regex: /[a-zA-Z$_\u00a1-\uffff][a-zA-Z\d$_\u00a1-\uffff]*\b/
    }, {
      token: "keyword.operator",
      regex: /==|<>|!=|<=|>=|&&|\|\||[+\-*/^()=<>&]/
    }, {
      token: "punctuation.operator",
      regex: /[?:,;.]/
    }, {
      token: "paren.lparen",
      regex: /[\[({]/
    }, {
      token: "paren.rparen",
      regex: /[\])}]/
    }], this.normalizeRules();
  };

  r.inherits(o, i), t.VisualforceHighlightRules = o;
}), ace.define("ace/mode/visualforce", ["require", "exports", "module", "ace/lib/oop", "ace/mode/html", "ace/mode/visualforce_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/html"], function (e, t, n) {
  "use strict";

  function a() {
    i.call(this), this.HighlightRules = s, this.foldingRules = new u(), this.$behaviour = new o();
  }

  var r = e("../lib/oop"),
      i = e("./html").Mode,
      s = e("./visualforce_highlight_rules").VisualforceHighlightRules,
      o = e("./behaviour/xml").XmlBehaviour,
      u = e("./folding/html").FoldMode;
  r.inherits(a, i), a.prototype.emmetConfig = {
    profile: "xhtml"
  }, t.Mode = a;
});

(function () {
  ace.require(["ace/mode/visualforce"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-wollok.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-wollok.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.doc.tag",
        regex: "@[\\w\\d_]+"
      }, s.getTagRule(), {
        defaultToken: "comment.doc",
        caseInsensitive: !0
      }]
    };
  };

  r.inherits(s, i), s.getTagRule = function (e) {
    return {
      token: "comment.doc.tag.storage.type",
      regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
    };
  }, s.getStartRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\/\\*(?=\\*)",
      next: e
    };
  }, s.getEndRule = function (e) {
    return {
      token: "comment.doc",
      regex: "\\*\\/",
      next: e
    };
  }, t.DocCommentHighlightRules = s;
}), ace.define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  function a() {
    var e = o.replace("\\d", "\\d\\-"),
        t = {
      onMatch: function onMatch(e, t, n) {
        var r = e.charAt(1) == "/" ? 2 : 1;
        if (r == 1) t != this.nextState ? n.unshift(this.next, this.nextState, 0) : n.unshift(this.next), n[2]++;else if (r == 2 && t == this.nextState) {
          n[1]--;
          if (!n[1] || n[1] < 0) n.shift(), n.shift();
        }
        return [{
          type: "meta.tag.punctuation." + (r == 1 ? "" : "end-") + "tag-open.xml",
          value: e.slice(0, r)
        }, {
          type: "meta.tag.tag-name.xml",
          value: e.substr(r)
        }];
      },
      regex: "</?" + e + "",
      next: "jsxAttributes",
      nextState: "jsx"
    };
    this.$rules.start.unshift(t);
    var n = {
      regex: "{",
      token: "paren.quasi.start",
      push: "start"
    };
    this.$rules.jsx = [n, t, {
      include: "reference"
    }, {
      defaultToken: "string"
    }], this.$rules.jsxAttributes = [{
      token: "meta.tag.punctuation.tag-close.xml",
      regex: "/?>",
      onMatch: function onMatch(e, t, n) {
        return t == n[0] && n.shift(), e.length == 2 && (n[0] == this.nextState && n[1]--, (!n[1] || n[1] < 0) && n.splice(0, 2)), this.next = n[0] || "start", [{
          type: this.token,
          value: e
        }];
      },
      nextState: "jsx"
    }, n, f("jsxAttributes"), {
      token: "entity.other.attribute-name.xml",
      regex: e
    }, {
      token: "keyword.operator.attribute-equals.xml",
      regex: "="
    }, {
      token: "text.tag-whitespace.xml",
      regex: "\\s+"
    }, {
      token: "string.attribute-value.xml",
      regex: "'",
      stateName: "jsx_attr_q",
      push: [{
        token: "string.attribute-value.xml",
        regex: "'",
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, {
      token: "string.attribute-value.xml",
      regex: '"',
      stateName: "jsx_attr_qq",
      push: [{
        token: "string.attribute-value.xml",
        regex: '"',
        next: "pop"
      }, {
        include: "reference"
      }, {
        defaultToken: "string.attribute-value.xml"
      }]
    }, t], this.$rules.reference = [{
      token: "constant.language.escape.reference.xml",
      regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
    }];
  }

  function f(e) {
    return [{
      token: "comment",
      regex: /\/\*/,
      next: [i.getTagRule(), {
        token: "comment",
        regex: "\\*\\/",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }, {
      token: "comment",
      regex: "\\/\\/",
      next: [i.getTagRule(), {
        token: "comment",
        regex: "$|^",
        next: e || "pop"
      }, {
        defaultToken: "comment",
        caseInsensitive: !0
      }]
    }];
  }

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = "[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",
      u = function u(e) {
    var t = this.createKeywordMapper({
      "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
      keyword: "const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
      "storage.type": "const|let|var|function",
      "constant.language": "null|Infinity|NaN|undefined",
      "support.function": "alert",
      "constant.language.boolean": "true|false"
    }, "identifier"),
        n = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",
        r = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";
    this.$rules = {
      no_regex: [i.getStartRule("doc-start"), f("no_regex"), {
        token: "string",
        regex: "'(?=.)",
        next: "qstring"
      }, {
        token: "string",
        regex: '"(?=.)',
        next: "qqstring"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
      }, {
        token: "constant.numeric",
        regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator"],
        regex: "(" + o + ")(\\.)(prototype)(\\.)(" + o + ")(\\s*)(=)",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(function)(\\s+)(" + o + ")(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen"],
        regex: "(" + o + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: ["text", "text", "storage.type", "text", "paren.lparen"],
        regex: "(:)(\\s*)(function)(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "keyword",
        regex: "from(?=\\s*('|\"))"
      }, {
        token: "keyword",
        regex: "(?:" + n + ")\\b",
        next: "start"
      }, {
        token: ["support.constant"],
        regex: /that\b/
      }, {
        token: ["storage.type", "punctuation.operator", "support.function.firebug"],
        regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
      }, {
        token: t,
        regex: o
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/,
        next: "property"
      }, {
        token: "storage.type",
        regex: /=>/,
        next: "start"
      }, {
        token: "keyword.operator",
        regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
        next: "start"
      }, {
        token: "punctuation.operator",
        regex: /[?:,;.]/,
        next: "start"
      }, {
        token: "paren.lparen",
        regex: /[\[({]/,
        next: "start"
      }, {
        token: "paren.rparen",
        regex: /[\])}]/
      }, {
        token: "comment",
        regex: /^#!.*$/
      }],
      property: [{
        token: "text",
        regex: "\\s+"
      }, {
        token: ["storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen"],
        regex: "(" + o + ")(\\.)(" + o + ")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
        next: "function_arguments"
      }, {
        token: "punctuation.operator",
        regex: /[.](?![.])/
      }, {
        token: "support.function",
        regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
      }, {
        token: "support.function.dom",
        regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
      }, {
        token: "support.constant",
        regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
      }, {
        token: "identifier",
        regex: o
      }, {
        regex: "",
        token: "empty",
        next: "no_regex"
      }],
      start: [i.getStartRule("doc-start"), f("start"), {
        token: "string.regexp",
        regex: "\\/",
        next: "regex"
      }, {
        token: "text",
        regex: "\\s+|^$",
        next: "start"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      regex: [{
        token: "regexp.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "string.regexp",
        regex: "/[sxngimy]*",
        next: "no_regex"
      }, {
        token: "invalid",
        regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
      }, {
        token: "constant.language.escape",
        regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
      }, {
        token: "constant.language.delimiter",
        regex: /\|/
      }, {
        token: "constant.language.escape",
        regex: /\[\^?/,
        next: "regex_character_class"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp"
      }],
      regex_character_class: [{
        token: "regexp.charclass.keyword.operator",
        regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
      }, {
        token: "constant.language.escape",
        regex: "]",
        next: "regex"
      }, {
        token: "constant.language.escape",
        regex: "-"
      }, {
        token: "empty",
        regex: "$",
        next: "no_regex"
      }, {
        defaultToken: "string.regexp.charachterclass"
      }],
      function_arguments: [{
        token: "variable.parameter",
        regex: o
      }, {
        token: "punctuation.operator",
        regex: "[, ]+"
      }, {
        token: "punctuation.operator",
        regex: "$"
      }, {
        token: "empty",
        regex: "",
        next: "no_regex"
      }],
      qqstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: '"|$',
        next: "no_regex"
      }, {
        defaultToken: "string"
      }],
      qstring: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "string",
        regex: "\\\\$",
        consumeLineEnd: !0
      }, {
        token: "string",
        regex: "'|$",
        next: "no_regex"
      }, {
        defaultToken: "string"
      }]
    };
    if (!e || !e.noES6) this.$rules.no_regex.unshift({
      regex: "[{}]",
      onMatch: function onMatch(e, t, n) {
        this.next = e == "{" ? this.nextState : "";
        if (e == "{" && n.length) n.unshift("start", t);else if (e == "}" && n.length) {
          n.shift(), this.next = n.shift();
          if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) return "paren.quasi.end";
        }
        return e == "{" ? "paren.lparen" : "paren.rparen";
      },
      nextState: "start"
    }, {
      token: "string.quasi.start",
      regex: /`/,
      push: [{
        token: "constant.language.escape",
        regex: r
      }, {
        token: "paren.quasi.start",
        regex: /\${/,
        push: "start"
      }, {
        token: "string.quasi.end",
        regex: /`/,
        next: "pop"
      }, {
        defaultToken: "string.quasi"
      }]
    }), (!e || e.jsx != 0) && a.call(this);
    this.embedRules(i, "doc-", [i.getEndRule("no_regex")]), this.normalizeRules();
  };

  r.inherits(u, s), t.JavaScriptHighlightRules = u;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/javascript", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/javascript_highlight_rules", "ace/mode/matching_brace_outdent", "ace/worker/worker_client", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./javascript_highlight_rules").JavaScriptHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("../worker/worker_client").WorkerClient,
      a = e("./behaviour/cstyle").CstyleBehaviour,
      f = e("./folding/cstyle").FoldMode,
      l = function l() {
    this.HighlightRules = s, this.$outdent = new o(), this.$behaviour = new a(), this.foldingRules = new f();
  };

  r.inherits(l, i), function () {
    this.lineCommentStart = "//", this.blockComment = {
      start: "/*",
      end: "*/"
    }, this.$quotes = {
      '"': '"',
      "'": "'",
      "`": "`"
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = this.getTokenizer().getLineTokens(t, e),
          s = i.tokens,
          o = i.state;
      if (s.length && s[s.length - 1].type == "comment") return r;

      if (e == "start" || e == "no_regex") {
        var u = t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
        u && (r += n);
      } else if (e == "doc-start") {
        if (o == "start" || o == "no_regex") return "";
        var u = t.match(/^\s*(\/?)\*/);
        u && (u[1] && (r += " "), r += "* ");
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.createWorker = function (e) {
      var t = new u(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
      return t.attachToDocument(e.getDocument()), t.on("annotate", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/javascript", this.snippetFileId = "ace/snippets/javascript";
  }.call(l.prototype), t.Mode = l;
}), ace.define("ace/mode/wollok_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/doc_comment_highlight_rules", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./doc_comment_highlight_rules").DocCommentHighlightRules,
      s = e("./text_highlight_rules").TextHighlightRules,
      o = function o() {
    var e = "test|describe|package|inherits|false|import|else|or|class|and|not|native|override|program|self|try|const|var|catch|object|super|throw|if|null|return|true|new|constructor|method|mixin",
        t = "null|assert|console",
        n = "Object|Pair|String|Boolean|Number|Integer|Double|Collection|Set|List|Exception|Range|StackTraceElement",
        r = this.createKeywordMapper({
      "variable.language": "self",
      keyword: e,
      "constant.language": t,
      "support.function": n
    }, "identifier");
    this.$rules = {
      start: [{
        token: "comment",
        regex: "\\/\\/.*$"
      }, i.getStartRule("doc-start"), {
        token: "comment",
        regex: "\\/\\*",
        next: "comment"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/
      }, {
        token: "constant.numeric",
        regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/
      }, {
        token: "constant.language.boolean",
        regex: "(?:true|false)\\b"
      }, {
        token: r,
        regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
      }, {
        token: "keyword.operator",
        regex: "===|&&|\\*=|\\.\\.|\\*\\*|#|!|%|\\*|\\?:|\\+|\\/|,|\\+=|\\-|\\.\\.<|!==|:|\\/=|\\?\\.|\\+\\+|>|=|<|>=|=>|==|\\]|\\[|\\-=|\\->|\\||\\-\\-|<>|!=|%=|\\|"
      }, {
        token: "lparen",
        regex: "[[({]"
      }, {
        token: "rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: "\\s+"
      }],
      comment: [{
        token: "comment",
        regex: ".*?\\*\\/",
        next: "start"
      }, {
        token: "comment",
        regex: ".+"
      }]
    }, this.embedRules(i, "doc-", [i.getEndRule("start")]);
  };

  r.inherits(o, s), t.WollokHighlightRules = o;
}), ace.define("ace/mode/wollok", ["require", "exports", "module", "ace/lib/oop", "ace/mode/javascript", "ace/mode/wollok_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./javascript").Mode,
      s = e("./wollok_highlight_rules").WollokHighlightRules,
      o = function o() {
    i.call(this), this.HighlightRules = s;
  };

  r.inherits(o, i), function () {
    this.createWorker = function (e) {
      return null;
    }, this.$id = "ace/mode/wollok", this.snippetFileId = "ace/snippets/wollok";
  }.call(o.prototype), t.Mode = o;
});

(function () {
  ace.require(["ace/mode/wollok"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-xml.js":
/*!****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-xml.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s(e) {
    var t = "[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";
    this.$rules = {
      start: [{
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\[",
        next: "cdata"
      }, {
        token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
        regex: "(<\\?)(" + t + ")",
        next: "processing_instruction"
      }, {
        token: "comment.start.xml",
        regex: "<\\!--",
        next: "comment"
      }, {
        token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
        regex: "(<\\!)(DOCTYPE)(?=[\\s])",
        next: "doctype",
        caseInsensitive: !0
      }, {
        include: "tag"
      }, {
        token: "text.end-tag-open.xml",
        regex: "</"
      }, {
        token: "text.tag-open.xml",
        regex: "<"
      }, {
        include: "reference"
      }, {
        defaultToken: "text.xml"
      }],
      processing_instruction: [{
        token: "entity.other.attribute-name.decl-attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.decl-attribute-equals.xml",
        regex: "="
      }, {
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "punctuation.xml-decl.xml",
        regex: "\\?>",
        next: "start"
      }],
      doctype: [{
        include: "whitespace"
      }, {
        include: "string"
      }, {
        token: "xml-pe.doctype.xml",
        regex: ">",
        next: "start"
      }, {
        token: "xml-pe.xml",
        regex: "[-_a-zA-Z0-9:]+"
      }, {
        token: "punctuation.int-subset",
        regex: "\\[",
        push: "int_subset"
      }],
      int_subset: [{
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "punctuation.int-subset.xml",
        regex: "]",
        next: "pop"
      }, {
        token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
        regex: "(<\\!)(" + t + ")",
        push: [{
          token: "text",
          regex: "\\s+"
        }, {
          token: "punctuation.markup-decl.xml",
          regex: ">",
          next: "pop"
        }, {
          include: "string"
        }]
      }],
      cdata: [{
        token: "string.cdata.xml",
        regex: "\\]\\]>",
        next: "start"
      }, {
        token: "text.xml",
        regex: "\\s+"
      }, {
        token: "text.xml",
        regex: "(?:[^\\]]|\\](?!\\]>))+"
      }],
      comment: [{
        token: "comment.end.xml",
        regex: "-->",
        next: "start"
      }, {
        defaultToken: "comment.xml"
      }],
      reference: [{
        token: "constant.language.escape.reference.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      attr_reference: [{
        token: "constant.language.escape.reference.attribute-value.xml",
        regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
      }],
      tag: [{
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
        regex: "(?:(<)|(</))((?:" + t + ":)?" + t + ")",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: "start"
        }]
      }],
      tag_whitespace: [{
        token: "text.tag-whitespace.xml",
        regex: "\\s+"
      }],
      whitespace: [{
        token: "text.whitespace.xml",
        regex: "\\s+"
      }],
      string: [{
        token: "string.xml",
        regex: "'",
        push: [{
          token: "string.xml",
          regex: "'",
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }, {
        token: "string.xml",
        regex: '"',
        push: [{
          token: "string.xml",
          regex: '"',
          next: "pop"
        }, {
          defaultToken: "string.xml"
        }]
      }],
      attributes: [{
        token: "entity.other.attribute-name.xml",
        regex: t
      }, {
        token: "keyword.operator.attribute-equals.xml",
        regex: "="
      }, {
        include: "tag_whitespace"
      }, {
        include: "attribute_value"
      }],
      attribute_value: [{
        token: "string.attribute-value.xml",
        regex: "'",
        push: [{
          token: "string.attribute-value.xml",
          regex: "'",
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }, {
        token: "string.attribute-value.xml",
        regex: '"',
        push: [{
          token: "string.attribute-value.xml",
          regex: '"',
          next: "pop"
        }, {
          include: "attr_reference"
        }, {
          defaultToken: "string.attribute-value.xml"
        }]
      }]
    }, this.constructor === s && this.normalizeRules();
  };

  (function () {
    this.embedTagRules = function (e, t, n) {
      this.$rules.tag.unshift({
        token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(<)(" + n + "(?=\\s|>|$))",
        next: [{
          include: "attributes"
        }, {
          token: "meta.tag.punctuation.tag-close.xml",
          regex: "/?>",
          next: t + "start"
        }]
      }), this.$rules[n + "-end"] = [{
        include: "attributes"
      }, {
        token: "meta.tag.punctuation.tag-close.xml",
        regex: "/?>",
        next: "start",
        onMatch: function onMatch(e, t, n) {
          return n.splice(0), this.token;
        }
      }], this.embedRules(e, t, [{
        token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + n + ".tag-name.xml"],
        regex: "(</)(" + n + "(?=\\s|>|$))",
        next: n + "-end"
      }, {
        token: "string.cdata.xml",
        regex: "<\\!\\[CDATA\\["
      }, {
        token: "string.cdata.xml",
        regex: "\\]\\]>"
      }]);
    };
  }).call(i.prototype), r.inherits(s, i), t.XmlHighlightRules = s;
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/folding/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/range", "ace/mode/folding/fold_mode", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function l(e, t) {
    return e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../../lib/lang"),
      s = e("../../range").Range,
      o = e("./fold_mode").FoldMode,
      u = e("../../token_iterator").TokenIterator,
      a = t.FoldMode = function (e, t) {
    o.call(this), this.voidElements = e || {}, this.optionalEndTags = r.mixin({}, this.voidElements), t && r.mixin(this.optionalEndTags, t);
  };

  r.inherits(a, o);

  var f = function f() {
    this.tagName = "", this.closing = !1, this.selfClosing = !1, this.start = {
      row: 0,
      column: 0
    }, this.end = {
      row: 0,
      column: 0
    };
  };

  (function () {
    this.getFoldWidget = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      return r ? r.closing || !r.tagName && r.selfClosing ? t == "markbeginend" ? "end" : "" : !r.tagName || r.selfClosing || this.voidElements.hasOwnProperty(r.tagName.toLowerCase()) ? "" : this._findEndTagInLine(e, n, r.tagName, r.end.column) ? "" : "start" : this.getCommentFoldWidget(e, n);
    }, this.getCommentFoldWidget = function (e, t) {
      return /comment/.test(e.getState(t)) && /<!-/.test(e.getLine(t)) ? "start" : "";
    }, this._getFirstTagInLine = function (e, t) {
      var n = e.getTokens(t),
          r = new f();

      for (var i = 0; i < n.length; i++) {
        var s = n[i];

        if (l(s, "tag-open")) {
          r.end.column = r.start.column + s.value.length, r.closing = l(s, "end-tag-open"), s = n[++i];
          if (!s) return null;
          r.tagName = s.value, r.end.column += s.value.length;

          for (i++; i < n.length; i++) {
            s = n[i], r.end.column += s.value.length;

            if (l(s, "tag-close")) {
              r.selfClosing = s.value == "/>";
              break;
            }
          }

          return r;
        }

        if (l(s, "tag-close")) return r.selfClosing = s.value == "/>", r;
        r.start.column += s.value.length;
      }

      return null;
    }, this._findEndTagInLine = function (e, t, n, r) {
      var i = e.getTokens(t),
          s = 0;

      for (var o = 0; o < i.length; o++) {
        var u = i[o];
        s += u.value.length;
        if (s < r) continue;

        if (l(u, "end-tag-open")) {
          u = i[o + 1];
          if (u && u.value == n) return !0;
        }
      }

      return !1;
    }, this._readTagForward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn();else if (l(t, "tag-name")) n.tagName = t.value;else if (l(t, "tag-close")) return n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length, e.stepForward(), n;
      } while (t = e.stepForward());

      return null;
    }, this._readTagBackward = function (e) {
      var t = e.getCurrentToken();
      if (!t) return null;
      var n = new f();

      do {
        if (l(t, "tag-open")) return n.closing = l(t, "end-tag-open"), n.start.row = e.getCurrentTokenRow(), n.start.column = e.getCurrentTokenColumn(), e.stepBackward(), n;
        l(t, "tag-name") ? n.tagName = t.value : l(t, "tag-close") && (n.selfClosing = t.value == "/>", n.end.row = e.getCurrentTokenRow(), n.end.column = e.getCurrentTokenColumn() + t.value.length);
      } while (t = e.stepBackward());

      return null;
    }, this._pop = function (e, t) {
      while (e.length) {
        var n = e[e.length - 1];
        if (!t || n.tagName == t.tagName) return e.pop();

        if (this.optionalEndTags.hasOwnProperty(n.tagName)) {
          e.pop();
          continue;
        }

        return null;
      }
    }, this.getFoldWidgetRange = function (e, t, n) {
      var r = this._getFirstTagInLine(e, n);

      if (!r) return this.getCommentFoldWidget(e, n) && e.getCommentFoldRange(n, e.getLine(n).length);
      var i = r.closing || r.selfClosing,
          o = [],
          a;

      if (!i) {
        var f = new u(e, n, r.start.column),
            l = {
          row: n,
          column: r.start.column + r.tagName.length + 2
        };
        r.start.row == r.end.row && (l.column = r.end.column);

        while (a = this._readTagForward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (a.closing) {
            this._pop(o, a);

            if (o.length == 0) return s.fromPoints(l, a.start);
          } else o.push(a);
        }
      } else {
        var f = new u(e, n, r.end.column),
            c = {
          row: n,
          column: r.start.column
        };

        while (a = this._readTagBackward(f)) {
          if (a.selfClosing) {
            if (!o.length) return a.start.column += a.tagName.length + 2, a.end.column -= 2, s.fromPoints(a.start, a.end);
            continue;
          }

          if (!a.closing) {
            this._pop(o, a);

            if (o.length == 0) return a.start.column += a.tagName.length + 2, a.start.row == a.end.row && a.start.column < a.end.column && (a.start.column = a.end.column), s.fromPoints(a.start, c);
          } else o.push(a);
        }
      }
    };
  }).call(a.prototype);
}), ace.define("ace/mode/xml", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text", "ace/mode/xml_highlight_rules", "ace/mode/behaviour/xml", "ace/mode/folding/xml", "ace/worker/worker_client"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("../lib/lang"),
      s = e("./text").Mode,
      o = e("./xml_highlight_rules").XmlHighlightRules,
      u = e("./behaviour/xml").XmlBehaviour,
      a = e("./folding/xml").FoldMode,
      f = e("../worker/worker_client").WorkerClient,
      l = function l() {
    this.HighlightRules = o, this.$behaviour = new u(), this.foldingRules = new a();
  };

  r.inherits(l, s), function () {
    this.voidElements = i.arrayToMap([]), this.blockComment = {
      start: "<!--",
      end: "-->"
    }, this.createWorker = function (e) {
      var t = new f(["ace"], "ace/mode/xml_worker", "Worker");
      return t.attachToDocument(e.getDocument()), t.on("error", function (t) {
        e.setAnnotations(t.data);
      }), t.on("terminate", function () {
        e.clearAnnotations();
      }), t;
    }, this.$id = "ace/mode/xml";
  }.call(l.prototype), t.Mode = l;
});

(function () {
  ace.require(["ace/mode/xml"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-xquery.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-xquery.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/xquery/xquery_lexer", ["require", "exports", "module"], function (e, t, n) {
  n.exports = function r(t, n, i) {
    function o(u, a) {
      if (!n[u]) {
        if (!t[u]) {
          var f = typeof e == "function" && e;
          if (!a && f) return f(u, !0);
          if (s) return s(u, !0);
          var l = new Error("Cannot find module '" + u + "'");
          throw l.code = "MODULE_NOT_FOUND", l;
        }

        var c = n[u] = {
          exports: {}
        };
        t[u][0].call(c.exports, function (e) {
          var n = t[u][1][e];
          return o(n ? n : e);
        }, c, c.exports, r, t, n, i);
      }

      return n[u].exports;
    }

    var s = typeof e == "function" && e;

    for (var u = 0; u < i.length; u++) {
      o(i[u]);
    }

    return o(i[0]);
  }({
    "/node_modules/xqlint/lib/lexers/XQueryTokenizer.js": [function (e, t, n) {
      var r = n.XQueryTokenizer = function i(e, t) {
        function r(e, t) {
          E = t, S = e, x = e.length, s(0, 0, 0);
        }

        function s(e, t, n) {
          m = t, g = t, y = e, b = t, w = n, N = n, E.reset(S);
        }

        function o() {
          E.startNonterminal("EQName", g);

          switch (y) {
            case 77:
              f(77);
              break;

            case 91:
              f(91);
              break;

            case 115:
              f(115);
              break;

            case 116:
              f(116);
              break;

            case 119:
              f(119);
              break;

            case 140:
              f(140);
              break;

            case 147:
              f(147);
              break;

            case 160:
              f(160);
              break;

            case 180:
              f(180);
              break;

            case 186:
              f(186);
              break;

            case 211:
              f(211);
              break;

            case 221:
              f(221);
              break;

            case 222:
              f(222);
              break;

            case 238:
              f(238);
              break;

            case 239:
              f(239);
              break;

            case 248:
              f(248);
              break;

            default:
              u();
          }

          E.endNonterminal("EQName", g);
        }

        function u() {
          E.startNonterminal("FunctionName", g);

          switch (y) {
            case 14:
              f(14);
              break;

            case 65:
              f(65);
              break;

            case 68:
              f(68);
              break;

            case 69:
              f(69);
              break;

            case 70:
              f(70);
              break;

            case 74:
              f(74);
              break;

            case 75:
              f(75);
              break;

            case 79:
              f(79);
              break;

            case 83:
              f(83);
              break;

            case 84:
              f(84);
              break;

            case 85:
              f(85);
              break;

            case 88:
              f(88);
              break;

            case 89:
              f(89);
              break;

            case 98:
              f(98);
              break;

            case 100:
              f(100);
              break;

            case 103:
              f(103);
              break;

            case 104:
              f(104);
              break;

            case 105:
              f(105);
              break;

            case 106:
              f(106);
              break;

            case 107:
              f(107);
              break;

            case 108:
              f(108);
              break;

            case 113:
              f(113);
              break;

            case 114:
              f(114);
              break;

            case 117:
              f(117);
              break;

            case 118:
              f(118);
              break;

            case 121:
              f(121);
              break;

            case 123:
              f(123);
              break;

            case 124:
              f(124);
              break;

            case 126:
              f(126);
              break;

            case 129:
              f(129);
              break;

            case 130:
              f(130);
              break;

            case 131:
              f(131);
              break;

            case 132:
              f(132);
              break;

            case 141:
              f(141);
              break;

            case 143:
              f(143);
              break;

            case 145:
              f(145);
              break;

            case 146:
              f(146);
              break;

            case 148:
              f(148);
              break;

            case 154:
              f(154);
              break;

            case 155:
              f(155);
              break;

            case 157:
              f(157);
              break;

            case 158:
              f(158);
              break;

            case 159:
              f(159);
              break;

            case 165:
              f(165);
              break;

            case 167:
              f(167);
              break;

            case 169:
              f(169);
              break;

            case 173:
              f(173);
              break;

            case 175:
              f(175);
              break;

            case 176:
              f(176);
              break;

            case 177:
              f(177);
              break;

            case 179:
              f(179);
              break;

            case 181:
              f(181);
              break;

            case 193:
              f(193);
              break;

            case 195:
              f(195);
              break;

            case 196:
              f(196);
              break;

            case 197:
              f(197);
              break;

            case 201:
              f(201);
              break;

            case 207:
              f(207);
              break;

            case 208:
              f(208);
              break;

            case 213:
              f(213);
              break;

            case 214:
              f(214);
              break;

            case 215:
              f(215);
              break;

            case 219:
              f(219);
              break;

            case 224:
              f(224);
              break;

            case 230:
              f(230);
              break;

            case 231:
              f(231);
              break;

            case 232:
              f(232);
              break;

            case 243:
              f(243);
              break;

            case 244:
              f(244);
              break;

            case 245:
              f(245);
              break;

            case 249:
              f(249);
              break;

            case 251:
              f(251);
              break;

            case 255:
              f(255);
              break;

            case 261:
              f(261);
              break;

            case 265:
              f(265);
              break;

            case 269:
              f(269);
              break;

            case 67:
              f(67);
              break;

            case 76:
              f(76);
              break;

            case 78:
              f(78);
              break;

            case 80:
              f(80);
              break;

            case 81:
              f(81);
              break;

            case 86:
              f(86);
              break;

            case 93:
              f(93);
              break;

            case 96:
              f(96);
              break;

            case 97:
              f(97);
              break;

            case 99:
              f(99);
              break;

            case 101:
              f(101);
              break;

            case 120:
              f(120);
              break;

            case 127:
              f(127);
              break;

            case 128:
              f(128);
              break;

            case 136:
              f(136);
              break;

            case 149:
              f(149);
              break;

            case 150:
              f(150);
              break;

            case 156:
              f(156);
              break;

            case 166:
              f(166);
              break;

            case 187:
              f(187);
              break;

            case 194:
              f(194);
              break;

            case 198:
              f(198);
              break;

            case 217:
              f(217);
              break;

            case 220:
              f(220);
              break;

            case 223:
              f(223);
              break;

            case 229:
              f(229);
              break;

            case 235:
              f(235);
              break;

            case 246:
              f(246);
              break;

            case 247:
              f(247);
              break;

            case 252:
              f(252);
              break;

            case 256:
              f(256);
              break;

            case 257:
              f(257);
              break;

            case 258:
              f(258);
              break;

            case 262:
              f(262);
              break;

            case 92:
              f(92);
              break;

            case 171:
              f(171);
              break;

            default:
              f(216);
          }

          E.endNonterminal("FunctionName", g);
        }

        function a() {
          E.startNonterminal("NCName", g);

          switch (y) {
            case 26:
              f(26);
              break;

            case 65:
              f(65);
              break;

            case 70:
              f(70);
              break;

            case 74:
              f(74);
              break;

            case 75:
              f(75);
              break;

            case 79:
              f(79);
              break;

            case 83:
              f(83);
              break;

            case 84:
              f(84);
              break;

            case 85:
              f(85);
              break;

            case 89:
              f(89);
              break;

            case 100:
              f(100);
              break;

            case 104:
              f(104);
              break;

            case 108:
              f(108);
              break;

            case 113:
              f(113);
              break;

            case 117:
              f(117);
              break;

            case 118:
              f(118);
              break;

            case 121:
              f(121);
              break;

            case 123:
              f(123);
              break;

            case 126:
              f(126);
              break;

            case 132:
              f(132);
              break;

            case 141:
              f(141);
              break;

            case 143:
              f(143);
              break;

            case 145:
              f(145);
              break;

            case 146:
              f(146);
              break;

            case 155:
              f(155);
              break;

            case 157:
              f(157);
              break;

            case 158:
              f(158);
              break;

            case 159:
              f(159);
              break;

            case 167:
              f(167);
              break;

            case 169:
              f(169);
              break;

            case 173:
              f(173);
              break;

            case 175:
              f(175);
              break;

            case 176:
              f(176);
              break;

            case 181:
              f(181);
              break;

            case 193:
              f(193);
              break;

            case 195:
              f(195);
              break;

            case 196:
              f(196);
              break;

            case 215:
              f(215);
              break;

            case 219:
              f(219);
              break;

            case 231:
              f(231);
              break;

            case 232:
              f(232);
              break;

            case 243:
              f(243);
              break;

            case 244:
              f(244);
              break;

            case 249:
              f(249);
              break;

            case 261:
              f(261);
              break;

            case 265:
              f(265);
              break;

            case 68:
              f(68);
              break;

            case 69:
              f(69);
              break;

            case 77:
              f(77);
              break;

            case 88:
              f(88);
              break;

            case 91:
              f(91);
              break;

            case 98:
              f(98);
              break;

            case 103:
              f(103);
              break;

            case 105:
              f(105);
              break;

            case 106:
              f(106);
              break;

            case 107:
              f(107);
              break;

            case 114:
              f(114);
              break;

            case 115:
              f(115);
              break;

            case 116:
              f(116);
              break;

            case 119:
              f(119);
              break;

            case 124:
              f(124);
              break;

            case 129:
              f(129);
              break;

            case 130:
              f(130);
              break;

            case 131:
              f(131);
              break;

            case 140:
              f(140);
              break;

            case 147:
              f(147);
              break;

            case 148:
              f(148);
              break;

            case 154:
              f(154);
              break;

            case 160:
              f(160);
              break;

            case 165:
              f(165);
              break;

            case 177:
              f(177);
              break;

            case 179:
              f(179);
              break;

            case 180:
              f(180);
              break;

            case 186:
              f(186);
              break;

            case 197:
              f(197);
              break;

            case 201:
              f(201);
              break;

            case 207:
              f(207);
              break;

            case 208:
              f(208);
              break;

            case 211:
              f(211);
              break;

            case 213:
              f(213);
              break;

            case 214:
              f(214);
              break;

            case 221:
              f(221);
              break;

            case 222:
              f(222);
              break;

            case 224:
              f(224);
              break;

            case 230:
              f(230);
              break;

            case 238:
              f(238);
              break;

            case 239:
              f(239);
              break;

            case 245:
              f(245);
              break;

            case 248:
              f(248);
              break;

            case 251:
              f(251);
              break;

            case 255:
              f(255);
              break;

            case 257:
              f(257);
              break;

            case 269:
              f(269);
              break;

            case 67:
              f(67);
              break;

            case 76:
              f(76);
              break;

            case 78:
              f(78);
              break;

            case 80:
              f(80);
              break;

            case 81:
              f(81);
              break;

            case 86:
              f(86);
              break;

            case 93:
              f(93);
              break;

            case 96:
              f(96);
              break;

            case 97:
              f(97);
              break;

            case 99:
              f(99);
              break;

            case 101:
              f(101);
              break;

            case 120:
              f(120);
              break;

            case 127:
              f(127);
              break;

            case 128:
              f(128);
              break;

            case 136:
              f(136);
              break;

            case 149:
              f(149);
              break;

            case 150:
              f(150);
              break;

            case 156:
              f(156);
              break;

            case 166:
              f(166);
              break;

            case 187:
              f(187);
              break;

            case 194:
              f(194);
              break;

            case 198:
              f(198);
              break;

            case 217:
              f(217);
              break;

            case 220:
              f(220);
              break;

            case 223:
              f(223);
              break;

            case 229:
              f(229);
              break;

            case 235:
              f(235);
              break;

            case 246:
              f(246);
              break;

            case 247:
              f(247);
              break;

            case 252:
              f(252);
              break;

            case 256:
              f(256);
              break;

            case 258:
              f(258);
              break;

            case 262:
              f(262);
              break;

            case 92:
              f(92);
              break;

            case 171:
              f(171);
              break;

            default:
              f(216);
          }

          E.endNonterminal("NCName", g);
        }

        function f(e) {
          y == e ? (l(), E.terminal(i.TOKEN[y], b, w > x ? x : w), m = b, g = w, y = 0) : d(b, w, 0, y, e);
        }

        function l() {
          g != b && (m = g, g = b, E.whitespace(m, g));
        }

        function c(e) {
          var t;

          for (;;) {
            t = C(e);
            if (t != 28) break;
          }

          return t;
        }

        function h(e) {
          y == 0 && (y = c(e), b = T, w = N);
        }

        function p(e) {
          y == 0 && (y = C(e), b = T, w = N);
        }

        function d(e, t, r, i, s) {
          throw new n.ParseException(e, t, r, i, s);
        }

        function C(e) {
          var t = !1;
          T = N;
          var n = N,
              r = i.INITIAL[e],
              s = 0;

          for (var o = r & 4095; o != 0;) {
            var u,
                a = n < x ? S.charCodeAt(n) : 0;
            ++n;
            if (a < 128) u = i.MAP0[a];else if (a < 55296) {
              var f = a >> 4;
              u = i.MAP1[(a & 15) + i.MAP1[(f & 31) + i.MAP1[f >> 5]]];
            } else {
              if (a < 56320) {
                var f = n < x ? S.charCodeAt(n) : 0;
                f >= 56320 && f < 57344 && (++n, a = ((a & 1023) << 10) + (f & 1023) + 65536, t = !0);
              }

              var l = 0,
                  c = 5;

              for (var h = 3;; h = c + l >> 1) {
                if (i.MAP2[h] > a) c = h - 1;else {
                  if (!(i.MAP2[6 + h] < a)) {
                    u = i.MAP2[12 + h];
                    break;
                  }

                  l = h + 1;
                }

                if (l > c) {
                  u = 0;
                  break;
                }
              }
            }
            s = o;
            var p = (u << 12) + o - 1;
            o = i.TRANSITION[(p & 15) + i.TRANSITION[p >> 4]], o > 4095 && (r = o, o &= 4095, N = n);
          }

          r >>= 12;

          if (r == 0) {
            N = n - 1;
            var f = N < x ? S.charCodeAt(N) : 0;
            return f >= 56320 && f < 57344 && --N, d(T, N, s, -1, -1);
          }

          if (t) for (var v = r >> 9; v > 0; --v) {
            --N;
            var f = N < x ? S.charCodeAt(N) : 0;
            f >= 56320 && f < 57344 && --N;
          } else N -= r >> 9;
          return (r & 511) - 1;
        }

        r(e, t);
        var n = this;
        this.ParseException = function (e, t, n, r, i) {
          var s = e,
              o = t,
              u = n,
              a = r,
              f = i;
          this.getBegin = function () {
            return s;
          }, this.getEnd = function () {
            return o;
          }, this.getState = function () {
            return u;
          }, this.getExpected = function () {
            return f;
          }, this.getOffending = function () {
            return a;
          }, this.getMessage = function () {
            return a < 0 ? "lexical analysis failed" : "syntax error";
          };
        }, this.getInput = function () {
          return S;
        }, this.getOffendingToken = function (e) {
          var t = e.getOffending();
          return t >= 0 ? i.TOKEN[t] : null;
        }, this.getExpectedTokenSet = function (e) {
          var t;
          return e.getExpected() < 0 ? t = i.getTokenSet(-e.getState()) : t = [i.TOKEN[e.getExpected()]], t;
        }, this.getErrorMessage = function (e) {
          var t = this.getExpectedTokenSet(e),
              n = this.getOffendingToken(e),
              r = S.substring(0, e.getBegin()),
              i = r.split("\n"),
              s = i.length,
              o = i[s - 1].length + 1,
              u = e.getEnd() - e.getBegin();
          return e.getMessage() + (n == null ? "" : ", found " + n) + "\nwhile expecting " + (t.length == 1 ? t[0] : "[" + t.join(", ") + "]") + "\n" + (u == 0 || n != null ? "" : "after successfully scanning " + u + " characters beginning ") + "at line " + s + ", column " + o + ":\n..." + S.substring(e.getBegin(), Math.min(S.length, e.getBegin() + 64)) + "...";
        }, this.parse_start = function () {
          E.startNonterminal("start", g), h(14);

          switch (y) {
            case 55:
              f(55);
              break;

            case 54:
              f(54);
              break;

            case 56:
              f(56);
              break;

            case 40:
              f(40);
              break;

            case 42:
              f(42);
              break;

            case 41:
              f(41);
              break;

            case 35:
              f(35);
              break;

            case 38:
              f(38);
              break;

            case 274:
              f(274);
              break;

            case 271:
              f(271);
              break;

            case 39:
              f(39);
              break;

            case 43:
              f(43);
              break;

            case 49:
              f(49);
              break;

            case 62:
              f(62);
              break;

            case 63:
              f(63);
              break;

            case 46:
              f(46);
              break;

            case 48:
              f(48);
              break;

            case 53:
              f(53);
              break;

            case 51:
              f(51);
              break;

            case 34:
              f(34);
              break;

            case 273:
              f(273);
              break;

            case 2:
              f(2);
              break;

            case 1:
              f(1);
              break;

            case 3:
              f(3);
              break;

            case 12:
              f(12);
              break;

            case 13:
              f(13);
              break;

            case 15:
              f(15);
              break;

            case 16:
              f(16);
              break;

            case 17:
              f(17);
              break;

            case 5:
              f(5);
              break;

            case 6:
              f(6);
              break;

            case 4:
              f(4);
              break;

            case 33:
              f(33);
              break;

            default:
              o();
          }

          E.endNonterminal("start", g);
        }, this.parse_StartTag = function () {
          E.startNonterminal("StartTag", g), h(8);

          switch (y) {
            case 58:
              f(58);
              break;

            case 50:
              f(50);
              break;

            case 27:
              f(27);
              break;

            case 57:
              f(57);
              break;

            case 35:
              f(35);
              break;

            case 38:
              f(38);
              break;

            default:
              f(33);
          }

          E.endNonterminal("StartTag", g);
        }, this.parse_TagContent = function () {
          E.startNonterminal("TagContent", g), p(11);

          switch (y) {
            case 23:
              f(23);
              break;

            case 6:
              f(6);
              break;

            case 7:
              f(7);
              break;

            case 55:
              f(55);
              break;

            case 54:
              f(54);
              break;

            case 18:
              f(18);
              break;

            case 29:
              f(29);
              break;

            case 272:
              f(272);
              break;

            case 275:
              f(275);
              break;

            case 271:
              f(271);
              break;

            default:
              f(33);
          }

          E.endNonterminal("TagContent", g);
        }, this.parse_AposAttr = function () {
          E.startNonterminal("AposAttr", g), p(10);

          switch (y) {
            case 20:
              f(20);
              break;

            case 25:
              f(25);
              break;

            case 18:
              f(18);
              break;

            case 29:
              f(29);
              break;

            case 272:
              f(272);
              break;

            case 275:
              f(275);
              break;

            case 271:
              f(271);
              break;

            case 38:
              f(38);
              break;

            default:
              f(33);
          }

          E.endNonterminal("AposAttr", g);
        }, this.parse_QuotAttr = function () {
          E.startNonterminal("QuotAttr", g), p(9);

          switch (y) {
            case 19:
              f(19);
              break;

            case 24:
              f(24);
              break;

            case 18:
              f(18);
              break;

            case 29:
              f(29);
              break;

            case 272:
              f(272);
              break;

            case 275:
              f(275);
              break;

            case 271:
              f(271);
              break;

            case 35:
              f(35);
              break;

            default:
              f(33);
          }

          E.endNonterminal("QuotAttr", g);
        }, this.parse_CData = function () {
          E.startNonterminal("CData", g), p(1);

          switch (y) {
            case 11:
              f(11);
              break;

            case 64:
              f(64);
              break;

            default:
              f(33);
          }

          E.endNonterminal("CData", g);
        }, this.parse_XMLComment = function () {
          E.startNonterminal("XMLComment", g), p(0);

          switch (y) {
            case 9:
              f(9);
              break;

            case 47:
              f(47);
              break;

            default:
              f(33);
          }

          E.endNonterminal("XMLComment", g);
        }, this.parse_PI = function () {
          E.startNonterminal("PI", g), p(3);

          switch (y) {
            case 10:
              f(10);
              break;

            case 59:
              f(59);
              break;

            case 60:
              f(60);
              break;

            default:
              f(33);
          }

          E.endNonterminal("PI", g);
        }, this.parse_Pragma = function () {
          E.startNonterminal("Pragma", g), p(2);

          switch (y) {
            case 8:
              f(8);
              break;

            case 36:
              f(36);
              break;

            case 37:
              f(37);
              break;

            default:
              f(33);
          }

          E.endNonterminal("Pragma", g);
        }, this.parse_Comment = function () {
          E.startNonterminal("Comment", g), p(4);

          switch (y) {
            case 52:
              f(52);
              break;

            case 41:
              f(41);
              break;

            case 30:
              f(30);
              break;

            default:
              f(33);
          }

          E.endNonterminal("Comment", g);
        }, this.parse_CommentDoc = function () {
          E.startNonterminal("CommentDoc", g), p(5);

          switch (y) {
            case 31:
              f(31);
              break;

            case 32:
              f(32);
              break;

            case 52:
              f(52);
              break;

            case 41:
              f(41);
              break;

            default:
              f(33);
          }

          E.endNonterminal("CommentDoc", g);
        }, this.parse_QuotString = function () {
          E.startNonterminal("QuotString", g), p(6);

          switch (y) {
            case 18:
              f(18);
              break;

            case 29:
              f(29);
              break;

            case 19:
              f(19);
              break;

            case 21:
              f(21);
              break;

            case 35:
              f(35);
              break;

            default:
              f(33);
          }

          E.endNonterminal("QuotString", g);
        }, this.parse_AposString = function () {
          E.startNonterminal("AposString", g), p(7);

          switch (y) {
            case 18:
              f(18);
              break;

            case 29:
              f(29);
              break;

            case 20:
              f(20);
              break;

            case 22:
              f(22);
              break;

            case 38:
              f(38);
              break;

            default:
              f(33);
          }

          E.endNonterminal("AposString", g);
        }, this.parse_Prefix = function () {
          E.startNonterminal("Prefix", g), h(13), l(), a(), E.endNonterminal("Prefix", g);
        }, this.parse__EQName = function () {
          E.startNonterminal("_EQName", g), h(12), l(), o(), E.endNonterminal("_EQName", g);
        };
        var v, m, g, y, b, w, E, S, x, T, N;
      };

      r.getTokenSet = function (e) {
        var t = [],
            n = e < 0 ? -e : INITIAL[e] & 4095;

        for (var i = 0; i < 276; i += 32) {
          var s = i,
              o = (i >> 5) * 2062 + n - 1,
              u = o >> 2,
              a = u >> 2,
              f = r.EXPECTED[(o & 3) + r.EXPECTED[(u & 3) + r.EXPECTED[(a & 3) + r.EXPECTED[a >> 2]]]];

          for (; f != 0; f >>>= 1, ++s) {
            (f & 1) != 0 && t.push(r.TOKEN[s]);
          }
        }

        return t;
      }, r.MAP0 = [66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35], r.MAP1 = [108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 31, 31, 35, 35, 35, 35, 35, 35, 35, 65, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65], r.MAP2 = [57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 35, 31, 35, 31, 31, 35], r.INITIAL = [1, 2, 36867, 45060, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], r.TRANSITION = [17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22908, 18836, 17152, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18579, 21711, 17152, 19008, 19233, 20367, 19008, 28684, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20116, 18836, 18637, 19008, 19233, 21267, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18763, 18778, 18794, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18821, 22923, 18906, 19008, 19233, 17431, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18937, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19054, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 18953, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21843, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21696, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22429, 20131, 18720, 19008, 19233, 20367, 19008, 17173, 23559, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 18087, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 21242, 19111, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19024, 18836, 18609, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19081, 22444, 18987, 19008, 19233, 20367, 19008, 19065, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21992, 22007, 18987, 19008, 19233, 20367, 19008, 18690, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22414, 18836, 18987, 19008, 19233, 30651, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19138, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19280, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 19172, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21783, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19218, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21651, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19249, 19265, 19307, 18888, 27857, 30536, 24401, 31444, 23357, 18888, 19351, 18888, 18890, 27211, 19370, 27211, 27211, 19392, 24401, 31911, 24401, 24401, 25467, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 17994, 24060, 18888, 18888, 18888, 18890, 19468, 27211, 27211, 27211, 27211, 19484, 35367, 19520, 24401, 24401, 24401, 19628, 18888, 29855, 18888, 18888, 23086, 27211, 19538, 27211, 27211, 30756, 24012, 24401, 19560, 24401, 24401, 26750, 18888, 18888, 19327, 27855, 27211, 27211, 19580, 17590, 24017, 24401, 24401, 19600, 25665, 18888, 18888, 28518, 27211, 27212, 24016, 19620, 19868, 28435, 25722, 18889, 19644, 27211, 32888, 35852, 19868, 31018, 19694, 19376, 19717, 22215, 19735, 22098, 19751, 35203, 19776, 19797, 19817, 19840, 25783, 31738, 24135, 19701, 19856, 31015, 23516, 31008, 28311, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21768, 18836, 19307, 18888, 27857, 27904, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 19888, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22399, 18836, 19918, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21666, 18836, 19307, 18888, 27857, 27525, 24401, 29183, 21467, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 19946, 24401, 24401, 24401, 24401, 32382, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19998, 24401, 24401, 24401, 24401, 31500, 18467, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 20021, 24401, 24401, 24401, 24401, 24401, 34271, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 32926, 29908, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 20050, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20101, 19039, 20191, 20412, 20903, 17569, 20309, 20872, 25633, 20623, 20505, 20218, 20242, 17189, 17208, 17281, 20355, 20265, 20306, 20328, 20383, 22490, 20796, 20619, 21354, 20654, 20410, 20956, 21232, 20765, 17421, 20535, 17192, 18127, 22459, 20312, 25531, 22470, 20309, 20428, 18964, 20466, 20491, 21342, 21070, 20521, 20682, 17714, 18326, 17543, 17559, 17585, 22497, 20559, 19504, 20279, 20575, 20290, 20475, 20604, 20639, 20226, 20670, 17661, 21190, 17703, 21176, 17730, 19494, 20698, 20711, 22480, 21046, 21116, 18971, 21130, 20727, 20755, 17675, 17753, 17832, 17590, 25518, 20394, 20781, 20831, 20202, 20847, 21401, 17292, 17934, 17979, 18549, 20863, 20588, 25542, 20888, 20919, 18072, 18117, 20935, 20972, 21032, 21062, 21086, 18239, 21102, 18563, 21146, 21162, 21206, 18351, 20949, 20902, 18340, 21222, 21258, 21283, 18360, 20249, 17405, 21295, 21311, 21327, 20739, 20343, 21370, 21386, 21417, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21977, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 21452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 21504, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 36501, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 28674, 21946, 17617, 36473, 18223, 17237, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 21575, 21534, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 21560, 30628, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21798, 18836, 21612, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21636, 18836, 18987, 19008, 19233, 17902, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21753, 19096, 21903, 19008, 19233, 20367, 19008, 19291, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17379, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 21931, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18280, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21962, 18594, 18987, 19008, 19233, 22043, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21681, 21858, 18987, 19008, 19233, 20367, 19008, 21544, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 32319, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 22231, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 31678, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 33588, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 35019, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22248, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22324, 18836, 22059, 18888, 27857, 30501, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 34365, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22354, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 27086, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 19930, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22309, 22513, 18987, 19008, 19233, 20367, 19008, 19122, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 22544, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22608, 18836, 22988, 23004, 27585, 23020, 23036, 23067, 22087, 18888, 18888, 18888, 23083, 27211, 27211, 27211, 23102, 22121, 24401, 24401, 24401, 23122, 31386, 26154, 19674, 18888, 28119, 28232, 19424, 23705, 27211, 27211, 23142, 23173, 23189, 23212, 24401, 24401, 23246, 34427, 31693, 23262, 18888, 23290, 23308, 27783, 27620, 23327, 35263, 35107, 33383, 23346, 18193, 23393, 32748, 23968, 24401, 23414, 35153, 23463, 18888, 33913, 23442, 23482, 27211, 27211, 23532, 23552, 21431, 23575, 24401, 24401, 23604, 26095, 23635, 23657, 18888, 33482, 23685, 33251, 27211, 22187, 18851, 23721, 35536, 24401, 18887, 23750, 32641, 27211, 23769, 23787, 20080, 33012, 24384, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 23803, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 28224, 31826, 23823, 26917, 34978, 23850, 26493, 25782, 23878, 23914, 23516, 31008, 22105, 19419, 27963, 19659, 29781, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22623, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 28909, 25783, 27211, 27211, 27211, 34048, 23933, 22164, 24401, 24401, 24401, 28409, 23949, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 26583, 18888, 18888, 18888, 35585, 23984, 27211, 27211, 27211, 24005, 22201, 24033, 24401, 24401, 24401, 24052, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 26496, 24076, 24126, 24151, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22638, 18836, 22059, 19678, 27857, 24185, 24401, 24201, 24217, 26592, 18888, 18888, 18890, 24252, 24268, 27211, 27211, 22121, 24287, 24303, 24401, 24401, 30613, 19781, 35432, 36007, 32649, 18888, 25783, 24322, 28966, 23771, 27211, 35072, 22164, 24358, 32106, 26829, 24400, 31500, 31693, 18888, 18888, 18888, 24801, 18890, 27211, 27211, 27211, 27211, 24418, 19484, 24401, 24401, 24401, 24401, 20167, 31181, 18888, 18888, 18888, 27833, 23086, 27211, 27211, 33540, 27211, 30756, 21431, 24401, 24401, 22972, 24401, 26095, 18888, 36131, 18888, 27855, 27211, 24440, 27211, 22187, 22968, 24401, 24459, 24401, 31699, 28454, 18888, 34528, 34570, 35779, 24478, 24402, 24494, 25659, 18888, 36228, 27211, 27211, 24515, 30981, 23734, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 24538, 31017, 27856, 31741, 30059, 23377, 24563, 19837, 25782, 19760, 31015, 23516, 25374, 22105, 19419, 29793, 24579, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22653, 18836, 22059, 25756, 19982, 34097, 23196, 29183, 24614, 24110, 23641, 24673, 26103, 24697, 24443, 24713, 28558, 22121, 24748, 24462, 24764, 23398, 30613, 18888, 18888, 18888, 18888, 24798, 25783, 27211, 27211, 27211, 34232, 35072, 22164, 24401, 24401, 24401, 33302, 31500, 22559, 24106, 24232, 18888, 18888, 34970, 24817, 30411, 27211, 27211, 32484, 19484, 29750, 35127, 24401, 24401, 19872, 31181, 24852, 18888, 18888, 24871, 29221, 27211, 27211, 32072, 27211, 30756, 34441, 24401, 24401, 31571, 24401, 26095, 33141, 27802, 27011, 27855, 25295, 25607, 24888, 22187, 22968, 19195, 34593, 24906, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 33663, 27211, 27211, 24924, 24947, 23588, 31018, 18890, 27211, 31833, 22135, 19447, 23086, 23330, 19828, 30904, 31042, 24972, 19840, 25e3, 31738, 30898, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 25016, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22668, 18836, 25041, 25057, 31320, 25073, 25089, 25105, 22087, 34796, 24236, 36138, 34870, 34125, 25121, 23106, 35497, 22248, 36613, 25137, 30671, 27365, 30613, 25153, 26447, 25199, 25233, 22574, 23274, 25249, 25265, 25281, 25318, 25344, 25360, 25400, 25428, 25452, 26731, 25504, 31693, 23669, 25558, 27407, 25575, 28599, 25934, 25599, 27211, 28180, 27304, 25623, 25839, 25649, 24401, 34820, 25681, 25698, 22586, 27775, 30190, 25745, 25778, 25799, 25817, 28995, 33569, 30756, 21518, 33443, 25837, 25855, 25893, 26095, 31254, 26677, 30136, 27855, 25930, 25950, 27211, 22187, 22968, 25966, 25986, 24401, 23428, 27763, 36330, 26959, 26002, 26029, 26045, 26085, 26119, 26170, 26203, 26222, 26239, 30527, 26372, 26274, 28404, 31018, 33757, 27211, 34262, 26316, 36729, 26345, 26366, 35337, 31017, 26388, 26407, 30954, 26350, 33861, 26434, 26463, 26479, 26512, 23516, 33189, 26531, 26547, 27963, 31293, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22683, 18836, 26568, 26181, 26608, 34097, 26643, 29183, 22087, 26669, 18888, 18888, 18890, 26693, 27211, 27211, 27211, 22121, 26720, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 26774, 25783, 27211, 27211, 27211, 26619, 35072, 22164, 24401, 24401, 24401, 21596, 31500, 31693, 18888, 18888, 33978, 18888, 18890, 27211, 27211, 25801, 27211, 27211, 19484, 24401, 24401, 24401, 26792, 24401, 31181, 18888, 18888, 18888, 35464, 23086, 27211, 27211, 27211, 26809, 30756, 21431, 24401, 24401, 24401, 26828, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 31948, 18889, 35707, 27211, 19719, 26845, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 26905, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 24984, 31088, 19419, 26945, 27651, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22698, 18836, 26999, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23051, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 27033, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 27056, 18888, 18890, 27211, 27211, 30320, 27211, 27211, 27075, 24401, 24401, 29032, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 33986, 27855, 27211, 27211, 27102, 17590, 24017, 24401, 24401, 27123, 27144, 36254, 27162, 27210, 27228, 28500, 18187, 34842, 33426, 27244, 35980, 27277, 27302, 27320, 36048, 34013, 20999, 31882, 21478, 27895, 27356, 30287, 27381, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 26329, 30087, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 27406, 27423, 27445, 35294, 27461, 22087, 18888, 18888, 30140, 18890, 27211, 27211, 27989, 27211, 22121, 24401, 24401, 25682, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 34042, 27211, 27211, 27211, 27211, 29700, 22164, 24401, 24401, 24401, 24401, 27128, 31693, 27477, 18888, 18888, 18888, 18890, 27194, 27211, 27211, 27211, 27211, 19484, 35299, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 27059, 23086, 27211, 27211, 27211, 33366, 30756, 24012, 24401, 24401, 24401, 35044, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 20815, 27211, 30818, 19960, 33969, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22713, 18836, 22059, 27496, 27516, 27541, 35231, 27557, 22087, 29662, 26292, 23292, 27573, 24836, 27601, 27211, 27636, 22121, 35544, 27686, 24401, 27721, 18866, 18888, 27799, 18888, 27818, 22071, 27853, 32260, 27211, 26013, 27873, 27920, 22164, 29419, 24401, 29946, 33413, 26742, 27751, 26881, 18888, 18888, 27261, 36776, 27936, 27211, 27211, 27211, 27988, 28005, 28031, 28052, 24401, 24401, 28069, 28088, 28135, 25488, 28152, 26069, 28167, 27211, 28340, 24657, 28196, 30756, 31523, 24401, 28212, 34176, 36174, 24956, 28248, 28266, 28290, 21488, 33077, 28327, 28356, 17590, 20986, 23126, 28391, 28425, 28102, 28451, 28470, 28490, 28516, 28534, 20034, 33728, 25868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 30241, 28274, 28553, 28574, 19406, 28590, 23086, 23330, 19828, 19452, 28615, 28660, 26147, 25783, 31738, 19837, 25782, 19760, 29613, 35958, 29276, 22105, 19419, 27963, 23157, 28700, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 22528, 18888, 18888, 18888, 18888, 18890, 27333, 27211, 27211, 27211, 27211, 19484, 30853, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22728, 18836, 28747, 28782, 28817, 28841, 28857, 28880, 28896, 24161, 28943, 32011, 36261, 27340, 28961, 29492, 28982, 29011, 24522, 29027, 25436, 29048, 23051, 27500, 29090, 29110, 30713, 18888, 23512, 29130, 25183, 27211, 29155, 28927, 27033, 29173, 23230, 24401, 29199, 35373, 31693, 18888, 18888, 25583, 32629, 29218, 27211, 27211, 31461, 30692, 29237, 27075, 24401, 24401, 24401, 29262, 29302, 19628, 18888, 34329, 18888, 18888, 23086, 27211, 29329, 27211, 27211, 30756, 24012, 35933, 24401, 24401, 24401, 27705, 31612, 18888, 18888, 29346, 29374, 27211, 35650, 17590, 21436, 29393, 24401, 25970, 18887, 33895, 18888, 27211, 32528, 27212, 24016, 32769, 19868, 25659, 18888, 26889, 27211, 27211, 29412, 23889, 24371, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31768, 19840, 25783, 31738, 19837, 29435, 29508, 31102, 29550, 29606, 22105, 30300, 29462, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22743, 18836, 22059, 29629, 29473, 34097, 33285, 29183, 29651, 27254, 18888, 29678, 33329, 32535, 27211, 29694, 29716, 22121, 19202, 24401, 32742, 29741, 18866, 26776, 33921, 28474, 18888, 18888, 25783, 29766, 27211, 29809, 27211, 35072, 22164, 35825, 24401, 29828, 24401, 24036, 36769, 25217, 18888, 18888, 29848, 18890, 27211, 29871, 27211, 26258, 27211, 29894, 24401, 29929, 24401, 36587, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 29725, 29962, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18473, 18888, 18888, 19584, 27211, 27212, 24016, 29982, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19902, 19447, 32052, 19544, 19828, 29998, 30097, 30031, 19840, 25783, 30047, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 30075, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22758, 18836, 30121, 30156, 30206, 30257, 30273, 30336, 22087, 35624, 32837, 25762, 18890, 29878, 34934, 26812, 27211, 22121, 24931, 23223, 29202, 24401, 18866, 34373, 30352, 18888, 18888, 18888, 23447, 24828, 27211, 27211, 27211, 35072, 30370, 35052, 24401, 24401, 24401, 24036, 29523, 18888, 18888, 27146, 18888, 31308, 30386, 27211, 27211, 30405, 30558, 19484, 30427, 24401, 24401, 29938, 35686, 19628, 28766, 30447, 34506, 35614, 23086, 28731, 30482, 30517, 30552, 30756, 24012, 20156, 30574, 30598, 30667, 26283, 33464, 28945, 27670, 30687, 32915, 33504, 25328, 17590, 23963, 20450, 33837, 21016, 32397, 26300, 30708, 30729, 27885, 30748, 21588, 36373, 30779, 26653, 24628, 33220, 32514, 30806, 31835, 25412, 25906, 26515, 18890, 28825, 31833, 26133, 19447, 28304, 31730, 23834, 26057, 30869, 30885, 32181, 30920, 30942, 32797, 25782, 30970, 31015, 23516, 31008, 30997, 31034, 27963, 19659, 29450, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22773, 18836, 31058, 31074, 32463, 31125, 31141, 31197, 22087, 18888, 29534, 35471, 36738, 27211, 24342, 31213, 24424, 22121, 24401, 20175, 31229, 31917, 27736, 31245, 34334, 27175, 18888, 29094, 27286, 27211, 31278, 31336, 27211, 31355, 31371, 24401, 31402, 31418, 24401, 31437, 31693, 18888, 31619, 32841, 18888, 18890, 27211, 27211, 31460, 31477, 27211, 19484, 24401, 24401, 31497, 36581, 24401, 33020, 18888, 18888, 18888, 18888, 30007, 27211, 27211, 27211, 27211, 31516, 32310, 24401, 24401, 24401, 24401, 31539, 18888, 28762, 18888, 24651, 35740, 27211, 27211, 28644, 31565, 35796, 24401, 24401, 19318, 32188, 18888, 24334, 28366, 27212, 29966, 29832, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 31587, 19868, 31635, 32435, 33693, 30105, 31663, 20005, 31715, 31757, 31784, 31812, 30015, 31851, 31878, 25783, 31898, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 31933, 30221, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22788, 18836, 22059, 25729, 30466, 31968, 24306, 31984, 32e3, 32807, 35160, 27017, 29590, 34941, 19801, 29377, 33700, 22121, 27040, 30431, 29396, 28864, 29565, 18888, 18888, 18888, 32027, 18888, 25783, 27211, 27211, 23698, 27211, 35072, 22164, 24401, 24401, 30845, 24401, 24036, 32045, 18888, 26929, 18888, 18888, 18890, 27211, 31481, 32068, 27211, 27211, 32088, 24401, 33058, 32122, 24401, 24401, 33736, 18888, 18888, 33162, 18888, 23086, 27211, 27211, 29484, 27211, 28375, 32144, 24401, 24401, 33831, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 36704, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 33107, 22171, 33224, 24271, 32169, 31017, 27856, 31741, 19840, 25783, 31738, 30234, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 32204, 32232, 32252, 32677, 33295, 29074, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23619, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 32276, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 32299, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 33886, 18889, 36065, 27211, 19719, 35326, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22803, 18836, 32335, 31647, 34666, 32351, 32367, 32417, 22087, 18888, 32433, 19335, 32451, 27211, 32479, 27107, 32500, 22121, 24401, 32551, 20085, 32572, 18866, 22287, 23753, 18888, 18888, 32602, 32665, 27211, 32693, 27211, 26972, 32713, 32729, 24401, 32764, 24401, 25877, 32785, 34768, 18888, 27390, 32823, 24594, 24855, 32857, 24890, 32878, 32904, 27211, 32942, 32977, 24401, 33e3, 29313, 24401, 30790, 26206, 27666, 33904, 18888, 23086, 36353, 27211, 33036, 27211, 30756, 24012, 32153, 24401, 33056, 24401, 35861, 18888, 18888, 30354, 27972, 27211, 27211, 33800, 17590, 20145, 24401, 24401, 34638, 20811, 18888, 18888, 33074, 27211, 27212, 36167, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 34616, 24169, 33093, 33123, 33157, 27856, 31741, 23862, 26552, 34302, 19837, 25782, 19760, 31015, 23516, 31008, 33178, 19973, 27963, 23497, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22818, 18836, 33205, 28113, 33240, 34097, 33275, 29183, 22087, 33318, 35438, 18888, 18890, 33345, 26391, 33382, 27211, 22121, 33399, 28072, 33442, 24401, 18866, 22232, 18888, 33459, 18888, 18888, 33480, 33498, 25175, 27211, 27211, 26704, 22164, 24775, 35239, 24401, 24401, 25914, 29580, 18888, 18888, 31109, 25211, 33520, 33539, 27211, 27211, 33556, 36284, 19484, 33585, 24401, 24401, 33604, 32556, 19628, 18888, 18888, 31262, 33658, 23086, 27211, 27211, 33679, 27211, 30756, 24012, 24401, 24401, 33716, 24401, 26854, 27480, 18888, 33752, 27855, 33259, 34701, 27211, 17590, 32102, 24782, 23807, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 33773, 36105, 19868, 25659, 18888, 23368, 27211, 29157, 19719, 23889, 34454, 29286, 18890, 33794, 25302, 33816, 19447, 34079, 33853, 31862, 31017, 27856, 31741, 33877, 28920, 33937, 19837, 30461, 34002, 22276, 36041, 34029, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22833, 18836, 34064, 32616, 34113, 34141, 34157, 34192, 34208, 32216, 36013, 31549, 31952, 34224, 34248, 34287, 29330, 34350, 34389, 34413, 34481, 26793, 18866, 26187, 29635, 22293, 18888, 36654, 25783, 34522, 34544, 34566, 25821, 35072, 22164, 34586, 34609, 34632, 19604, 24036, 36644, 36674, 24681, 18888, 32401, 34654, 31339, 34682, 34698, 27211, 34717, 34753, 28053, 34812, 34836, 24401, 33619, 19628, 34858, 32236, 34906, 24598, 33523, 27612, 34890, 34922, 24732, 29246, 36717, 33634, 34465, 32984, 34168, 26750, 34957, 18888, 18888, 34994, 35010, 27211, 33040, 17590, 29913, 35035, 24401, 36304, 25482, 30171, 35883, 35068, 35088, 26627, 20441, 31173, 35123, 35143, 35176, 24640, 30492, 29358, 19719, 35192, 35219, 25384, 28801, 35255, 35279, 32586, 34496, 23086, 23330, 29061, 31017, 27856, 31741, 19840, 25783, 31738, 24547, 25164, 35315, 31796, 35353, 34316, 22105, 19419, 27963, 24091, 28630, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22848, 18836, 22059, 34782, 34088, 35389, 21008, 35405, 35421, 35454, 18888, 18888, 23466, 35487, 27211, 27211, 27211, 35513, 31154, 24401, 24401, 24401, 35560, 18888, 26863, 36664, 35601, 24872, 25783, 30389, 23536, 26250, 35647, 35666, 22164, 19522, 19564, 30582, 35682, 27697, 35575, 29114, 18888, 18888, 18888, 18890, 27211, 35702, 27211, 27211, 27211, 35723, 24401, 35527, 24401, 24401, 24401, 19628, 30184, 18888, 18888, 18888, 23086, 35739, 27211, 27211, 27211, 29139, 22938, 24401, 24401, 24401, 24401, 23898, 35756, 18888, 18888, 25025, 35778, 27211, 27211, 17590, 20064, 35795, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 23917, 18890, 34550, 31833, 22262, 19447, 23086, 23330, 26418, 31017, 27856, 31741, 19840, 25783, 35812, 19837, 27187, 35841, 33135, 23516, 31008, 22105, 22148, 28712, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22863, 18836, 22059, 35877, 28723, 34097, 31164, 29183, 22087, 26758, 18888, 22592, 18890, 23989, 27211, 29812, 27211, 22121, 33778, 24401, 31421, 24401, 18866, 18888, 18888, 26872, 18888, 18888, 25783, 27211, 30732, 27211, 27211, 35072, 22164, 24401, 24908, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22878, 18836, 22059, 27837, 27857, 35899, 24401, 35915, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31602, 18888, 18888, 18888, 18888, 26223, 27211, 27211, 27211, 27211, 27211, 19484, 35931, 24401, 24401, 24401, 24401, 19628, 18888, 28136, 18888, 18888, 35949, 27211, 32862, 27211, 32697, 30756, 24012, 24401, 32283, 24401, 32128, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22893, 18836, 22059, 35974, 34882, 34097, 33960, 29183, 35996, 18888, 23311, 18888, 36029, 27211, 27211, 36064, 36081, 22121, 24401, 24401, 36104, 33950, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 36121, 18888, 25559, 18888, 18888, 18890, 27211, 27211, 30313, 27211, 27211, 36154, 24401, 24401, 34397, 24401, 24401, 19628, 28250, 18888, 18888, 18888, 23086, 30926, 27211, 27211, 27211, 26983, 24012, 33642, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 19354, 27857, 36190, 24401, 36206, 22087, 18888, 18888, 18888, 18007, 27211, 27211, 27211, 24724, 22121, 24401, 24401, 24401, 30827, 18866, 18888, 36222, 18888, 28795, 18888, 25783, 35100, 27211, 27429, 27211, 35072, 22164, 30836, 24401, 24499, 24401, 24036, 31693, 18888, 36244, 18888, 18888, 18890, 27211, 36088, 27211, 27211, 27211, 19484, 24401, 28036, 24401, 24401, 24401, 19628, 18888, 18888, 35631, 18888, 35762, 27211, 27211, 36277, 27211, 34730, 24012, 24401, 24401, 36300, 24401, 36320, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 25712, 18888, 18888, 36346, 27211, 27212, 19184, 24402, 19868, 25659, 32029, 18889, 27211, 33359, 19719, 23889, 36369, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22384, 18836, 36389, 19008, 19233, 20367, 36434, 17173, 17595, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 36453, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22369, 18836, 18987, 19008, 19233, 20367, 19008, 21737, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21813, 18836, 36489, 19008, 19233, 20367, 19008, 17173, 17737, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17768, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20543, 22022, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 36517, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 19307, 18888, 27857, 30756, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 36567, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 36603, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 36629, 36690, 18720, 19008, 19233, 20367, 19008, 17454, 17595, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17223, 17308, 17327, 17346, 18918, 36754, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 0, 94242, 0, 118820, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2482176, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 2207744, 2404352, 2412544, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3104768, 2605056, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2678784, 2207744, 2695168, 2207744, 2703360, 2207744, 2711552, 2752512, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 139, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2158592, 2158592, 2158592, 2863104, 2891776, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2785280, 2207744, 2809856, 2207744, 2207744, 2842624, 2207744, 2207744, 2207744, 2899968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2473984, 2207744, 2207744, 2494464, 2207744, 2207744, 2207744, 2523136, 2158592, 2404352, 2412544, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2605056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2678784, 2158592, 2695168, 2158592, 2703360, 2158592, 2711552, 2752512, 2158592, 2158592, 2785280, 2158592, 2158592, 2785280, 2158592, 2809856, 2158592, 2158592, 2842624, 2158592, 2158592, 2158592, 2899968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 641, 0, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 32768, 0, 2158592, 0, 2158592, 2158592, 2158592, 2383872, 2158592, 2158592, 2158592, 2158592, 3006464, 2383872, 2207744, 2207744, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2572573, 2158877, 2158877, 0, 2207744, 2207744, 2596864, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2641920, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 167936, 0, 0, 2162688, 0, 0, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2146304, 2146304, 2224128, 2224128, 2232320, 2232320, 2232320, 641, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2531328, 2158592, 2158592, 2158592, 2158592, 2158592, 2617344, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2502656, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2699264, 2158592, 2158592, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2207744, 2863104, 2891776, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3018752, 2207744, 3043328, 2207744, 2207744, 2207744, 2207744, 3080192, 2207744, 2207744, 3112960, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 172310, 279, 0, 2162688, 0, 0, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2404352, 2412544, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2584576, 2158592, 2609152, 2158592, 2158592, 2629632, 2158592, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2158592, 2158592, 3170304, 3174400, 2158592, 2367488, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 0, 2207744, 2207744, 2207744, 2433024, 2207744, 2453504, 2461696, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2510848, 2207744, 2207744, 2207744, 2207744, 2207744, 2531328, 2207744, 2207744, 2207744, 2207744, 2207744, 2617344, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 1508, 2715648, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2867200, 2207744, 2904064, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2580480, 2207744, 2207744, 2207744, 2207744, 2621440, 2207744, 2207744, 2207744, 3149824, 2207744, 2207744, 3170304, 3174400, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 2158592, 2158592, 2158592, 2404352, 2412544, 2707456, 2732032, 2207744, 2207744, 2207744, 2822144, 2826240, 2207744, 2895872, 2207744, 2207744, 2924544, 2207744, 2207744, 2973696, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 285, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 0, 0, 2535424, 2543616, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2572288, 2981888, 2207744, 2207744, 3002368, 2207744, 3047424, 3063808, 3076096, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3203072, 2708960, 2732032, 2158592, 2158592, 2158592, 2822144, 2827748, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2981888, 2158592, 2158592, 3002368, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2981888, 2158592, 2158592, 3003876, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 20480, 0, 0, 0, 0, 0, 2162688, 20480, 0, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2908160, 2527232, 2207744, 2207744, 2576384, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2908160, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 0, 0, 2158592, 2158592, 2158592, 2158592, 2633728, 2658304, 0, 0, 2740224, 2744320, 0, 2834432, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 933, 45, 45, 45, 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 2494464, 2158592, 2158592, 2158592, 2524757, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 1504, 2158592, 2498560, 2158592, 2158592, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 2736128, 2158592, 2158592, 0, 2158592, 2912256, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3108864, 2158592, 2158592, 3133440, 3145728, 3153920, 2375680, 2379776, 2207744, 2207744, 2420736, 2207744, 2449408, 2207744, 2207744, 2207744, 2498560, 2207744, 2207744, 2207744, 2207744, 2568192, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 551, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 2020, 2158592, 2592768, 2625536, 2207744, 2207744, 2674688, 2736128, 2207744, 2207744, 2207744, 2912256, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 542, 0, 544, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 641, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2498560, 2158592, 2158592, 1621, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 1608, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1107, 97, 97, 1110, 97, 97, 3133440, 3145728, 3153920, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3014656, 2158592, 2158592, 3051520, 2158592, 2158592, 3100672, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2416640, 2207744, 2465792, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2633728, 2658304, 2740224, 2744320, 2834432, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 32768, 0, 0, 0, 0, 0, 0, 2367488, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2158592, 2158592, 2478080, 2158592, 2158592, 2158592, 2535424, 2543616, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3117056, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 2699264, 2207744, 2207744, 2207744, 2207744, 2207744, 2748416, 2756608, 2777088, 2801664, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 0, 0, 2535709, 2543901, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2990365, 2158877, 2158877, 2158730, 2158730, 2158730, 2158730, 2158730, 2572426, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158592, 2158592, 2478080, 2207744, 2207744, 2990080, 2207744, 2207744, 2158592, 2158592, 2482176, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 0, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 3010560, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158592, 2428928, 2158592, 2514944, 0, 0, 2158592, 2588672, 2158592, 0, 2838528, 2158592, 2158592, 2158592, 3010560, 2158592, 2506752, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 0, 29315, 922, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 3006464, 2383872, 0, 2020, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158592, 2637824, 2953216, 2158592, 2539520, 2158592, 2539520, 2207744, 0, 0, 2539520, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 0, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2965504, 2965504, 2965504, 0, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2474269, 2158877, 2158877, 0, 0, 2158877, 2158877, 2158877, 2158877, 2634013, 2658589, 0, 0, 2740509, 2744605, 0, 2834717, 40976, 18, 36884, 45078, 24, 28, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 36884, 0, 0, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 86016, 0, 0, 2211840, 102439, 0, 0, 0, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 0, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 135, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2158592, 2158592, 2158592, 2596864, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2641920, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2494464, 2158592, 2158592, 2158592, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 0, 27, 27, 0, 2158592, 2498560, 2158592, 2158592, 0, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2494464, 2158592, 2158592, 2158592, 3006464, 2383872, 0, 0, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 40976, 18, 36884, 45078, 24, 27, 147488, 94242, 147456, 147488, 106538, 98347, 0, 0, 147456, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 81920, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2428928, 2158592, 2514944, 2158592, 2588672, 2158592, 2838528, 2158592, 2158592, 40976, 18, 151573, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1487, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 130, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3096576, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 644, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 1080, 0, 1084, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2531466, 2158730, 2158730, 2158730, 2158730, 2158730, 2617482, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2158592, 2818048, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 159779, 159744, 102439, 159779, 98347, 0, 0, 159744, 40976, 18, 18, 36884, 0, 45078, 0, 2224253, 172032, 2224253, 2232448, 2232448, 172032, 2232448, 90143, 0, 0, 2170880, 0, 0, 550, 829, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 124, 124, 127, 127, 127, 40976, 18, 36884, 45078, 25, 29, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 163931, 40976, 18, 18, 36884, 0, 45078, 249856, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 0, 827, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 4243810, 4243810, 24, 24, 27, 27, 27, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 57344, 286, 2158592, 2158592, 2158592, 2158592, 2707456, 2732032, 2158592, 2158592, 2158592, 2822144, 2826240, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 53248, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1613, 97, 97, 97, 97, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 546, 0, 0, 0, 0, 286, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 17, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 120, 121, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 53248, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 196608, 18, 266240, 24, 24, 27, 27, 27, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 0, 45, 45, 45, 45, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 45, 45, 45, 45, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1766, 67, 67, 67, 1767, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 546, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 743, 57889, 0, 2170880, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1856, 45, 1858, 1859, 67, 67, 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367773, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2699549, 2158877, 2158877, 2158877, 2158877, 2158877, 2748701, 2756893, 2777373, 2801949, 97, 1115, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 67, 67, 67, 67, 67, 1258, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1826, 67, 97, 97, 97, 97, 97, 97, 1338, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 905, 97, 97, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 1679, 67, 67, 67, 1682, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 189, 45, 45, 45, 1748, 45, 45, 45, 1749, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1959, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1791, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1802, 67, 1817, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1848, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 45, 45, 45, 1863, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 1878, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1973, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1165, 97, 1167, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 0, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1789, 97, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 136, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 229376, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 67, 24850, 24850, 12564, 12564, 0, 0, 280, 547, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1788, 97, 97, 0, 97, 2024, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 235, 67, 67, 67, 67, 67, 57889, 547, 547, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1799, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1092, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1612, 97, 97, 97, 97, 1616, 97, 1297, 1472, 0, 0, 0, 0, 1303, 1474, 0, 0, 0, 0, 1309, 1476, 0, 0, 0, 0, 97, 97, 97, 1481, 97, 97, 97, 97, 97, 97, 1488, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 97, 40976, 18, 36884, 45078, 26, 30, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 213080, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 143448, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 0, 0, 0, 97, 97, 97, 97, 1482, 97, 1483, 97, 97, 97, 97, 97, 97, 1326, 97, 97, 1329, 1330, 97, 97, 97, 97, 97, 97, 1159, 1160, 97, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211974, 102439, 0, 0, 106538, 98347, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2474122, 2158730, 2158730, 2494602, 2158730, 2158730, 2158730, 2809994, 2158730, 2158730, 2842762, 2158730, 2158730, 2158730, 2900106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3014794, 2158730, 2158730, 3051658, 2158730, 2158730, 3100810, 2158730, 2158730, 2158730, 2158730, 3096714, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 2207744, 541, 541, 543, 543, 0, 0, 2166784, 0, 548, 549, 549, 0, 286, 2158877, 2158877, 2158877, 2863389, 2892061, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3186973, 2158877, 0, 0, 0, 0, 0, 0, 0, 0, 2367626, 2158877, 2404637, 2412829, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2564381, 2158877, 2158877, 2605341, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2679069, 2158877, 2695453, 2158877, 2703645, 2158877, 2711837, 2752797, 2158877, 0, 2158877, 2158877, 2158877, 2384010, 2158730, 2158730, 2158730, 2158730, 3006602, 2383872, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3096576, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 2158877, 2785565, 2158877, 2810141, 2158877, 2158877, 2842909, 2158877, 2158877, 2158877, 2900253, 2158877, 2158877, 2158877, 2158877, 2158877, 2531613, 2158877, 2158877, 2158877, 2158877, 2158877, 2617629, 2158877, 2158877, 2158877, 2158877, 2158730, 2818186, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3105053, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 0, 0, 97, 97, 97, 1611, 97, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 1499, 97, 97, 97, 97, 97, 2441354, 2445450, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2502794, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2433162, 2158730, 2453642, 2461834, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2580618, 2158730, 2158730, 2158730, 2158730, 2621578, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2699402, 2158730, 2158730, 2158730, 2158730, 2678922, 2158730, 2695306, 2158730, 2703498, 2158730, 2711690, 2752650, 2158730, 2158730, 2785418, 2158730, 2158730, 2158730, 3113098, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3186826, 2158730, 2207744, 2207744, 2207744, 2207744, 2781184, 2793472, 2207744, 2818048, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 541, 0, 543, 2158877, 2502941, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2580765, 2158877, 2158877, 2158877, 2158877, 2621725, 2158877, 3019037, 2158877, 3043613, 2158877, 2158877, 2158877, 2158877, 3080477, 2158877, 2158877, 3113245, 2158877, 2158877, 2158877, 2158877, 0, 2158877, 2908445, 2158877, 2158877, 2158877, 2978077, 2158877, 2158877, 2158877, 2158877, 3039517, 2158877, 2158730, 2510986, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2584714, 2158730, 2609290, 2158730, 2158730, 2629770, 2158730, 2158730, 2158730, 2388106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2605194, 2158730, 2158730, 2158730, 2158730, 2687114, 2158730, 2715786, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2867338, 2158730, 2904202, 2158730, 2158730, 2158730, 2642058, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2781322, 2793610, 2158730, 3121290, 2158730, 2158730, 2158730, 3149962, 2158730, 2158730, 3170442, 3174538, 2158730, 2367488, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2441216, 2445312, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2502656, 2158877, 2433309, 2158877, 2453789, 2461981, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2511133, 2158877, 2158877, 2158877, 2158877, 2584861, 2158877, 2609437, 2158877, 2158877, 2629917, 2158877, 2158877, 2158877, 2687261, 2158877, 2715933, 2158877, 2158730, 2158730, 2973834, 2158730, 2982026, 2158730, 2158730, 3002506, 2158730, 3047562, 3063946, 3076234, 2158730, 2158730, 2158730, 2158730, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158877, 2507037, 0, 0, 2158877, 2158730, 2158730, 2158730, 3203210, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2564096, 2207744, 2207744, 2207744, 2707741, 2732317, 2158877, 2158877, 2158877, 2822429, 2826525, 2158877, 2896157, 2158877, 2158877, 2924829, 2158877, 2158877, 2973981, 2158877, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 642, 0, 2158592, 0, 45, 1529, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 67, 67, 2982173, 2158877, 2158877, 3002653, 2158877, 3047709, 3064093, 3076381, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3203357, 2523274, 2527370, 2158730, 2158730, 2576522, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2908298, 2494749, 2158877, 2158877, 2158877, 2523421, 2527517, 2158877, 2158877, 2576669, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 40976, 0, 18, 18, 4321280, 2224253, 2232448, 4329472, 2232448, 2158730, 2498698, 2158730, 2158730, 2158730, 2158730, 2568330, 2158730, 2592906, 2625674, 2158730, 2158730, 2674826, 2736266, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2158730, 2912394, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3109002, 2158730, 2158730, 3133578, 3145866, 3154058, 2375680, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375965, 2380061, 2158877, 2158877, 2421021, 2158877, 2449693, 2158877, 2158877, 2158877, 3117341, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3104906, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158877, 2498845, 2158877, 2158877, 0, 2158877, 2158877, 2568477, 2158877, 2593053, 2625821, 2158877, 2158877, 2674973, 0, 0, 0, 0, 97, 97, 1480, 97, 97, 97, 97, 97, 1485, 97, 97, 97, 0, 97, 97, 1729, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 311, 97, 97, 97, 97, 97, 97, 97, 97, 1520, 97, 97, 1523, 97, 97, 1526, 97, 2736413, 2158877, 2158877, 0, 2158877, 2912541, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3109149, 2158877, 2158877, 3014941, 2158877, 2158877, 3051805, 2158877, 2158877, 3100957, 2158877, 2158877, 3121437, 2158877, 2158877, 2158877, 3150109, 3133725, 3146013, 3154205, 2158730, 2408586, 2416778, 2158730, 2465930, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3018890, 2158730, 3043466, 2158730, 2158730, 2158730, 2158730, 3080330, 2633866, 2658442, 2740362, 2744458, 2834570, 2949258, 2158730, 2986122, 2158730, 2998410, 2158730, 2158730, 2158730, 3129482, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158877, 2408733, 2416925, 2158877, 2466077, 2158877, 2158877, 3170589, 3174685, 2158877, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2424970, 2158730, 2158730, 2158730, 2158730, 2707594, 2732170, 2158730, 2158730, 2158730, 2822282, 2826378, 2158730, 2896010, 2158730, 2158730, 2924682, 2949405, 2158877, 2986269, 2158877, 2998557, 2158877, 2158877, 2158877, 3129629, 2158730, 2158730, 2478218, 2158730, 2158730, 2158730, 2535562, 2543754, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3117194, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 3014656, 2207744, 2207744, 3051520, 2207744, 2207744, 3100672, 2207744, 2207744, 3121152, 2207744, 2207744, 2207744, 2207744, 2207744, 2584576, 2207744, 2609152, 2207744, 2207744, 2629632, 2207744, 2207744, 2207744, 2686976, 2207744, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158877, 2158877, 2478365, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2158730, 2482314, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 823, 0, 825, 2158730, 2158730, 2158730, 2990218, 2158730, 2158730, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 135, 0, 2207744, 2207744, 2990080, 2207744, 2207744, 2158877, 2158877, 2482461, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2429066, 2158730, 2515082, 2158730, 2588810, 2158730, 2838666, 2158730, 2158730, 2158730, 3010698, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158877, 2429213, 2158877, 2515229, 0, 0, 2158877, 2588957, 2158877, 0, 2838813, 2158877, 2158877, 2158877, 3010845, 2158730, 2506890, 2158730, 2158730, 2158730, 2748554, 2756746, 2777226, 2801802, 2158730, 2158730, 2158730, 2863242, 2891914, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2564234, 2158730, 2158730, 2158730, 2158730, 2158730, 2597002, 2158730, 2158730, 2158730, 3006464, 2384157, 0, 0, 2158877, 2158877, 2158877, 2158877, 3006749, 2158730, 2637962, 2953354, 2158730, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158877, 2638109, 2953501, 2158877, 2539658, 2158730, 2539520, 2207744, 0, 0, 2539805, 2158877, 2158730, 2158730, 2158730, 2977930, 2158730, 2158730, 2158730, 2158730, 3039370, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3158154, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2965642, 2965504, 2965789, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1484, 97, 97, 97, 97, 2158592, 18, 0, 122880, 0, 0, 0, 77824, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 356, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1427, 67, 67, 67, 67, 67, 1432, 67, 67, 67, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 122880, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 1322, 550, 0, 286, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 4329472, 27, 27, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 542, 0, 0, 0, 542, 0, 544, 0, 0, 0, 544, 0, 550, 0, 0, 0, 0, 0, 97, 97, 1610, 97, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 237568, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 192512, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 94, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 96, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 12378, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 126, 126, 126, 126, 90143, 0, 0, 2170880, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 20480, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 241664, 102439, 106538, 98347, 0, 0, 20568, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 200797, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 0, 0, 44, 0, 0, 20575, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 41, 41, 41, 0, 0, 1126400, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 89, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 131201, 27, 27, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 208896, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 32768, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2433024, 2158592, 2453504, 2461696, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 245783, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 221184, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 180224, 40976, 18, 18, 36884, 155648, 45078, 0, 24, 24, 217088, 27, 27, 27, 217088, 90143, 0, 0, 2170880, 0, 0, 828, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 233472, 0, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, 45, 45, 45, 727, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 45, 1808, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 0, 0, 97, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1787, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 2029, 45, 67, 67, 67, 67, 2033, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 1798, 45, 45, 1800, 45, 45, 0, 1472, 0, 0, 0, 0, 0, 1474, 0, 0, 0, 0, 0, 1476, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 1320, 97, 97, 0, 0, 97, 97, 97, 97, 1786, 97, 0, 0, 97, 97, 0, 1790, 1527, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 67, 24850, 24850, 12564, 12564, 0, 57889, 281, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 1785, 97, 97, 0, 0, 97, 97, 0, 97, 97, 1979, 97, 97, 45, 45, 1983, 45, 1984, 45, 45, 45, 45, 45, 652, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 690, 45, 45, 694, 45, 45, 40976, 19, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 262144, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 46, 67, 98, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 45, 67, 97, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 258048, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 1122423, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 1114152, 1114152, 1114152, 0, 0, 1114112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 37, 102439, 106538, 98347, 0, 0, 204800, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 57436, 40976, 18, 36884, 45078, 24, 27, 33, 33, 0, 33, 33, 33, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 124, 124, 124, 127, 127, 127, 127, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158877, 2158877, 2158877, 2388253, 2158877, 2158877, 2158877, 2158877, 2158877, 2781469, 2793757, 2158877, 2818333, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2867485, 2158877, 2904349, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3096861, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2441501, 2445597, 2158877, 2158877, 2158877, 2158877, 2158877, 40976, 122, 123, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 936, 2158592, 4243810, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 935, 45, 45, 45, 715, 45, 45, 45, 45, 45, 45, 45, 723, 45, 45, 45, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 45, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 47, 68, 99, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 48, 69, 100, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 49, 70, 101, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 50, 71, 102, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 51, 72, 103, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 52, 73, 104, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 53, 74, 105, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 54, 75, 106, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 55, 76, 107, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 56, 77, 108, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 57, 78, 109, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 58, 79, 110, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 59, 80, 111, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 60, 81, 112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 61, 82, 113, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 62, 83, 114, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 63, 84, 115, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 64, 85, 116, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 65, 86, 117, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 66, 87, 118, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 0, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1321, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 131, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 145, 149, 45, 45, 45, 45, 45, 174, 45, 179, 45, 185, 45, 188, 45, 45, 202, 67, 255, 67, 67, 269, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 292, 296, 97, 97, 97, 97, 97, 321, 97, 326, 97, 332, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 646, 335, 97, 97, 349, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 437, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 523, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 511, 67, 67, 67, 97, 97, 97, 620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1501, 1502, 97, 793, 67, 67, 796, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 808, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 2052, 67, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 830, 97, 97, 97, 97, 97, 97, 97, 97, 97, 315, 97, 97, 97, 97, 97, 97, 841, 97, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 867, 97, 97, 97, 97, 97, 97, 97, 891, 97, 97, 894, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 906, 45, 937, 45, 45, 940, 45, 45, 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 734, 735, 67, 737, 67, 738, 67, 740, 67, 67, 67, 45, 967, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 435, 45, 45, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1081, 13112, 1085, 54074, 1089, 0, 0, 0, 0, 0, 0, 363, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1674, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1913, 67, 1914, 67, 67, 67, 1918, 67, 67, 97, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 630, 97, 97, 97, 97, 97, 1169, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1534, 45, 45, 45, 45, 45, 1538, 45, 45, 45, 45, 1233, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 742, 67, 45, 45, 1191, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 454, 67, 67, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2050, 0, 97, 97, 45, 45, 45, 732, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, 67, 67, 1293, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 2158592, 2158592, 2158592, 2404352, 2412544, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1737, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 647, 45, 45, 1387, 45, 45, 1391, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 1400, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 941, 45, 943, 45, 45, 45, 45, 45, 45, 951, 45, 67, 1438, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1447, 67, 67, 67, 67, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, 67, 97, 1491, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1736, 97, 45, 45, 1541, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 677, 45, 45, 67, 1581, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 791, 792, 67, 67, 67, 67, 1598, 67, 1600, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 97, 97, 97, 1727, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 67, 67, 97, 1879, 97, 1881, 97, 0, 1884, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 1842, 97, 97, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1928, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1903, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 1971, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1381, 45, 45, 45, 45, 1976, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1747, 809, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 907, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1478, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 477, 67, 67, 67, 67, 67, 67, 1294, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1324, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1374, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 45, 45, 45, 45, 45, 45, 45, 1908, 45, 45, 1910, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1919, 67, 0, 0, 97, 97, 97, 97, 45, 2048, 67, 2049, 0, 0, 97, 2051, 45, 45, 45, 939, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 397, 45, 45, 45, 1921, 67, 67, 1923, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1947, 45, 1935, 0, 0, 0, 97, 1939, 97, 97, 1941, 97, 45, 45, 45, 45, 45, 45, 382, 389, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 1812, 67, 67, 67, 67, 67, 256, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 336, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 371, 373, 45, 45, 45, 955, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 45, 457, 459, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 478, 67, 67, 482, 67, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 1828, 97, 554, 556, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 575, 97, 97, 579, 97, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 330, 97, 97, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 856, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1642, 97, 1644, 97, 97, 890, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 67, 67, 67, 67, 1065, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 97, 97, 1505, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1617, 97, 97, 1635, 0, 1637, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 885, 97, 97, 97, 97, 67, 67, 1704, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 565, 572, 97, 97, 97, 97, 97, 97, 97, 97, 1832, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1946, 45, 45, 67, 67, 67, 67, 67, 97, 1926, 97, 1927, 97, 0, 0, 0, 97, 97, 1934, 2043, 0, 0, 97, 97, 97, 2047, 45, 45, 67, 67, 0, 1832, 97, 97, 45, 45, 45, 981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 372, 45, 45, 45, 45, 1661, 1662, 45, 45, 45, 45, 45, 1666, 45, 45, 45, 45, 45, 1673, 45, 1675, 45, 45, 45, 45, 45, 45, 45, 67, 1426, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 67, 67, 45, 418, 45, 45, 420, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 45, 959, 45, 45, 962, 45, 45, 45, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 483, 67, 67, 67, 67, 504, 67, 67, 506, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 580, 97, 97, 97, 97, 601, 97, 97, 603, 97, 97, 606, 97, 97, 97, 97, 97, 97, 848, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1498, 97, 97, 97, 97, 97, 97, 45, 45, 714, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 989, 990, 45, 67, 67, 67, 67, 67, 1011, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 467, 67, 67, 67, 67, 67, 67, 67, 45, 45, 1179, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 1004, 67, 1217, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 728, 67, 1461, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 97, 1516, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 67, 67, 67, 1705, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1715, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1380, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1887, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 2006, 45, 45, 1907, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1920, 67, 97, 0, 2035, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 1428, 67, 67, 67, 67, 67, 67, 1435, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 146, 45, 152, 45, 45, 165, 45, 175, 45, 180, 45, 45, 187, 190, 195, 45, 203, 254, 257, 262, 67, 270, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 293, 97, 299, 97, 97, 312, 97, 322, 97, 327, 97, 97, 334, 337, 342, 97, 350, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 484, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 499, 97, 581, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 648, 45, 650, 45, 651, 45, 653, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1954, 67, 67, 67, 1958, 67, 67, 67, 67, 67, 67, 67, 768, 67, 67, 67, 67, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 680, 45, 45, 45, 45, 45, 45, 45, 45, 688, 689, 691, 45, 45, 45, 45, 45, 983, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 947, 45, 45, 45, 45, 952, 45, 45, 698, 699, 45, 45, 702, 703, 45, 45, 45, 45, 45, 45, 45, 711, 744, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 761, 67, 67, 67, 67, 765, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 775, 776, 778, 67, 67, 67, 67, 67, 67, 785, 786, 67, 67, 789, 790, 67, 67, 67, 67, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1775, 97, 97, 97, 67, 67, 67, 67, 67, 798, 67, 67, 67, 802, 67, 67, 67, 67, 67, 67, 67, 67, 1465, 67, 67, 1468, 67, 67, 1471, 67, 67, 810, 67, 67, 67, 67, 67, 67, 67, 67, 67, 821, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 833, 97, 835, 97, 836, 97, 838, 97, 97, 0, 0, 97, 97, 97, 2002, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1740, 45, 45, 45, 1744, 45, 45, 45, 97, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 0, 1717, 1718, 97, 97, 97, 97, 97, 1722, 97, 0, 0, 859, 97, 97, 97, 97, 863, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 873, 874, 876, 97, 97, 97, 97, 97, 97, 883, 884, 97, 97, 887, 888, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 225280, 0, 365, 0, 367, 0, 45, 45, 45, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1199, 45, 45, 45, 45, 45, 97, 97, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 919, 638, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2425117, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2597149, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2642205, 2158877, 2158877, 2158877, 2158877, 2158877, 3158301, 0, 2375818, 2379914, 2158730, 2158730, 2420874, 2158730, 2449546, 2158730, 2158730, 953, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 965, 978, 45, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1027, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 1077, 1078, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 139, 2158730, 2158730, 2158730, 2404490, 2412682, 1113, 97, 97, 97, 97, 97, 97, 1121, 97, 1123, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1540, 1155, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 1168, 97, 97, 1171, 1172, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 45, 1219, 45, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 168, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1046, 67, 67, 1254, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 806, 807, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 1354, 97, 97, 97, 1359, 97, 97, 97, 0, 97, 97, 97, 97, 1640, 97, 97, 97, 97, 97, 97, 97, 897, 97, 97, 97, 902, 97, 97, 97, 97, 97, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, 1371, 97, 97, 97, 0, 97, 97, 97, 1730, 97, 97, 97, 97, 97, 97, 97, 97, 915, 97, 97, 97, 97, 0, 360, 0, 67, 67, 67, 1440, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 1019, 67, 67, 67, 67, 67, 1453, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 97, 97, 97, 1493, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 97, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1514, 67, 67, 67, 67, 1584, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 67, 67, 783, 67, 67, 67, 788, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 1601, 67, 67, 67, 1604, 67, 1606, 1607, 67, 1472, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 1614, 97, 97, 97, 97, 45, 45, 1850, 45, 45, 45, 45, 1855, 45, 45, 45, 45, 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1229, 97, 1618, 97, 97, 97, 97, 97, 97, 97, 1625, 97, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 447, 45, 45, 45, 45, 45, 67, 67, 1633, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1643, 1645, 97, 97, 0, 0, 97, 97, 1784, 97, 97, 97, 0, 0, 97, 97, 0, 97, 1894, 1895, 97, 1897, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 656, 45, 45, 45, 45, 45, 45, 97, 1648, 97, 1650, 1651, 97, 0, 45, 45, 45, 1654, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 664, 45, 45, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 1669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1005, 67, 67, 1681, 67, 67, 67, 67, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 1060, 67, 67, 97, 97, 1713, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1378, 45, 45, 45, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 1549, 45, 45, 45, 45, 45, 97, 97, 1780, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2027, 2028, 45, 45, 67, 67, 2031, 2032, 67, 45, 45, 1804, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1917, 67, 67, 67, 67, 67, 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1708, 97, 97, 97, 97, 97, 45, 45, 1862, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, 67, 1877, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1839, 0, 0, 97, 97, 97, 97, 1936, 0, 0, 97, 97, 97, 97, 97, 97, 1943, 1944, 1945, 45, 45, 45, 45, 670, 45, 45, 45, 45, 674, 45, 45, 45, 45, 678, 45, 1948, 45, 1950, 45, 45, 45, 45, 1955, 1956, 1957, 67, 67, 67, 1960, 67, 1962, 67, 67, 67, 67, 1967, 1968, 1969, 97, 0, 0, 0, 97, 97, 1974, 97, 0, 1936, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1906, 0, 1977, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1746, 45, 45, 45, 45, 2011, 67, 67, 2013, 67, 67, 67, 2017, 97, 97, 0, 0, 2021, 97, 8192, 97, 97, 2025, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1916, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 140, 45, 45, 45, 1180, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 45, 45, 45, 387, 45, 392, 45, 45, 396, 45, 45, 399, 45, 45, 67, 207, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 67, 67, 67, 67, 67, 0, 97, 97, 287, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1656, 1657, 45, 376, 45, 45, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1406, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 462, 67, 67, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 817, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 97, 559, 97, 97, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 896, 97, 97, 97, 900, 97, 97, 97, 97, 97, 97, 912, 914, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 391, 45, 45, 45, 45, 45, 45, 45, 45, 713, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 1140, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 636, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, 67, 67, 1363, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 889, 97, 97, 97, 1714, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 926, 45, 45, 45, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 45, 45, 45, 45, 45, 944, 45, 45, 45, 45, 45, 45, 45, 45, 1676, 45, 45, 45, 45, 45, 45, 67, 97, 97, 97, 1833, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1902, 45, 45, 45, 45, 45, 957, 45, 45, 45, 45, 961, 45, 963, 45, 45, 45, 67, 97, 2034, 0, 97, 97, 97, 97, 97, 2040, 45, 45, 45, 2042, 67, 67, 67, 67, 67, 67, 1574, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 799, 67, 67, 67, 804, 67, 67, 67, 67, 67, 67, 67, 1298, 0, 0, 0, 1304, 0, 0, 0, 1310, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 1414, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 428, 45, 45, 45, 45, 45, 57889, 0, 0, 54074, 54074, 550, 831, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 578, 97, 45, 45, 968, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1228, 45, 45, 67, 67, 67, 67, 67, 25398, 1082, 13112, 1086, 54074, 1090, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 67, 67, 67, 67, 1464, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 67, 97, 97, 97, 97, 1519, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, 97, 0, 0, 0, 0, 1528, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 45, 1554, 45, 45, 45, 45, 45, 45, 45, 45, 1562, 45, 45, 1565, 45, 45, 45, 45, 683, 45, 45, 45, 687, 45, 45, 692, 45, 45, 45, 45, 45, 1953, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 1568, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1594, 97, 97, 1649, 97, 97, 97, 0, 45, 45, 1653, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 45, 45, 1670, 45, 1672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 736, 67, 67, 67, 67, 67, 741, 67, 67, 67, 1680, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 67, 1692, 67, 67, 67, 67, 67, 67, 67, 1697, 67, 1699, 67, 67, 67, 67, 67, 67, 1012, 67, 67, 67, 67, 67, 67, 67, 67, 67, 468, 475, 67, 67, 67, 67, 67, 67, 1769, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 624, 97, 97, 97, 97, 97, 97, 634, 97, 97, 1792, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 958, 45, 45, 45, 45, 45, 45, 964, 45, 150, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 977, 204, 45, 67, 67, 67, 217, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 271, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 351, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1398, 45, 45, 45, 153, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 660, 661, 45, 45, 205, 45, 67, 67, 67, 67, 220, 67, 228, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 280, 94, 0, 0, 67, 67, 67, 67, 67, 272, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 352, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 439, 45, 45, 45, 45, 45, 445, 45, 45, 45, 452, 45, 45, 67, 67, 212, 216, 67, 67, 67, 67, 67, 241, 67, 246, 67, 252, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 1013, 67, 67, 1016, 67, 67, 67, 67, 67, 521, 67, 67, 525, 67, 67, 67, 67, 67, 531, 67, 67, 67, 538, 67, 0, 0, 2046, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 1421, 97, 97, 583, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1384, 97, 618, 97, 97, 622, 97, 97, 97, 97, 97, 628, 97, 97, 97, 635, 97, 18, 131427, 0, 0, 0, 639, 0, 132, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 932, 45, 45, 45, 45, 45, 1544, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1194, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 45, 45, 45, 45, 67, 67, 45, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 696, 45, 45, 45, 701, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 194, 45, 45, 45, 729, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 805, 67, 67, 67, 67, 67, 67, 67, 1587, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162968, 0, 0, 67, 67, 67, 67, 67, 814, 816, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1008, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1020, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1429, 67, 1430, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 1076, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1102, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1124, 97, 1126, 97, 97, 1114, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 97, 1156, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 97, 97, 1170, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 1532, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 45, 172, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 706, 45, 45, 709, 45, 45, 1177, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 1204, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 45, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 67, 1237, 67, 67, 67, 67, 67, 67, 1053, 1054, 67, 67, 67, 67, 67, 67, 1061, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1289, 67, 67, 67, 1292, 97, 97, 97, 97, 1339, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 97, 45, 1849, 45, 1851, 45, 45, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 726, 45, 1385, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1188, 45, 45, 1401, 1402, 45, 45, 45, 45, 1405, 45, 45, 45, 45, 45, 45, 45, 45, 1752, 45, 45, 45, 45, 45, 67, 67, 1410, 45, 45, 45, 1413, 45, 1415, 45, 45, 45, 45, 45, 45, 1419, 45, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 2019, 0, 97, 67, 67, 67, 1452, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 1259, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 1460, 67, 1462, 67, 67, 67, 67, 67, 67, 1466, 67, 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 67, 67, 0, 1300, 0, 0, 0, 1306, 0, 0, 0, 97, 97, 97, 1506, 97, 97, 97, 97, 97, 97, 97, 97, 1512, 97, 97, 97, 0, 1728, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 1515, 97, 1517, 97, 97, 97, 97, 97, 97, 1521, 97, 97, 97, 97, 97, 97, 0, 45, 1652, 45, 45, 45, 1655, 45, 45, 45, 45, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1552, 1553, 45, 45, 45, 1556, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 45, 67, 67, 67, 67, 1572, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 67, 1605, 67, 67, 67, 0, 67, 1582, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1580, 67, 67, 1596, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 542, 0, 544, 67, 67, 67, 67, 1759, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 533, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 1777, 97, 97, 97, 1793, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 998, 45, 45, 1001, 1002, 45, 45, 67, 67, 45, 1861, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1871, 67, 1873, 1874, 67, 0, 97, 45, 67, 0, 97, 45, 67, 16384, 97, 45, 67, 97, 0, 0, 0, 1473, 0, 1082, 0, 0, 0, 1475, 0, 1086, 0, 0, 0, 1477, 1876, 67, 97, 97, 97, 97, 97, 1883, 0, 1885, 97, 97, 97, 1889, 0, 0, 0, 286, 0, 0, 0, 286, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 126, 126, 126, 2053, 0, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 2039, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 1246, 67, 67, 1249, 1250, 67, 67, 67, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 141, 45, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 1189, 45, 45, 155, 45, 45, 45, 45, 45, 45, 45, 45, 45, 191, 45, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1753, 45, 45, 45, 67, 67, 45, 45, 67, 208, 67, 67, 67, 222, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 258, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 288, 97, 97, 97, 302, 97, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 338, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 370, 45, 45, 45, 45, 716, 45, 45, 45, 45, 45, 722, 45, 45, 45, 45, 45, 45, 1912, 67, 67, 67, 67, 67, 67, 67, 67, 67, 819, 67, 67, 25398, 542, 13112, 544, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1409, 45, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 1274, 67, 67, 67, 1279, 67, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 553, 97, 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1138, 97, 97, 97, 97, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 0, 1834, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 353, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 67, 67, 747, 748, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1302, 0, 0, 0, 1308, 0, 67, 794, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 97, 97, 97, 845, 846, 97, 97, 97, 97, 853, 97, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 97, 892, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 45, 992, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1239, 67, 67, 67, 1063, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1301, 0, 0, 0, 1307, 0, 0, 97, 1141, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1152, 97, 97, 0, 0, 97, 97, 2001, 0, 97, 2003, 97, 97, 97, 45, 45, 45, 1739, 45, 45, 45, 1742, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1157, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 1151, 97, 97, 97, 1253, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 539, 45, 1423, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 1700, 67, 1702, 67, 67, 1439, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 97, 97, 1492, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 611, 97, 97, 1703, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 852, 97, 97, 97, 97, 97, 97, 45, 1949, 45, 1951, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1961, 67, 0, 97, 45, 67, 0, 97, 2060, 2061, 0, 2062, 45, 67, 97, 0, 0, 2036, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 223, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, 1963, 67, 67, 67, 97, 97, 97, 97, 0, 1972, 0, 97, 97, 97, 1975, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 931, 45, 45, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 45, 1989, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1996, 97, 18, 131427, 0, 0, 360, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 930, 45, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, 1998, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1985, 45, 1986, 45, 45, 45, 156, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 679, 131427, 0, 358, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 381, 45, 45, 45, 45, 45, 45, 45, 45, 45, 400, 45, 45, 419, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 436, 67, 67, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 25398, 542, 13112, 544, 67, 67, 522, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 67, 0, 1299, 0, 0, 0, 1305, 0, 0, 0, 97, 97, 619, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 97, 1105, 97, 97, 97, 97, 1109, 97, 97, 97, 67, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 0, 97, 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2041, 67, 67, 67, 67, 67, 780, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 97, 97, 97, 878, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 0, 45, 979, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1094, 0, 0, 0, 1092, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1486, 97, 1489, 97, 97, 97, 1117, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 1146, 97, 97, 97, 97, 97, 97, 97, 97, 881, 97, 97, 97, 886, 97, 97, 97, 1311, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1615, 97, 97, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 97, 1847, 97, 45, 45, 45, 45, 1852, 45, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, 67, 67, 67, 67, 67, 1868, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1882, 0, 0, 0, 97, 97, 97, 97, 0, 1891, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1929, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1900, 45, 1901, 45, 45, 45, 1905, 45, 67, 2054, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 2037, 2038, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1774, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 142, 45, 45, 45, 1412, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 157, 45, 45, 171, 45, 45, 45, 182, 45, 45, 45, 45, 200, 45, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 45, 45, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 1214, 45, 45, 45, 67, 209, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 249, 67, 0, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 97, 0, 0, 1937, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1741, 45, 45, 45, 45, 45, 45, 67, 67, 67, 267, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 289, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 329, 97, 97, 0, 0, 97, 1783, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2026, 45, 45, 45, 45, 67, 2030, 67, 67, 67, 67, 67, 67, 1041, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1044, 67, 67, 67, 67, 67, 67, 97, 97, 347, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1420, 45, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 840, 67, 1007, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 67, 67, 67, 1052, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1031, 67, 67, 67, 67, 67, 97, 97, 97, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 1190, 45, 45, 45, 45, 45, 1195, 45, 1197, 45, 45, 45, 45, 1201, 45, 45, 45, 45, 1952, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 250, 67, 67, 67, 1255, 67, 1257, 67, 67, 67, 67, 1261, 67, 67, 67, 67, 67, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 0, 24851, 12565, 0, 0, 0, 0, 28809, 53532, 67, 67, 1267, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1696, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 1281, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1070, 67, 67, 67, 67, 67, 1335, 97, 1337, 97, 97, 97, 97, 1341, 97, 97, 97, 97, 97, 97, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 1347, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, 1361, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 544, 0, 550, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 53530, 97, 97, 97, 1365, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 608, 97, 97, 97, 45, 45, 1424, 45, 1425, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1058, 67, 67, 67, 67, 45, 1555, 45, 45, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 45, 45, 45, 45, 67, 67, 1570, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 1595, 67, 67, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 97, 97, 97, 1636, 97, 97, 97, 1639, 97, 97, 1641, 97, 97, 97, 97, 97, 97, 1173, 0, 921, 0, 0, 0, 0, 0, 0, 45, 67, 67, 67, 1693, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 67, 67, 1773, 67, 97, 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 1860, 45, 45, 67, 67, 1865, 67, 67, 67, 67, 1870, 67, 67, 67, 67, 1875, 67, 67, 97, 97, 1880, 97, 97, 0, 0, 0, 97, 97, 1888, 97, 0, 0, 0, 1938, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1854, 45, 45, 45, 45, 45, 45, 45, 1909, 45, 45, 1911, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 1924, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1898, 45, 45, 45, 45, 45, 45, 1904, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 16384, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1724, 2008, 2009, 45, 45, 67, 67, 67, 2014, 2015, 67, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 2022, 0, 2023, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1869, 67, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 147, 151, 154, 45, 162, 45, 45, 176, 178, 181, 45, 45, 45, 192, 196, 45, 45, 45, 45, 2012, 67, 67, 67, 67, 67, 67, 2018, 97, 0, 0, 97, 1978, 97, 97, 97, 1982, 45, 45, 45, 45, 45, 45, 45, 45, 45, 972, 973, 45, 45, 45, 45, 45, 67, 259, 263, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 294, 298, 301, 97, 309, 97, 97, 323, 325, 328, 97, 97, 97, 97, 97, 560, 97, 97, 97, 569, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 339, 343, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 519, 97, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 616, 45, 649, 45, 45, 45, 45, 45, 654, 45, 45, 45, 45, 45, 45, 45, 45, 1393, 45, 45, 45, 45, 45, 45, 45, 45, 1209, 45, 45, 45, 45, 45, 45, 45, 67, 763, 67, 67, 67, 67, 67, 67, 67, 67, 770, 67, 67, 67, 774, 67, 0, 2045, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 213, 67, 219, 67, 67, 232, 67, 242, 67, 247, 67, 67, 67, 779, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 67, 811, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 834, 97, 97, 97, 97, 97, 839, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 645, 97, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 868, 97, 97, 97, 872, 97, 97, 877, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 97, 97, 97, 97, 909, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 18, 18, 24, 24, 27, 27, 27, 1036, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1047, 67, 67, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1033, 67, 67, 67, 97, 97, 1130, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 67, 67, 67, 1295, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1317, 97, 97, 97, 97, 97, 97, 1375, 97, 97, 97, 0, 0, 0, 45, 1379, 45, 45, 45, 45, 45, 45, 422, 45, 45, 45, 429, 431, 45, 45, 45, 45, 0, 1090, 0, 0, 97, 1479, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1716, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1723, 0, 921, 29315, 0, 0, 0, 0, 45, 929, 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45, 45, 960, 45, 45, 45, 45, 45, 45, 97, 97, 97, 1738, 45, 45, 45, 45, 45, 45, 45, 1743, 45, 45, 45, 45, 166, 45, 45, 45, 45, 184, 186, 45, 45, 197, 45, 45, 97, 1779, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 640, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1803, 45, 45, 45, 45, 45, 1809, 45, 45, 45, 67, 67, 67, 1814, 67, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 67, 67, 67, 1818, 67, 67, 67, 67, 67, 1824, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1890, 0, 1829, 97, 97, 0, 0, 97, 97, 1836, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1987, 1845, 97, 97, 97, 45, 45, 45, 45, 45, 1853, 45, 45, 45, 1857, 45, 45, 45, 67, 1864, 67, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 1710, 1711, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1886, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1838, 0, 0, 0, 97, 1843, 97, 0, 1893, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 1931, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 67, 2044, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1660, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 453, 45, 455, 67, 67, 67, 67, 268, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 348, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 359, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 695, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 0, 921, 29315, 0, 925, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1811, 45, 67, 67, 67, 67, 67, 67, 1037, 67, 1039, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1095, 0, 0, 0, 1096, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 97, 1131, 97, 1133, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 1312, 0, 0, 0, 0, 1096, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1830, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1896, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 45, 133, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 401, 45, 45, 158, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1200, 45, 45, 45, 45, 206, 67, 67, 67, 67, 67, 225, 67, 67, 67, 67, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 57889, 0, 0, 54074, 54074, 550, 832, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1083, 13112, 1087, 54074, 1091, 0, 0, 0, 0, 0, 0, 1316, 0, 831, 97, 97, 97, 97, 97, 97, 97, 1174, 921, 0, 1175, 0, 0, 0, 0, 45, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 148, 67, 67, 264, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 295, 97, 97, 97, 97, 313, 97, 97, 97, 97, 331, 333, 97, 18, 131427, 356, 638, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 45, 45, 1530, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 988, 45, 45, 45, 97, 344, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 402, 404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 67, 438, 45, 45, 45, 45, 45, 45, 45, 45, 449, 450, 45, 45, 45, 67, 67, 214, 218, 221, 67, 229, 67, 67, 243, 245, 248, 67, 67, 67, 67, 67, 488, 490, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1071, 67, 1073, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 67, 67, 67, 535, 536, 67, 67, 67, 67, 67, 67, 1683, 1684, 67, 67, 67, 67, 1688, 1689, 67, 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 97, 97, 97, 585, 587, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 97, 97, 97, 97, 97, 97, 97, 621, 97, 97, 97, 97, 97, 97, 97, 97, 632, 633, 97, 97, 0, 0, 1782, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 712, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 725, 45, 45, 45, 163, 167, 173, 177, 45, 45, 45, 45, 45, 193, 45, 45, 45, 45, 982, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 1558, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 704, 705, 45, 45, 45, 45, 45, 45, 45, 45, 731, 45, 45, 45, 67, 67, 67, 67, 67, 739, 67, 67, 67, 67, 67, 67, 273, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 67, 67, 67, 764, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 812, 67, 67, 67, 67, 818, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 837, 97, 97, 97, 97, 97, 602, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 97, 97, 862, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1627, 97, 97, 97, 0, 97, 97, 97, 97, 910, 97, 97, 97, 97, 916, 97, 97, 97, 0, 0, 0, 97, 97, 1940, 97, 97, 1942, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 395, 45, 45, 45, 45, 966, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 67, 67, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1040, 67, 1042, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 97, 1706, 97, 97, 97, 1709, 97, 97, 97, 67, 67, 67, 67, 1051, 67, 67, 67, 67, 67, 1057, 67, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 1446, 67, 67, 67, 67, 67, 67, 67, 1297, 0, 0, 0, 1303, 0, 0, 0, 1309, 67, 67, 67, 67, 1079, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 1098, 97, 97, 97, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 97, 97, 1134, 97, 1136, 97, 1139, 97, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 1176, 0, 646, 45, 67, 67, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 67, 97, 1348, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1127, 97, 67, 1569, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1448, 1449, 67, 1816, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 1827, 97, 97, 0, 1781, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 1831, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1980, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45, 97, 1846, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 45, 45, 2010, 45, 67, 67, 67, 67, 67, 2016, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 2007, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 143, 45, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1813, 67, 67, 1815, 45, 45, 67, 210, 67, 67, 67, 67, 67, 67, 239, 67, 67, 67, 67, 67, 67, 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1445, 67, 67, 67, 67, 67, 67, 97, 97, 290, 97, 97, 97, 97, 97, 97, 319, 97, 97, 97, 97, 97, 97, 303, 97, 97, 317, 97, 97, 97, 97, 97, 97, 305, 97, 97, 97, 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 97, 97, 97, 375, 45, 45, 45, 379, 45, 45, 390, 45, 45, 394, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 461, 67, 67, 67, 465, 67, 67, 476, 67, 67, 480, 67, 67, 67, 67, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, 500, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 97, 97, 97, 558, 97, 97, 97, 562, 97, 97, 573, 97, 97, 577, 97, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 1638, 97, 97, 97, 97, 97, 97, 97, 97, 1646, 597, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1334, 45, 681, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 1399, 45, 45, 730, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1434, 67, 67, 67, 67, 67, 67, 750, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 45, 45, 993, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1238, 67, 67, 1006, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, 1048, 1049, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 1291, 67, 97, 97, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 920, 97, 97, 1142, 1143, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 97, 97, 97, 1158, 97, 97, 97, 1161, 97, 97, 97, 97, 1166, 97, 97, 97, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 45, 1218, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 67, 67, 67, 67, 67, 1269, 67, 67, 67, 67, 67, 67, 67, 67, 1278, 67, 67, 67, 67, 67, 67, 1761, 67, 67, 67, 67, 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 97, 97, 1349, 97, 97, 97, 97, 97, 97, 97, 97, 1358, 97, 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 926, 0, 0, 0, 45, 45, 1411, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1754, 45, 45, 67, 67, 1301, 0, 1307, 0, 1313, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 21054, 97, 97, 97, 97, 67, 1757, 67, 67, 67, 1760, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 1778, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 1820, 67, 1822, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1933, 97, 1892, 97, 97, 97, 97, 97, 97, 1899, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1925, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1796, 97, 45, 45, 45, 45, 45, 45, 45, 970, 45, 45, 45, 45, 45, 45, 45, 45, 1417, 45, 45, 45, 45, 45, 45, 45, 67, 1964, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1721, 97, 97, 0, 0, 1997, 97, 0, 0, 2e3, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 733, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 144, 45, 45, 45, 1805, 45, 1807, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 231, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 45, 45, 67, 211, 67, 67, 67, 67, 230, 234, 240, 244, 67, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, 67, 479, 67, 67, 67, 260, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 291, 97, 97, 97, 97, 310, 314, 320, 324, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 97, 97, 97, 1362, 340, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 360, 0, 362, 0, 365, 28809, 367, 139, 369, 45, 45, 45, 374, 67, 67, 460, 67, 67, 67, 67, 466, 67, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 67, 67, 67, 67, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 67, 1772, 67, 67, 97, 97, 97, 97, 97, 97, 97, 0, 921, 922, 1175, 0, 0, 0, 0, 45, 67, 502, 67, 67, 67, 67, 67, 67, 67, 508, 67, 67, 67, 515, 517, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1932, 97, 97, 0, 1999, 97, 97, 97, 0, 97, 97, 2004, 2005, 97, 45, 45, 45, 45, 1193, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 552, 97, 97, 97, 97, 97, 1377, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 97, 97, 557, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 97, 97, 1135, 97, 97, 97, 97, 97, 97, 97, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 1319, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1733, 97, 97, 97, 97, 97, 97, 1340, 97, 97, 97, 1343, 97, 97, 1345, 97, 1346, 97, 599, 97, 97, 97, 97, 97, 97, 97, 605, 97, 97, 97, 612, 614, 97, 97, 97, 97, 97, 1794, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1207, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 745, 67, 67, 67, 67, 751, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 762, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 777, 67, 67, 781, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1592, 1593, 67, 67, 97, 843, 97, 97, 97, 97, 849, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1510, 97, 97, 97, 97, 97, 97, 97, 860, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1797, 45, 45, 45, 45, 1801, 45, 97, 875, 97, 97, 879, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 991, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 215, 67, 67, 67, 67, 233, 67, 67, 67, 67, 251, 253, 1022, 67, 67, 67, 1026, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 1038, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 67, 1064, 67, 67, 67, 1067, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 1096, 0, 921, 29315, 0, 0, 0, 0, 928, 45, 45, 45, 45, 45, 934, 45, 45, 45, 164, 45, 45, 45, 45, 45, 45, 45, 45, 45, 198, 45, 45, 45, 378, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 398, 45, 97, 97, 1116, 97, 97, 97, 1120, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1147, 1148, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 0, 45, 1178, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1185, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 45, 451, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, 67, 1260, 67, 67, 67, 1263, 67, 67, 1265, 1203, 45, 45, 1205, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 67, 1266, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 481, 67, 45, 1386, 45, 1389, 45, 45, 45, 45, 1394, 45, 45, 45, 1397, 45, 45, 45, 45, 995, 45, 997, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1915, 67, 67, 67, 67, 67, 1422, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1433, 67, 1436, 67, 67, 67, 67, 1441, 67, 67, 67, 1444, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 97, 1494, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1571, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1583, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, 67, 67, 67, 97, 1634, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1125, 97, 97, 97, 1647, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 1658, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1668, 1712, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 1835, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1844, 97, 97, 1726, 0, 97, 97, 97, 97, 97, 1732, 97, 1734, 97, 97, 97, 97, 97, 300, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 866, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1758, 67, 67, 67, 1762, 67, 67, 67, 67, 67, 67, 67, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1771, 67, 67, 67, 97, 97, 97, 97, 97, 1776, 97, 97, 97, 97, 297, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 67, 67, 67, 1966, 97, 97, 97, 1970, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1837, 97, 0, 1840, 1841, 97, 97, 97, 1988, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1994, 1995, 67, 97, 97, 97, 97, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 917, 97, 97, 0, 0, 0, 67, 67, 265, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 345, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 361, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 414, 45, 45, 45, 45, 377, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 433, 45, 45, 45, 67, 67, 67, 67, 67, 463, 67, 67, 67, 472, 67, 67, 67, 67, 67, 67, 67, 527, 67, 67, 67, 67, 67, 67, 537, 67, 540, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 564, 97, 97, 97, 97, 97, 97, 97, 637, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 927, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 67, 67, 67, 67, 1240, 45, 697, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 708, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 45, 45, 384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1210, 45, 45, 45, 45, 45, 45, 67, 67, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1164, 97, 97, 97, 67, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1687, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 1097, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1450, 45, 45, 1388, 45, 1390, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1236, 67, 67, 67, 67, 67, 1437, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 1490, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1503, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1930, 0, 97, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 67, 67, 1965, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 1719, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 1382, 45, 1383, 45, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1563, 45, 45, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 341, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 1099, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1333, 97, 1230, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1992, 67, 1993, 67, 67, 67, 97, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1665, 45, 45, 45, 45, 45, 131427, 357, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 416, 45, 45, 45, 440, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1990, 67, 1991, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1707, 97, 97, 97, 97, 97, 97, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1030, 67, 1032, 67, 67, 67, 67, 598, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1632, 0, 921, 29315, 923, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 425, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1093, 0, 0, 0, 0, 0, 97, 1609, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1369, 97, 97, 97, 1372, 97, 97, 67, 67, 266, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 346, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1677, 45, 45, 45, 45, 67, 45, 45, 954, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 67, 456, 67, 67, 67, 67, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1069, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 97, 97, 97, 97, 97, 1376, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 1559, 1561, 45, 45, 45, 1564, 45, 1566, 1567, 45, 67, 67, 67, 67, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 1252, 97, 1725, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, 97, 1630, 0, 0, 94242, 0, 0, 0, 2211840, 0, 1118208, 0, 0, 0, 0, 2158592, 2158731, 2158592, 2158592, 2158592, 3117056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3018752, 2158592, 3043328, 2158592, 2158592, 2158592, 2158592, 3080192, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158878, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2605056, 2158592, 2158592, 2207744, 0, 542, 0, 544, 0, 0, 2166784, 0, 0, 0, 550, 0, 0, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2867200, 2158592, 2904064, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 0, 0, 1130496, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 139, 0, 0, 0, 139, 0, 2367488, 2207744, 0, 0, 0, 0, 176128, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 1508, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 67, 24850, 24850, 12564, 12564, 0, 0, 0, 0, 0, 53531, 53531, 0, 286, 97, 97, 97, 97, 97, 1144, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 1154, 57889, 0, 0, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 97, 576, 97, 97, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 0, 0, 139264, 0, 921, 29315, 0, 0, 926, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 719, 720, 45, 45, 45, 45, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 942, 45, 45, 946, 45, 45, 45, 950, 45, 45, 0, 2146304, 2146304, 0, 0, 0, 0, 2224128, 2224128, 2224128, 2232320, 2232320, 2232320, 2232320, 0, 0, 1301, 0, 0, 0, 0, 0, 1307, 0, 0, 0, 0, 0, 1313, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1318, 97, 97, 97, 97, 97, 97, 1795, 97, 97, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 67, 67, 2158592, 2146304, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 924, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1e3, 45, 45, 45, 45, 67, 67], r.EXPECTED = [290, 300, 304, 353, 296, 309, 305, 319, 315, 324, 328, 352, 354, 334, 338, 330, 320, 345, 349, 293, 358, 362, 341, 366, 312, 370, 374, 378, 382, 386, 390, 394, 398, 737, 402, 634, 439, 604, 634, 634, 634, 634, 408, 634, 634, 634, 404, 634, 634, 634, 457, 634, 634, 963, 634, 634, 413, 634, 634, 634, 634, 634, 634, 634, 663, 418, 422, 903, 902, 426, 431, 548, 634, 437, 521, 919, 443, 615, 409, 449, 455, 624, 731, 751, 634, 461, 465, 672, 470, 469, 474, 481, 485, 477, 489, 493, 629, 542, 497, 505, 603, 602, 991, 648, 510, 804, 634, 515, 958, 526, 525, 530, 768, 634, 546, 552, 711, 710, 593, 558, 562, 618, 566, 570, 574, 578, 582, 586, 590, 608, 612, 660, 822, 821, 634, 622, 596, 444, 628, 533, 724, 633, 640, 653, 647, 652, 536, 1008, 451, 450, 445, 657, 670, 676, 685, 689, 693, 697, 701, 704, 707, 715, 719, 798, 815, 634, 723, 762, 996, 634, 728, 969, 730, 735, 908, 634, 741, 679, 889, 511, 747, 634, 750, 755, 499, 666, 499, 501, 759, 772, 776, 780, 634, 787, 784, 797, 802, 809, 808, 427, 814, 1006, 517, 634, 519, 853, 634, 813, 850, 793, 634, 819, 826, 833, 832, 837, 843, 847, 857, 861, 863, 867, 871, 875, 879, 883, 643, 887, 539, 980, 979, 634, 893, 944, 634, 900, 896, 634, 907, 933, 506, 912, 917, 828, 433, 636, 635, 554, 961, 923, 930, 927, 937, 941, 634, 634, 634, 974, 948, 952, 985, 913, 968, 967, 743, 634, 973, 839, 634, 978, 599, 634, 984, 989, 765, 444, 995, 1e3, 634, 1003, 790, 955, 1012, 681, 634, 634, 634, 634, 634, 414, 1016, 1020, 1024, 1085, 1027, 1090, 1090, 1046, 1080, 1137, 1108, 1215, 1049, 1032, 1039, 1085, 1085, 1085, 1085, 1058, 1062, 1068, 1085, 1086, 1090, 1090, 1091, 1072, 1064, 1107, 1090, 1090, 1090, 1118, 1123, 1138, 1078, 1074, 1084, 1085, 1085, 1085, 1087, 1090, 1062, 1052, 1060, 1114, 1062, 1104, 1085, 1085, 1090, 1090, 1028, 1122, 1063, 1128, 1139, 1127, 1158, 1085, 1085, 1151, 1090, 1090, 1090, 1095, 1090, 1132, 1073, 1136, 1143, 1061, 1150, 1085, 1155, 1098, 1101, 1146, 1162, 1169, 1101, 1185, 1151, 1090, 1110, 1173, 1054, 1087, 1109, 1177, 1165, 1089, 1204, 1184, 1107, 1189, 1193, 1088, 1197, 1180, 1201, 1208, 1042, 1212, 1219, 1223, 1227, 1231, 1235, 1245, 1777, 1527, 1686, 1686, 1238, 1686, 1254, 1686, 1686, 1686, 1294, 1669, 1686, 1686, 1686, 1322, 1625, 1534, 1268, 1624, 1275, 1281, 1443, 1292, 1300, 1686, 1686, 1686, 1350, 1826, 1306, 1686, 1686, 1240, 2032, 1317, 1321, 1686, 1686, 1253, 1686, 1326, 1686, 1686, 1686, 1418, 1709, 1446, 1686, 1686, 1686, 1492, 1686, 1295, 1447, 1686, 1686, 1258, 1686, 1736, 1686, 1686, 1520, 1355, 1686, 1288, 1348, 1361, 1686, 1359, 1686, 1364, 1498, 1368, 1302, 1362, 1381, 1389, 1395, 1486, 1686, 1371, 1377, 1370, 1686, 1375, 1382, 1384, 1402, 1408, 1385, 1383, 1619, 1413, 1423, 1428, 1433, 1686, 1686, 1270, 1686, 1338, 1686, 1440, 1686, 1686, 1686, 1499, 1465, 1686, 1686, 1686, 1639, 1473, 1884, 1686, 1686, 1293, 1864, 1686, 1686, 1296, 1321, 1483, 1686, 1686, 1686, 1646, 1686, 1748, 1496, 1686, 1418, 1675, 1686, 1418, 1702, 1686, 1418, 1981, 1686, 1429, 1409, 1427, 1504, 1692, 1686, 1686, 1313, 1448, 1651, 1508, 1686, 1686, 1340, 1686, 1903, 1686, 1686, 1435, 1513, 1686, 1283, 1287, 1519, 1686, 1524, 1363, 1568, 1938, 1539, 1566, 1579, 1479, 1533, 1538, 1553, 1544, 1552, 1557, 1563, 1574, 1557, 1583, 1589, 1590, 1759, 1594, 1603, 1607, 1611, 1686, 1436, 1514, 1686, 1434, 1656, 1686, 1434, 1680, 1686, 1453, 1686, 1686, 1686, 1559, 1617, 1686, 1770, 1418, 1623, 1769, 1629, 1686, 1515, 1335, 1686, 1285, 1686, 1671, 1921, 1650, 1686, 1686, 1344, 1308, 1666, 1686, 1686, 1686, 1659, 1685, 1686, 1686, 1686, 1686, 1241, 1686, 1686, 1844, 1691, 1686, 1630, 1977, 1970, 1362, 1686, 1686, 1686, 1693, 1698, 1686, 1686, 1686, 1697, 1686, 1764, 1715, 1686, 1634, 1638, 1686, 1599, 1585, 1686, 1271, 1686, 1269, 1686, 1721, 1686, 1686, 1354, 1686, 1801, 1686, 1799, 1686, 1640, 1686, 1686, 1461, 1686, 1686, 1732, 1686, 1944, 1686, 1740, 1686, 1746, 1415, 1396, 1686, 1598, 1547, 1417, 1597, 1416, 1577, 1546, 1397, 1577, 1547, 1548, 1570, 1398, 1753, 1686, 1652, 1509, 1686, 1686, 1686, 1757, 1686, 1419, 1686, 1763, 1418, 1768, 1781, 1686, 1686, 1686, 1705, 1686, 2048, 1792, 1686, 1686, 1686, 1735, 1686, 1797, 1686, 1686, 1404, 1686, 1639, 1815, 1686, 1686, 1418, 2017, 1820, 1686, 1686, 1803, 1686, 1686, 1686, 1736, 1489, 1686, 1686, 1825, 1338, 1260, 1263, 1686, 1686, 1785, 1686, 1686, 1728, 1686, 1686, 1749, 1497, 1830, 1830, 1262, 1248, 1261, 1329, 1260, 1264, 1329, 1248, 1249, 1259, 1540, 1849, 1842, 1686, 1686, 1835, 1686, 1686, 1816, 1686, 1686, 1831, 1882, 1848, 1686, 1686, 1686, 1774, 2071, 1854, 1686, 1686, 1469, 1884, 1686, 1821, 1859, 1686, 1686, 1350, 1883, 1686, 1686, 1686, 1781, 1391, 1875, 1686, 1686, 1613, 1644, 1686, 1686, 1889, 1686, 1686, 1662, 1884, 1686, 1885, 1890, 1686, 1686, 1686, 1894, 1686, 1686, 1678, 1686, 1907, 1686, 1686, 1529, 1914, 1686, 1838, 1686, 1686, 1881, 1686, 1686, 1872, 1876, 1836, 1919, 1686, 1837, 1692, 1910, 1686, 1925, 1928, 1742, 1686, 1811, 1811, 1930, 1810, 1929, 1935, 1928, 1900, 1942, 1867, 1868, 1931, 1035, 1788, 1948, 1952, 1956, 1960, 1964, 1686, 1976, 1686, 1686, 1686, 2065, 1686, 1992, 2037, 1686, 1686, 1998, 2009, 1972, 2002, 1686, 1686, 1686, 2077, 1300, 2023, 1686, 1686, 1686, 1807, 2031, 1686, 1686, 1686, 1860, 1500, 2032, 1686, 1686, 1686, 2083, 1686, 2036, 1686, 1277, 1276, 2042, 1877, 1686, 1686, 2041, 1686, 1686, 2027, 2037, 2012, 1686, 2012, 1855, 1850, 1686, 2046, 1686, 1686, 2054, 1996, 1686, 1897, 1309, 2059, 2052, 1686, 2058, 1686, 1686, 2081, 1686, 1717, 1477, 1686, 1331, 1686, 1686, 1687, 1686, 1860, 1681, 1686, 1686, 1686, 1966, 1724, 1686, 1686, 1686, 1984, 2015, 1686, 1686, 1686, 1988, 1686, 2063, 1686, 1686, 1686, 2005, 1686, 1727, 1686, 1686, 1711, 1457, 2069, 1686, 1686, 1686, 2019, 2075, 1686, 1686, 1915, 1686, 1686, 1793, 1874, 1686, 1686, 1491, 1362, 1449, 1686, 1686, 1460, 2098, 2087, 2091, 2095, 2184, 2102, 2113, 2780, 2117, 2134, 2142, 2281, 2146, 2146, 2146, 2304, 2296, 2181, 2639, 2591, 2872, 2592, 2873, 2313, 2195, 2200, 2281, 2146, 2273, 2226, 2204, 2152, 2219, 2276, 2167, 2177, 2276, 2235, 2276, 2276, 2230, 2281, 2276, 2296, 2276, 2293, 2276, 2276, 2276, 2276, 2234, 2276, 2311, 2314, 2210, 2199, 2217, 2222, 2276, 2276, 2276, 2240, 2276, 2294, 2276, 2276, 2173, 2276, 2198, 2281, 2281, 2281, 2281, 2282, 2146, 2146, 2146, 2146, 2205, 2146, 2204, 2248, 2276, 2235, 2276, 2297, 2276, 2276, 2276, 2277, 2256, 2281, 2283, 2146, 2146, 2146, 2275, 2276, 2295, 2276, 2276, 2293, 2146, 2304, 2264, 2269, 2221, 2276, 2276, 2276, 2293, 2295, 2276, 2276, 2276, 2295, 2263, 2205, 2268, 2220, 2172, 2276, 2276, 2276, 2296, 2276, 2276, 2296, 2294, 2276, 2276, 2278, 2281, 2281, 2280, 2281, 2281, 2281, 2283, 2206, 2223, 2276, 2276, 2279, 2281, 2281, 2146, 2273, 2276, 2276, 2281, 2281, 2281, 2276, 2292, 2276, 2298, 2225, 2276, 2298, 2169, 2224, 2292, 2298, 2171, 2229, 2281, 2281, 2171, 2236, 2281, 2281, 2281, 2146, 2275, 2225, 2292, 2299, 2276, 2229, 2281, 2146, 2276, 2290, 2297, 2283, 2146, 2146, 2274, 2224, 2227, 2298, 2225, 2297, 2276, 2230, 2170, 2230, 2282, 2146, 2147, 2151, 2156, 2288, 2276, 2230, 2303, 2308, 2236, 2284, 2228, 2318, 2318, 2318, 2326, 2335, 2339, 2343, 2349, 2416, 2693, 2357, 2592, 2109, 2592, 2592, 2162, 2943, 2823, 2646, 2592, 2361, 2592, 2122, 2592, 2592, 2122, 2470, 2592, 2592, 2592, 2109, 2107, 2592, 2592, 2592, 2123, 2592, 2592, 2592, 2125, 2592, 2413, 2592, 2592, 2592, 2127, 2592, 2592, 2414, 2592, 2592, 2592, 2130, 2952, 2592, 2594, 2592, 2592, 2212, 2609, 2252, 2592, 2592, 2592, 2446, 2434, 2592, 2592, 2592, 2212, 2446, 2450, 2456, 2431, 2435, 2592, 2592, 2243, 2478, 2448, 2439, 2946, 2592, 2592, 2592, 2368, 2809, 2813, 2450, 2441, 2212, 2812, 2449, 2440, 2947, 2592, 2592, 2592, 2345, 2451, 2457, 2948, 2592, 2124, 2592, 2592, 2650, 2823, 2449, 2455, 2946, 2592, 2128, 2592, 2592, 2649, 2952, 2592, 2810, 2448, 2461, 2991, 2467, 2592, 2592, 2329, 2817, 2474, 2990, 2466, 2592, 2592, 2373, 2447, 2992, 2469, 2592, 2592, 2592, 2373, 2447, 2477, 2468, 2592, 2592, 2353, 2469, 2592, 2495, 2592, 2592, 2415, 2483, 2592, 2415, 2496, 2592, 2592, 2352, 2592, 2592, 2352, 2352, 2469, 2592, 2592, 2363, 2331, 2494, 2592, 2592, 2592, 2375, 2592, 2375, 2415, 2504, 2592, 2592, 2367, 2372, 2503, 2592, 2592, 2592, 2389, 2418, 2415, 2592, 2592, 2373, 2592, 2592, 2592, 2593, 2732, 2417, 2415, 2592, 2417, 2520, 2592, 2592, 2592, 2390, 2521, 2521, 2592, 2592, 2592, 2401, 2599, 2585, 2526, 2531, 2120, 2592, 2212, 2426, 2450, 2463, 2948, 2592, 2592, 2592, 2213, 2389, 2527, 2532, 2121, 2542, 2551, 2105, 2592, 2213, 2592, 2592, 2592, 2558, 2538, 2544, 2553, 2557, 2537, 2543, 2552, 2421, 2572, 2576, 2546, 2543, 2547, 2592, 2592, 2373, 2615, 2575, 2545, 2105, 2592, 2244, 2479, 2592, 2129, 2592, 2592, 2628, 2690, 2469, 2562, 2566, 2592, 2592, 2592, 2415, 2928, 2934, 2401, 2570, 2574, 2564, 2572, 2585, 2590, 2592, 2592, 2585, 2965, 2592, 2592, 2592, 2445, 2251, 2592, 2592, 2592, 2474, 2592, 2609, 2892, 2592, 2362, 2592, 2592, 2138, 2851, 2159, 2592, 2592, 2592, 2509, 2888, 2892, 2592, 2592, 2592, 2490, 2418, 2891, 2592, 2592, 2376, 2592, 2592, 2374, 2592, 2889, 2388, 2592, 2373, 2373, 2890, 2592, 2592, 2387, 2592, 2887, 2505, 2892, 2592, 2373, 2610, 2388, 2592, 2592, 2376, 2373, 2592, 2887, 2891, 2592, 2374, 2592, 2592, 2608, 2159, 2614, 2620, 2592, 2592, 2394, 2594, 2887, 2399, 2592, 2887, 2397, 2508, 2374, 2507, 2592, 2375, 2592, 2592, 2592, 2595, 2508, 2506, 2592, 2506, 2505, 2505, 2592, 2507, 2637, 2505, 2592, 2592, 2401, 2661, 2592, 2643, 2592, 2592, 2417, 2592, 2655, 2592, 2592, 2592, 2510, 2414, 2656, 2592, 2592, 2592, 2516, 2592, 2593, 2660, 2665, 2880, 2592, 2592, 2592, 2522, 2767, 2666, 2881, 2592, 2592, 2420, 2571, 2696, 2592, 2592, 2592, 2580, 2572, 2686, 2632, 2698, 2592, 2383, 2514, 2592, 2163, 2932, 2465, 2685, 2631, 2697, 2592, 2388, 2592, 2592, 2212, 2604, 2671, 2632, 2678, 2592, 2401, 2405, 2409, 2592, 2592, 2592, 2679, 2592, 2592, 2592, 2592, 2108, 2677, 2591, 2592, 2592, 2592, 2419, 2592, 2683, 2187, 2191, 2469, 2671, 2189, 2467, 2592, 2401, 2629, 2633, 2702, 2468, 2592, 2592, 2421, 2536, 2703, 2469, 2592, 2592, 2422, 2573, 2593, 2672, 2467, 2592, 2402, 2406, 2592, 2402, 2979, 2592, 2592, 2626, 2673, 2467, 2592, 2446, 2259, 2947, 2592, 2377, 2709, 2592, 2592, 2522, 2862, 2713, 2468, 2592, 2592, 2581, 2572, 2562, 2374, 2374, 2592, 2376, 2721, 2724, 2592, 2592, 2624, 2373, 2731, 2592, 2592, 2592, 2626, 2732, 2592, 2592, 2592, 2755, 2656, 2726, 2736, 2741, 2592, 2486, 2593, 2381, 2592, 2727, 2737, 2742, 2715, 2747, 2753, 2592, 2498, 2469, 2873, 2743, 2592, 2592, 2592, 2791, 2759, 2763, 2592, 2592, 2627, 2704, 2592, 2592, 2522, 2789, 2593, 2761, 2753, 2592, 2498, 2863, 2592, 2592, 2767, 2592, 2592, 2592, 2792, 2789, 2592, 2592, 2592, 2803, 2126, 2592, 2592, 2592, 2811, 2122, 2592, 2592, 2592, 2834, 2777, 2592, 2592, 2592, 2848, 2936, 2591, 2489, 2797, 2592, 2592, 2670, 2631, 2490, 2798, 2592, 2592, 2592, 2963, 2807, 2592, 2592, 2592, 2965, 2838, 2592, 2592, 2592, 2975, 2330, 2818, 2829, 2592, 2498, 2939, 2592, 2498, 2592, 2791, 2331, 2819, 2830, 2592, 2592, 2592, 2982, 2834, 2817, 2828, 2106, 2592, 2592, 2592, 2405, 2405, 2817, 2828, 2592, 2592, 2415, 2849, 2842, 2592, 2522, 2773, 2592, 2522, 2868, 2592, 2580, 2600, 2586, 2137, 2850, 2843, 2592, 2592, 2855, 2937, 2844, 2592, 2592, 2592, 2987, 2936, 2591, 2592, 2592, 2684, 2630, 2592, 2856, 2938, 2592, 2592, 2860, 2939, 2592, 2592, 2872, 2592, 2861, 2591, 2592, 2592, 2887, 2616, 2592, 2867, 2592, 2592, 2708, 2592, 2498, 2469, 2498, 2497, 2785, 2773, 2499, 2783, 2770, 2877, 2877, 2877, 2772, 2592, 2592, 2345, 2885, 2592, 2592, 2592, 2715, 2762, 2515, 2896, 2592, 2592, 2715, 2917, 2516, 2897, 2592, 2592, 2592, 2901, 2906, 2911, 2592, 2592, 2956, 2960, 2715, 2902, 2907, 2912, 2593, 2916, 2920, 2820, 2922, 2822, 2592, 2592, 2715, 2927, 2921, 2821, 2106, 2592, 2592, 2974, 2408, 2321, 2821, 2106, 2592, 2592, 2983, 2592, 2593, 2404, 2408, 2592, 2592, 2717, 2749, 2716, 2928, 2322, 2822, 2593, 2926, 2919, 2820, 2934, 2823, 2592, 2592, 2592, 2651, 2824, 2592, 2592, 2592, 2130, 2952, 2592, 2592, 2592, 2592, 2964, 2592, 2592, 2716, 2748, 2592, 2969, 2592, 2592, 2716, 2918, 2368, 2970, 2592, 2592, 2592, 2403, 2407, 2592, 2592, 2787, 2211, 2404, 2409, 2592, 2592, 2802, 2837, 2987, 2592, 2592, 2592, 2809, 2427, 2592, 2793, 2592, 2592, 2809, 2447, 1073741824, 2147483648, 539754496, 542375936, 402653184, 554434560, 571736064, 545521856, 268451840, 335544320, 268693630, 512, 2048, 256, 1024, 0, 1024, 0, 1073741824, 2147483648, 0, 0, 0, 8388608, 0, 0, 1073741824, 1073741824, 0, 2147483648, 537133056, 4194304, 1048576, 268435456, -1073741824, 0, 0, 0, 1048576, 0, 0, 0, 1572864, 0, 0, 0, 4194304, 0, 134217728, 16777216, 0, 0, 32, 64, 98304, 0, 33554432, 8388608, 192, 67108864, 67108864, 67108864, 67108864, 16, 32, 4, 0, 8192, 196608, 196608, 229376, 80, 4096, 524288, 8388608, 0, 0, 32, 128, 256, 24576, 24600, 24576, 24576, 2, 24576, 24576, 24576, 24584, 24592, 24576, 24578, 24576, 24578, 24576, 24576, 16, 512, 2048, 2048, 256, 4096, 32768, 1048576, 4194304, 67108864, 134217728, 268435456, 262144, 134217728, 0, 128, 128, 64, 16384, 16384, 16384, 67108864, 32, 32, 4, 4, 4096, 262144, 134217728, 0, 0, 0, 2, 0, 8192, 131072, 131072, 4096, 4096, 4096, 4096, 24576, 24576, 24576, 8, 8, 24576, 24576, 16384, 16384, 16384, 24576, 24584, 24576, 24576, 24576, 16384, 24576, 536870912, 262144, 0, 0, 32, 2048, 8192, 4, 4096, 4096, 4096, 786432, 8388608, 16777216, 0, 128, 16384, 16384, 16384, 32768, 65536, 2097152, 32, 32, 32, 32, 4, 4, 4, 4, 4, 4096, 67108864, 67108864, 67108864, 24576, 24576, 24576, 24576, 0, 16384, 16384, 16384, 16384, 67108864, 67108864, 8, 67108864, 24576, 8, 8, 8, 24576, 24576, 24576, 24578, 24576, 24576, 24576, 2, 2, 2, 16384, 67108864, 67108864, 67108864, 32, 67108864, 8, 8, 24576, 2048, 2147483648, 536870912, 262144, 262144, 262144, 67108864, 8, 24576, 16384, 32768, 1048576, 4194304, 25165824, 67108864, 24576, 32770, 2, 4, 112, 512, 98304, 524288, 50, 402653186, 1049090, 1049091, 10, 66, 100925514, 10, 66, 12582914, 0, 0, -1678194207, -1678194207, -1041543218, 0, 32768, 0, 0, 32, 65536, 268435456, 1, 1, 513, 1048577, 0, 12582912, 0, 0, 0, 4, 1792, 0, 0, 0, 7, 29360128, 0, 0, 0, 8, 0, 0, 0, 12, 1, 1, 0, 0, -604102721, -604102721, 4194304, 8388608, 0, 0, 0, 31, 925600, 997981306, 997981306, 997981306, 0, 0, 2048, 8388608, 0, 0, 1, 2, 4, 32, 64, 512, 8192, 0, 0, 0, 245760, 997720064, 0, 0, 0, 32, 0, 0, 0, 3, 12, 16, 32, 8, 112, 3072, 12288, 16384, 32768, 65536, 131072, 7864320, 16777216, 973078528, 0, 0, 65536, 131072, 3670016, 4194304, 16777216, 33554432, 2, 8, 48, 2048, 8192, 16384, 32768, 65536, 131072, 524288, 131072, 524288, 3145728, 4194304, 16777216, 33554432, 65536, 131072, 2097152, 4194304, 16777216, 33554432, 134217728, 268435456, 536870912, 0, 0, 0, 1024, 0, 8, 48, 2048, 8192, 65536, 33554432, 268435456, 536870912, 65536, 268435456, 536870912, 0, 0, 32768, 0, 0, 126, 623104, 65011712, 0, 32, 65536, 536870912, 0, 0, 65536, 524288, 0, 32, 65536, 0, 0, 0, 2048, 0, 0, 0, 15482, 245760, -604102721, 0, 0, 0, 18913, 33062912, 925600, -605028352, 0, 0, 0, 65536, 31, 8096, 131072, 786432, 3145728, 3145728, 12582912, 50331648, 134217728, 268435456, 160, 256, 512, 7168, 131072, 786432, 131072, 786432, 1048576, 2097152, 12582912, 16777216, 268435456, 1073741824, 2147483648, 12582912, 16777216, 33554432, 268435456, 1073741824, 2147483648, 3, 12, 16, 160, 256, 7168, 786432, 1048576, 12582912, 16777216, 268435456, 1073741824, 0, 8, 16, 32, 128, 256, 512, 7168, 786432, 1048576, 2097152, 0, 1, 2, 8, 16, 7168, 786432, 1048576, 8388608, 16777216, 16777216, 1073741824, 0, 0, 0, 0, 1, 0, 0, 8, 32, 128, 256, 7168, 8, 32, 0, 3072, 0, 8, 32, 3072, 4096, 524288, 8, 32, 0, 0, 3072, 4096, 0, 2048, 524288, 8388608, 8, 2048, 0, 0, 1, 12, 256, 4096, 32768, 262144, 1048576, 4194304, 67108864, 0, 2048, 0, 2048, 2048, 1073741824, -58805985, -58805985, -58805985, 0, 0, 262144, 0, 0, 32, 4194304, 16777216, 134217728, 4382, 172032, -58982400, 0, 0, 2, 28, 256, 4096, 8192, 8192, 32768, 131072, 262144, 524288, 1, 2, 12, 256, 4096, 0, 0, 4194304, 67108864, 134217728, 805306368, 1073741824, 0, 0, 1, 2, 12, 16, 256, 4096, 1048576, 67108864, 134217728, 268435456, 0, 512, 1048576, 4194304, 201326592, 1879048192, 0, 0, 12, 256, 4096, 134217728, 268435456, 536870912, 12, 256, 268435456, 536870912, 0, 12, 256, 0, 0, 1, 32, 64, 512, 0, 0, 205236961, 205236961, 0, 0, 0, 1, 96, 640, 1, 10976, 229376, 204996608, 0, 640, 2048, 8192, 229376, 1572864, 1572864, 2097152, 201326592, 0, 0, 0, 64, 512, 2048, 229376, 1572864, 201326592, 1572864, 201326592, 0, 0, 1, 4382, 0, 1, 32, 2048, 65536, 131072, 1572864, 201326592, 131072, 1572864, 134217728, 0, 0, 524288, 524288, 0, 0, 0, -68582786, -68582786, -68582786, 0, 0, 2097152, 524288, 0, 524288, 0, 0, 65536, 131072, 1572864, 0, 0, 2, 4, 0, 0, 65011712, -134217728, 0, 0, 0, 0, 2, 4, 120, 512, -268435456, 0, 0, 0, 2, 8, 48, 64, 2048, 8192, 98304, 524288, 2097152, 4194304, 25165824, 33554432, 134217728, 268435456, 2147483648, 0, 0, 25165824, 33554432, 134217728, 1879048192, 2147483648, 0, 0, 4, 112, 512, 622592, 65011712, 134217728, -268435456, 16777216, 33554432, 134217728, 1610612736, 0, 0, 0, 64, 98304, 524288, 4194304, 16777216, 33554432, 0, 98304, 524288, 16777216, 33554432, 0, 65536, 524288, 33554432, 536870912, 1073741824, 0, 65536, 524288, 536870912, 1073741824, 0, 0, 65536, 524288, 536870912, 0, 524288, 0, 524288, 524288, 1048576, 2086666240, 2147483648, 0, -1678194207, 0, 0, 0, 8, 32, 2048, 524288, 8388608, 0, 0, 33062912, 436207616, 2147483648, 0, 0, 32, 64, 2432, 16384, 32768, 32768, 524288, 3145728, 4194304, 25165824, 25165824, 167772160, 268435456, 2147483648, 0, 32, 64, 384, 2048, 16384, 32768, 1048576, 2097152, 4194304, 25165824, 32, 64, 128, 256, 2048, 16384, 2048, 16384, 1048576, 4194304, 16777216, 33554432, 134217728, 536870912, 1073741824, 0, 0, 2048, 16384, 4194304, 16777216, 33554432, 134217728, 805306368, 0, 0, 16777216, 134217728, 268435456, 2147483648, 0, 622592, 622592, 622592, 8807, 8807, 434791, 0, 0, 16777216, 0, 0, 0, 7, 608, 8192, 0, 0, 0, 3, 4, 96, 512, 32, 64, 8192, 0, 0, 16777216, 134217728, 0, 0, 2, 4, 8192, 16384, 65536, 2097152, 33554432, 268435456], r.TOKEN = ["(0)", "ModuleDecl", "Annotation", "OptionDecl", "Operator", "Variable", "Tag", "EndTag", "PragmaContents", "DirCommentContents", "DirPIContents", "CDataSectionContents", "AttrTest", "Wildcard", "EQName", "IntegerLiteral", "DecimalLiteral", "DoubleLiteral", "PredefinedEntityRef", "'\"\"'", "EscapeApos", "QuotChar", "AposChar", "ElementContentChar", "QuotAttrContentChar", "AposAttrContentChar", "NCName", "QName", "S", "CharRef", "CommentContents", "DocTag", "DocCommentContents", "EOF", "'!'", "'\"'", "'#'", "'#)'", "''''", "'('", "'(#'", "'(:'", "'(:~'", "')'", "'*'", "'*'", "','", "'-->'", "'.'", "'/'", "'/>'", "':'", "':)'", "';'", "'<!--'", "'<![CDATA['", "'<?'", "'='", "'>'", "'?'", "'?>'", "'NaN'", "'['", "']'", "']]>'", "'after'", "'all'", "'allowing'", "'ancestor'", "'ancestor-or-self'", "'and'", "'any'", "'append'", "'array'", "'as'", "'ascending'", "'at'", "'attribute'", "'base-uri'", "'before'", "'boundary-space'", "'break'", "'by'", "'case'", "'cast'", "'castable'", "'catch'", "'check'", "'child'", "'collation'", "'collection'", "'comment'", "'constraint'", "'construction'", "'contains'", "'content'", "'context'", "'continue'", "'copy'", "'copy-namespaces'", "'count'", "'decimal-format'", "'decimal-separator'", "'declare'", "'default'", "'delete'", "'descendant'", "'descendant-or-self'", "'descending'", "'diacritics'", "'different'", "'digit'", "'distance'", "'div'", "'document'", "'document-node'", "'element'", "'else'", "'empty'", "'empty-sequence'", "'encoding'", "'end'", "'entire'", "'eq'", "'every'", "'exactly'", "'except'", "'exit'", "'external'", "'first'", "'following'", "'following-sibling'", "'for'", "'foreach'", "'foreign'", "'from'", "'ft-option'", "'ftand'", "'ftnot'", "'ftor'", "'function'", "'ge'", "'greatest'", "'group'", "'grouping-separator'", "'gt'", "'idiv'", "'if'", "'import'", "'in'", "'index'", "'infinity'", "'inherit'", "'insensitive'", "'insert'", "'instance'", "'integrity'", "'intersect'", "'into'", "'is'", "'item'", "'json'", "'json-item'", "'key'", "'language'", "'last'", "'lax'", "'le'", "'least'", "'let'", "'levels'", "'loop'", "'lowercase'", "'lt'", "'minus-sign'", "'mod'", "'modify'", "'module'", "'most'", "'namespace'", "'namespace-node'", "'ne'", "'next'", "'no'", "'no-inherit'", "'no-preserve'", "'node'", "'nodes'", "'not'", "'object'", "'occurs'", "'of'", "'on'", "'only'", "'option'", "'or'", "'order'", "'ordered'", "'ordering'", "'paragraph'", "'paragraphs'", "'parent'", "'pattern-separator'", "'per-mille'", "'percent'", "'phrase'", "'position'", "'preceding'", "'preceding-sibling'", "'preserve'", "'previous'", "'processing-instruction'", "'relationship'", "'rename'", "'replace'", "'return'", "'returning'", "'revalidation'", "'same'", "'satisfies'", "'schema'", "'schema-attribute'", "'schema-element'", "'score'", "'self'", "'sensitive'", "'sentence'", "'sentences'", "'skip'", "'sliding'", "'some'", "'stable'", "'start'", "'stemming'", "'stop'", "'strict'", "'strip'", "'structured-item'", "'switch'", "'text'", "'then'", "'thesaurus'", "'times'", "'to'", "'treat'", "'try'", "'tumbling'", "'type'", "'typeswitch'", "'union'", "'unique'", "'unordered'", "'updating'", "'uppercase'", "'using'", "'validate'", "'value'", "'variable'", "'version'", "'weight'", "'when'", "'where'", "'while'", "'wildcards'", "'window'", "'with'", "'without'", "'word'", "'words'", "'xquery'", "'zero-digit'", "'{'", "'{{'", "'|'", "'}'", "'}}'"];
    }, {}],
    "/node_modules/xqlint/lib/lexers/lexer.js": [function (e, t, n) {
      "use strict";

      var r = function r(e) {
        var t = e;
        this.tokens = [], this.reset = function () {
          t = t, this.tokens = [];
        }, this.startNonterminal = function () {}, this.endNonterminal = function () {}, this.terminal = function (e, n, r) {
          this.tokens.push({
            name: e,
            value: t.substring(n, r)
          });
        }, this.whitespace = function (e, n) {
          this.tokens.push({
            name: "WS",
            value: t.substring(e, n)
          });
        };
      };

      n.Lexer = function (e, t) {
        this.tokens = [], this.getLineTokens = function (n, i) {
          i = i === "start" || !i ? '["start"]' : i;
          var s = JSON.parse(i),
              o = new r(n),
              u = new e(n, o),
              a = [];

          for (;;) {
            var f = s[s.length - 1];

            try {
              o.tokens = [], u["parse_" + f]();
              var l = null;
              o.tokens.length > 1 && o.tokens[0].name === "WS" && (a.push({
                type: "text",
                value: o.tokens[0].value
              }), o.tokens.splice(0, 1));
              var c = o.tokens[0],
                  h = t[f];

              for (var p = 0; p < h.length; p++) {
                var d = t[f][p];

                if (typeof d.name == "function" && d.name(c) || d.name === c.name) {
                  l = d;
                  break;
                }
              }

              if (c.name === "EOF") break;
              if (c.value === "") throw "Encountered empty string lexical rule.";
              a.push({
                type: l === null ? "text" : typeof l.token == "function" ? l.token(c.value) : l.token,
                value: c.value
              }), l && l.next && l.next(s);
            } catch (v) {
              if (v instanceof u.ParseException) {
                var m = 0;

                for (var g = 0; g < a.length; g++) {
                  m += a[g].value.length;
                }

                return a.push({
                  type: "text",
                  value: n.substring(m)
                }), {
                  tokens: a,
                  state: JSON.stringify(["start"])
                };
              }

              throw v;
            }
          }

          return {
            tokens: a,
            state: JSON.stringify(s)
          };
        };
      };
    }, {}],
    "/node_modules/xqlint/lib/lexers/xquery_lexer.js": [function (e, t, n) {
      "use strict";

      var r = e("./XQueryTokenizer").XQueryTokenizer,
          i = e("./lexer").Lexer,
          s = "after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position|strict".split("|"),
          o = s.map(function (e) {
        return {
          name: "'" + e + "'",
          token: "keyword"
        };
      }),
          u = s.map(function (e) {
        return {
          name: "'" + e + "'",
          token: "text",
          next: function next(e) {
            e.pop();
          }
        };
      }),
          a = "constant.language",
          f = "constant",
          l = "comment",
          c = "xml-pe",
          h = "constant.buildin",
          p = function p(e) {
        return "'" + e + "'";
      },
          d = {
        start: [{
          name: p("(#"),
          token: h,
          next: function next(e) {
            e.push("Pragma");
          }
        }, {
          name: p("(:"),
          token: "comment",
          next: function next(e) {
            e.push("Comment");
          }
        }, {
          name: p("(:~"),
          token: "comment.doc",
          next: function next(e) {
            e.push("CommentDoc");
          }
        }, {
          name: p("<!--"),
          token: l,
          next: function next(e) {
            e.push("XMLComment");
          }
        }, {
          name: p("<?"),
          token: c,
          next: function next(e) {
            e.push("PI");
          }
        }, {
          name: p("''"),
          token: "string",
          next: function next(e) {
            e.push("AposString");
          }
        }, {
          name: p('"'),
          token: "string",
          next: function next(e) {
            e.push("QuotString");
          }
        }, {
          name: "Annotation",
          token: "support.function"
        }, {
          name: "ModuleDecl",
          token: "keyword",
          next: function next(e) {
            e.push("Prefix");
          }
        }, {
          name: "OptionDecl",
          token: "keyword",
          next: function next(e) {
            e.push("_EQName");
          }
        }, {
          name: "AttrTest",
          token: "support.type"
        }, {
          name: "Variable",
          token: "variable"
        }, {
          name: p("<![CDATA["),
          token: a,
          next: function next(e) {
            e.push("CData");
          }
        }, {
          name: "IntegerLiteral",
          token: f
        }, {
          name: "DecimalLiteral",
          token: f
        }, {
          name: "DoubleLiteral",
          token: f
        }, {
          name: "Operator",
          token: "keyword.operator"
        }, {
          name: "EQName",
          token: function token(e) {
            return s.indexOf(e) !== -1 ? "keyword" : "support.function";
          }
        }, {
          name: p("("),
          token: "lparen"
        }, {
          name: p(")"),
          token: "rparen"
        }, {
          name: "Tag",
          token: "meta.tag",
          next: function next(e) {
            e.push("StartTag");
          }
        }, {
          name: p("}"),
          token: "text",
          next: function next(e) {
            e.length > 1 && e.pop();
          }
        }, {
          name: p("{"),
          token: "text",
          next: function next(e) {
            e.push("start");
          }
        }].concat(o),
        _EQName: [{
          name: "EQName",
          token: "text",
          next: function next(e) {
            e.pop();
          }
        }].concat(u),
        Prefix: [{
          name: "NCName",
          token: "text",
          next: function next(e) {
            e.pop();
          }
        }].concat(u),
        StartTag: [{
          name: p(">"),
          token: "meta.tag",
          next: function next(e) {
            e.push("TagContent");
          }
        }, {
          name: "QName",
          token: "entity.other.attribute-name"
        }, {
          name: p("="),
          token: "text"
        }, {
          name: p("''"),
          token: "string",
          next: function next(e) {
            e.push("AposAttr");
          }
        }, {
          name: p('"'),
          token: "string",
          next: function next(e) {
            e.push("QuotAttr");
          }
        }, {
          name: p("/>"),
          token: "meta.tag.r",
          next: function next(e) {
            e.pop();
          }
        }],
        TagContent: [{
          name: "ElementContentChar",
          token: "text"
        }, {
          name: p("<![CDATA["),
          token: a,
          next: function next(e) {
            e.push("CData");
          }
        }, {
          name: p("<!--"),
          token: l,
          next: function next(e) {
            e.push("XMLComment");
          }
        }, {
          name: "Tag",
          token: "meta.tag",
          next: function next(e) {
            e.push("StartTag");
          }
        }, {
          name: "PredefinedEntityRef",
          token: "constant.language.escape"
        }, {
          name: "CharRef",
          token: "constant.language.escape"
        }, {
          name: p("{{"),
          token: "text"
        }, {
          name: p("}}"),
          token: "text"
        }, {
          name: p("{"),
          token: "text",
          next: function next(e) {
            e.push("start");
          }
        }, {
          name: "EndTag",
          token: "meta.tag",
          next: function next(e) {
            e.pop(), e.pop();
          }
        }],
        AposAttr: [{
          name: p("''"),
          token: "string",
          next: function next(e) {
            e.pop();
          }
        }, {
          name: "EscapeApos",
          token: "constant.language.escape"
        }, {
          name: "AposAttrContentChar",
          token: "string"
        }, {
          name: "PredefinedEntityRef",
          token: "constant.language.escape"
        }, {
          name: "CharRef",
          token: "constant.language.escape"
        }, {
          name: p("{{"),
          token: "string"
        }, {
          name: p("}}"),
          token: "string"
        }, {
          name: p("{"),
          token: "text",
          next: function next(e) {
            e.push("start");
          }
        }],
        QuotAttr: [{
          name: p('"'),
          token: "string",
          next: function next(e) {
            e.pop();
          }
        }, {
          name: "EscapeQuot",
          token: "constant.language.escape"
        }, {
          name: "QuotAttrContentChar",
          token: "string"
        }, {
          name: "PredefinedEntityRef",
          token: "constant.language.escape"
        }, {
          name: "CharRef",
          token: "constant.language.escape"
        }, {
          name: p("{{"),
          token: "string"
        }, {
          name: p("}}"),
          token: "string"
        }, {
          name: p("{"),
          token: "text",
          next: function next(e) {
            e.push("start");
          }
        }],
        Pragma: [{
          name: "PragmaContents",
          token: h
        }, {
          name: p("#"),
          token: h
        }, {
          name: p("#)"),
          token: h,
          next: function next(e) {
            e.pop();
          }
        }],
        Comment: [{
          name: "CommentContents",
          token: "comment"
        }, {
          name: p("(:"),
          token: "comment",
          next: function next(e) {
            e.push("Comment");
          }
        }, {
          name: p(":)"),
          token: "comment",
          next: function next(e) {
            e.pop();
          }
        }],
        CommentDoc: [{
          name: "DocCommentContents",
          token: "comment.doc"
        }, {
          name: "DocTag",
          token: "comment.doc.tag"
        }, {
          name: p("(:"),
          token: "comment.doc",
          next: function next(e) {
            e.push("CommentDoc");
          }
        }, {
          name: p(":)"),
          token: "comment.doc",
          next: function next(e) {
            e.pop();
          }
        }],
        XMLComment: [{
          name: "DirCommentContents",
          token: l
        }, {
          name: p("-->"),
          token: l,
          next: function next(e) {
            e.pop();
          }
        }],
        CData: [{
          name: "CDataSectionContents",
          token: a
        }, {
          name: p("]]>"),
          token: a,
          next: function next(e) {
            e.pop();
          }
        }],
        PI: [{
          name: "DirPIContents",
          token: c
        }, {
          name: p("?"),
          token: c
        }, {
          name: p("?>"),
          token: c,
          next: function next(e) {
            e.pop();
          }
        }],
        AposString: [{
          name: p("''"),
          token: "string",
          next: function next(e) {
            e.pop();
          }
        }, {
          name: "PredefinedEntityRef",
          token: "constant.language.escape"
        }, {
          name: "CharRef",
          token: "constant.language.escape"
        }, {
          name: "EscapeApos",
          token: "constant.language.escape"
        }, {
          name: "AposChar",
          token: "string"
        }],
        QuotString: [{
          name: p('"'),
          token: "string",
          next: function next(e) {
            e.pop();
          }
        }, {
          name: "PredefinedEntityRef",
          token: "constant.language.escape"
        }, {
          name: "CharRef",
          token: "constant.language.escape"
        }, {
          name: "EscapeQuot",
          token: "constant.language.escape"
        }, {
          name: "QuotChar",
          token: "string"
        }]
      };

      n.XQueryLexer = function () {
        return new i(r, d);
      };
    }, {
      "./XQueryTokenizer": "/node_modules/xqlint/lib/lexers/XQueryTokenizer.js",
      "./lexer": "/node_modules/xqlint/lib/lexers/lexer.js"
    }]
  }, {}, ["/node_modules/xqlint/lib/lexers/xquery_lexer.js"]);
}), ace.define("ace/mode/behaviour/xml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function (e, t, n) {
  "use strict";

  function u(e, t) {
    return e && e.type.lastIndexOf(t + ".xml") > -1;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("../../token_iterator").TokenIterator,
      o = e("../../lib/lang"),
      a = function a() {
    this.add("string_dquotes", "insertion", function (e, t, n, r, i) {
      if (i == '"' || i == "'") {
        var o = i,
            a = r.doc.getTextRange(n.getSelectionRange());
        if (a !== "" && a !== "'" && a != '"' && n.getWrapBehavioursEnabled()) return {
          text: o + a + o,
          selection: !1
        };
        var f = n.getCursorPosition(),
            l = r.doc.getLine(f.row),
            c = l.substring(f.column, f.column + 1),
            h = new s(r, f.row, f.column),
            p = h.getCurrentToken();
        if (c == o && (u(p, "attribute-value") || u(p, "string"))) return {
          text: "",
          selection: [1, 1]
        };
        p || (p = h.stepBackward());
        if (!p) return;

        while (u(p, "tag-whitespace") || u(p, "whitespace")) {
          p = h.stepBackward();
        }

        var d = !c || c.match(/\s/);
        if (u(p, "attribute-equals") && (d || c == ">") || u(p, "decl-attribute-equals") && (d || c == "?")) return {
          text: o + o,
          selection: [1, 1]
        };
      }
    }), this.add("string_dquotes", "deletion", function (e, t, n, r, i) {
      var s = r.doc.getTextRange(i);

      if (!i.isMultiLine() && (s == '"' || s == "'")) {
        var o = r.doc.getLine(i.start.row),
            u = o.substring(i.start.column + 1, i.start.column + 2);
        if (u == s) return i.end.column++, i;
      }
    }), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var o = n.getSelectionRange().start,
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken() || a.stepBackward();
        if (!f || !(u(f, "tag-name") || u(f, "tag-whitespace") || u(f, "attribute-name") || u(f, "attribute-equals") || u(f, "attribute-value"))) return;
        if (u(f, "reference.attribute-value")) return;

        if (u(f, "attribute-value")) {
          var l = a.getCurrentTokenColumn() + f.value.length;
          if (o.column < l) return;

          if (o.column == l) {
            var c = a.stepForward();
            if (c && u(c, "attribute-value")) return;
            a.stepBackward();
          }
        }

        if (/^\s*>/.test(r.getLine(o.row).slice(o.column))) return;

        while (!u(f, "tag-name")) {
          f = a.stepBackward();

          if (f.value == "<") {
            f = a.stepForward();
            break;
          }
        }

        var h = a.getCurrentTokenRow(),
            p = a.getCurrentTokenColumn();
        if (u(a.stepBackward(), "end-tag-open")) return;
        var d = f.value;
        h == o.row && (d = d.substring(0, o.column - p));
        if (this.voidElements.hasOwnProperty(d.toLowerCase())) return;
        return {
          text: "></" + d + ">",
          selection: [1, 1]
        };
      }
    }), this.add("autoindent", "insertion", function (e, t, n, r, i) {
      if (i == "\n") {
        var o = n.getCursorPosition(),
            u = r.getLine(o.row),
            a = new s(r, o.row, o.column),
            f = a.getCurrentToken();

        if (f && f.type.indexOf("tag-close") !== -1) {
          if (f.value == "/>") return;

          while (f && f.type.indexOf("tag-name") === -1) {
            f = a.stepBackward();
          }

          if (!f) return;
          var l = f.value,
              c = a.getCurrentTokenRow();
          f = a.stepBackward();
          if (!f || f.type.indexOf("end-tag") !== -1) return;

          if (this.voidElements && !this.voidElements[l]) {
            var h = r.getTokenAt(o.row, o.column + 1),
                u = r.getLine(c),
                p = this.$getIndent(u),
                d = p + r.getTabString();
            return h && h.value === "</" ? {
              text: "\n" + d + "\n" + p,
              selection: [1, d.length, 1, d.length]
            } : {
              text: "\n" + d
            };
          }
        }
      }
    });
  };

  r.inherits(a, i), t.XmlBehaviour = a;
}), ace.define("ace/mode/behaviour/xquery", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/mode/behaviour/cstyle", "ace/mode/behaviour/xml", "ace/token_iterator"], function (e, t, n) {
  "use strict";

  function a(e, t) {
    var n = !0,
        r = e.type.split("."),
        i = t.split(".");
    return i.forEach(function (e) {
      if (r.indexOf(e) == -1) return n = !1, !1;
    }), n;
  }

  var r = e("../../lib/oop"),
      i = e("../behaviour").Behaviour,
      s = e("./cstyle").CstyleBehaviour,
      o = e("../behaviour/xml").XmlBehaviour,
      u = e("../../token_iterator").TokenIterator,
      f = function f() {
    this.inherit(s, ["braces", "parens", "string_dquotes"]), this.inherit(o), this.add("autoclosing", "insertion", function (e, t, n, r, i) {
      if (i == ">") {
        var s = n.getCursorPosition(),
            o = new u(r, s.row, s.column),
            f = o.getCurrentToken(),
            l = !1,
            e = JSON.parse(e).pop();
        if (f && f.value === ">" || e !== "StartTag") return;

        if (!f || !a(f, "meta.tag") && (!a(f, "text") || !f.value.match("/"))) {
          do {
            f = o.stepBackward();
          } while (f && (a(f, "string") || a(f, "keyword.operator") || a(f, "entity.attribute-name") || a(f, "text")));
        } else l = !0;

        var c = o.stepBackward();
        if (!f || !a(f, "meta.tag") || c !== null && c.value.match("/")) return;
        var h = f.value.substring(1);
        if (l) var h = h.substring(0, s.column - f.start);
        return {
          text: "></" + h + ">",
          selection: [1, 1]
        };
      }
    });
  };

  r.inherits(f, i), t.XQueryBehaviour = f;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/xquery", ["require", "exports", "module", "ace/worker/worker_client", "ace/lib/oop", "ace/mode/text", "ace/mode/text_highlight_rules", "ace/mode/xquery/xquery_lexer", "ace/range", "ace/mode/behaviour/xquery", "ace/mode/folding/cstyle", "ace/anchor"], function (e, t, n) {
  "use strict";

  var r = e("../worker/worker_client").WorkerClient,
      i = e("../lib/oop"),
      s = e("./text").Mode,
      o = e("./text_highlight_rules").TextHighlightRules,
      u = e("./xquery/xquery_lexer").XQueryLexer,
      a = e("../range").Range,
      f = e("./behaviour/xquery").XQueryBehaviour,
      l = e("./folding/cstyle").FoldMode,
      c = e("../anchor").Anchor,
      h = function h() {
    this.$tokenizer = new u(), this.$behaviour = new f(), this.foldingRules = new l(), this.$highlightRules = new o();
  };

  i.inherits(h, s), function () {
    this.completer = {
      getCompletions: function getCompletions(e, t, n, r, i) {
        if (!t.$worker) return i();
        t.$worker.emit("complete", {
          data: {
            pos: n,
            prefix: r
          }
        }), t.$worker.on("complete", function (e) {
          i(null, e.data);
        });
      }
    }, this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t),
          i = t.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/);
      return i && (r += n), r;
    }, this.checkOutdent = function (e, t, n) {
      return /^\s+$/.test(t) ? /^\s*[\}\)]/.test(n) : !1;
    }, this.autoOutdent = function (e, t, n) {
      var r = t.getLine(n),
          i = r.match(/^(\s*[\}\)])/);
      if (!i) return 0;
      var s = i[1].length,
          o = t.findMatchingBracket({
        row: n,
        column: s
      });
      if (!o || o.row == n) return 0;
      var u = this.$getIndent(t.getLine(o.row));
      t.replace(new a(n, 0, n, s - 1), u);
    }, this.toggleCommentLines = function (e, t, n, r) {
      var i,
          s,
          o = !0,
          u = /^\s*\(:(.*):\)/;

      for (i = n; i <= r; i++) {
        if (!u.test(t.getLine(i))) {
          o = !1;
          break;
        }
      }

      var f = new a(0, 0, 0, 0);

      for (i = n; i <= r; i++) {
        s = t.getLine(i), f.start.row = i, f.end.row = i, f.end.column = s.length, t.replace(f, o ? s.match(u)[1] : "(:" + s + ":)");
      }
    }, this.createWorker = function (e) {
      var t = new r(["ace"], "ace/mode/xquery_worker", "XQueryWorker"),
          n = this;
      return t.attachToDocument(e.getDocument()), t.on("ok", function (t) {
        e.clearAnnotations();
      }), t.on("markers", function (t) {
        e.clearAnnotations(), n.addMarkers(t.data, e);
      }), t.on("highlight", function (t) {
        n.$tokenizer.tokens = t.data.tokens, n.$tokenizer.lines = e.getDocument().getAllLines();
        var r = Object.keys(n.$tokenizer.tokens);

        for (var i = 0; i < r.length; i++) {
          var s = parseInt(r[i]);
          delete e.bgTokenizer.lines[s], delete e.bgTokenizer.states[s], e.bgTokenizer.fireUpdateEvent(s, s);
        }
      }), t;
    }, this.removeMarkers = function (e) {
      var t = e.getMarkers(!1);

      for (var n in t) {
        t[n].clazz.indexOf("language_highlight_") === 0 && e.removeMarker(n);
      }

      for (var r = 0; r < e.markerAnchors.length; r++) {
        e.markerAnchors[r].detach();
      }

      e.markerAnchors = [];
    }, this.addMarkers = function (e, t) {
      var n = this;
      t.markerAnchors || (t.markerAnchors = []), this.removeMarkers(t), t.languageAnnos = [], e.forEach(function (e) {
        function u(i) {
          r && t.removeMarker(r), o.row = n.row;

          if (e.pos.sc !== undefined && e.pos.ec !== undefined) {
            var s = new a(e.pos.sl, e.pos.sc, e.pos.el, e.pos.ec);
            r = t.addMarker(s, "language_highlight_" + (e.type ? e.type : "default"));
          }

          i && t.setAnnotations(t.languageAnnos);
        }

        var n = new c(t.getDocument(), e.pos.sl, e.pos.sc || 0);
        t.markerAnchors.push(n);
        var r,
            i = e.pos.ec - e.pos.sc,
            s = e.pos.el - e.pos.sl,
            o = {
          guttertext: e.message,
          type: e.level || "warning",
          text: e.message
        };
        u(), n.on("change", function () {
          u(!0);
        }), e.message && t.languageAnnos.push(o);
      }), t.setAnnotations(t.languageAnnos);
    }, this.$id = "ace/mode/xquery", this.snippetFileId = "ace/snippets/xquery";
  }.call(h.prototype), t.Mode = h;
});

(function () {
  ace.require(["ace/mode/xquery"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-yaml.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-yaml.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/yaml_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment",
        regex: "#.*$"
      }, {
        token: "list.markup",
        regex: /^(?:-{3}|\.{3})\s*(?=#|$)/
      }, {
        token: "list.markup",
        regex: /^\s*[\-?](?:$|\s)/
      }, {
        token: "constant",
        regex: "!![\\w//]+"
      }, {
        token: "constant.language",
        regex: "[&\\*][a-zA-Z0-9-_]+"
      }, {
        token: ["meta.tag", "keyword"],
        regex: /^(\s*\w.*?)(:(?=\s|$))/
      }, {
        token: ["meta.tag", "keyword"],
        regex: /(\w+?)(\s*:(?=\s|$))/
      }, {
        token: "keyword.operator",
        regex: "<<\\w*:\\w*"
      }, {
        token: "keyword.operator",
        regex: "-\\s*(?=[{])"
      }, {
        token: "string",
        regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
      }, {
        token: "string",
        regex: /[|>][-+\d]*(?:$|\s+(?:$|#))/,
        onMatch: function onMatch(e, t, n, r) {
          r = r.replace(/ #.*/, "");
          var i = /^ *((:\s*)?-(\s*[^|>])?)?/.exec(r)[0].replace(/\S\s*$/, "").length,
              s = parseInt(/\d+[\s+-]*$/.exec(r));
          return s ? (i += s - 1, this.next = "mlString") : this.next = "mlStringPre", n.length ? (n[0] = this.next, n[1] = i) : (n.push(this.next), n.push(i)), this.token;
        },
        next: "mlString"
      }, {
        token: "string",
        regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
      }, {
        token: "constant.numeric",
        regex: /(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)(?=[^\d-\w]|$)/
      }, {
        token: "constant.numeric",
        regex: /[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/
      }, {
        token: "constant.language.boolean",
        regex: "\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\b"
      }, {
        token: "paren.lparen",
        regex: "[[({]"
      }, {
        token: "paren.rparen",
        regex: "[\\])}]"
      }, {
        token: "text",
        regex: /[^\s,:\[\]\{\}]+/
      }],
      mlStringPre: [{
        token: "indent",
        regex: /^ *$/
      }, {
        token: "indent",
        regex: /^ */,
        onMatch: function onMatch(e, t, n) {
          var r = n[1];
          return r >= e.length ? (this.next = "start", n.shift(), n.shift()) : (n[1] = e.length - 1, this.next = n[0] = "mlString"), this.token;
        },
        next: "mlString"
      }, {
        defaultToken: "string"
      }],
      mlString: [{
        token: "indent",
        regex: /^ *$/
      }, {
        token: "indent",
        regex: /^ */,
        onMatch: function onMatch(e, t, n) {
          var r = n[1];
          return r >= e.length ? (this.next = "start", n.splice(0)) : this.next = "mlString", this.token;
        },
        next: "mlString"
      }, {
        token: "string",
        regex: ".+"
      }]
    }, this.normalizeRules();
  };

  r.inherits(s, i), t.YamlHighlightRules = s;
}), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../range").Range,
      i = function i() {};

  (function () {
    this.checkOutdent = function (e, t) {
      return /^\s+$/.test(e) ? /^\s*\}/.test(t) : !1;
    }, this.autoOutdent = function (e, t) {
      var n = e.getLine(t),
          i = n.match(/^(\s*\})/);
      if (!i) return 0;
      var s = i[1].length,
          o = e.findMatchingBracket({
        row: t,
        column: s
      });
      if (!o || o.row == t) return 0;
      var u = this.$getIndent(e.getLine(o.row));
      e.replace(new r(t, 0, t, s - 1), u);
    }, this.$getIndent = function (e) {
      return e.match(/^\s*/)[0];
    };
  }).call(i.prototype), t.MatchingBraceOutdent = i;
}), ace.define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("./fold_mode").FoldMode,
      s = e("../../range").Range,
      o = t.FoldMode = function () {};

  r.inherits(o, i), function () {
    this.getFoldWidgetRange = function (e, t, n) {
      var r = this.indentationBlock(e, n);
      if (r) return r;
      var i = /\S/,
          o = e.getLine(n),
          u = o.search(i);
      if (u == -1 || o[u] != "#") return;
      var a = o.length,
          f = e.getLength(),
          l = n,
          c = n;

      while (++n < f) {
        o = e.getLine(n);
        var h = o.search(i);
        if (h == -1) continue;
        if (o[h] != "#") break;
        c = n;
      }

      if (c > l) {
        var p = e.getLine(c).length;
        return new s(l, a, c, p);
      }
    }, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n),
          i = r.search(/\S/),
          s = e.getLine(n + 1),
          o = e.getLine(n - 1),
          u = o.search(/\S/),
          a = s.search(/\S/);
      if (i == -1) return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";

      if (u == -1) {
        if (i == a && r[i] == "#" && s[i] == "#") return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start";
      } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1) return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";

      return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : "";
    };
  }.call(o.prototype);
}), ace.define("ace/mode/yaml", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/yaml_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/folding/coffee"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./yaml_highlight_rules").YamlHighlightRules,
      o = e("./matching_brace_outdent").MatchingBraceOutdent,
      u = e("./folding/coffee").FoldMode,
      a = function a() {
    this.HighlightRules = s, this.$outdent = new o(), this.foldingRules = new u(), this.$behaviour = this.$defaultBehaviour;
  };

  r.inherits(a, i), function () {
    this.lineCommentStart = ["#"], this.getNextLineIndent = function (e, t, n) {
      var r = this.$getIndent(t);

      if (e == "start") {
        var i = t.match(/^.*[\{\(\[]\s*$/);
        i && (r += n);
      }

      return r;
    }, this.checkOutdent = function (e, t, n) {
      return this.$outdent.checkOutdent(t, n);
    }, this.autoOutdent = function (e, t, n) {
      this.$outdent.autoOutdent(t, n);
    }, this.$id = "ace/mode/yaml";
  }.call(a.prototype), t.Mode = a;
});

(function () {
  ace.require(["ace/mode/yaml"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/mode-zeek.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/mode-zeek.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/mode/zeek_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text_highlight_rules").TextHighlightRules,
      s = function s() {
    this.$rules = {
      start: [{
        token: "comment.line",
        regex: "#.*$"
      }, {
        token: "string.double",
        regex: /"/,
        next: "string-state"
      }, {
        token: "string.regexp",
        regex: "(/)(?=.*/)",
        next: "pattern-state"
      }, {
        token: ["keyword.other", "meta.preprocessor"],
        regex: /(@(?:load-plugin|load-sigs|load|unload))(.*$)/
      }, {
        token: "keyword.other",
        regex: /@(?:DEBUG|DIR|FILENAME|deprecated|if|ifdef|ifndef|else|endif)/
      }, {
        token: ["keyword.other", "meta.preprocessor", "keyword.operator", "meta.preprocessor"],
        regex: /(@prefixes)(\s*)(\+?=)(.*$)/
      }, {
        token: "storage.modifier.attribute",
        regex: /\&\b(?:redef|priority|log|optional|default|add_func|delete_func|expire_func|read_expire|write_expire|create_expire|synchronized|persistent|rotate_interval|rotate_size|encrypt|raw_output|mergeable|error_handler|type_column|deprecated)\b/
      }, {
        token: "constant.language",
        regex: /\b(?:T|F)\b/
      }, {
        token: "constant.numeric.port",
        regex: /\b\d{1,5}\/(?:udp|tcp|icmp|unknown)\b/
      }, {
        token: "constant.numeric.addr",
        regex: /\b(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\b/,
        comment: "IPv4 address"
      }, {
        token: "constant.numeric.addr",
        regex: /\[(?:[0-9a-fA-F]{0,4}:){2,7}(?:[0-9a-fA-F]{0,4})?(?:(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2}))?\]/,
        comment: "IPv6 address"
      }, {
        token: "constant.numeric.float.decimal.interval",
        regex: /(?:(?:\d*\.\d*(?:[eE][+-]?\d+)?|\d*[eE][+-]?\d+|\d*\.\d*)|\d+)\s*(?:day|hr|min|msec|usec|sec)s?/
      }, {
        token: "constant.numeric.float.decimal",
        regex: /\d*\.\d*(?:[eE][+-]?\d+)?|\d*[eE][+-]?\d+|\d*\.\d*/
      }, {
        token: "constant.numeric.hostname",
        regex: /\b[A-Za-z0-9][A-Za-z0-9\-]*(?:\.[A-Za-z0-9][A-Za-z0-9\-]*)+\b/
      }, {
        token: "constant.numeric.integer.hexadecimal",
        regex: /\b0x[0-9a-fA-F]+\b/
      }, {
        token: "constant.numeric.integer.decimal",
        regex: /\b\d+\b/
      }, {
        token: "keyword.operator",
        regex: /==|!=|<=|<|>=|>/
      }, {
        token: "keyword.operator",
        regex: /(&&)|(\|\|)|(!)/
      }, {
        token: "keyword.operator",
        regex: /=|\+=|-=/
      }, {
        token: "keyword.operator",
        regex: /\+\+|\+|--|-|\*|\/|%/
      }, {
        token: "keyword.operator",
        regex: /&|\||\^|~/
      }, {
        token: "keyword.operator",
        regex: /\b(?:in|as|is)\b/
      }, {
        token: "punctuation.terminator",
        regex: /;/
      }, {
        token: "punctuation.accessor",
        regex: /\??\$/
      }, {
        token: "punctuation.accessor",
        regex: /::/
      }, {
        token: "keyword.operator",
        regex: /\?/
      }, {
        token: "punctuation.separator",
        regex: /:/
      }, {
        token: "punctuation.separator",
        regex: /,/
      }, {
        token: ["keyword.other", "meta.namespace", "entity.name.namespace"],
        regex: /(module)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)/
      }, {
        token: "keyword.other",
        regex: /\bexport\b/
      }, {
        token: "keyword.control.conditional",
        regex: /\b(?:if|else)\b/
      }, {
        token: "keyword.control",
        regex: /\b(?:for|while)\b/
      }, {
        token: "keyword.control",
        regex: /\b(?:return|break|next|continue|fallthrough)\b/
      }, {
        token: "keyword.control",
        regex: /\b(?:switch|default|case)\b/
      }, {
        token: "keyword.other",
        regex: /\b(?:add|delete)\b/
      }, {
        token: "keyword.other",
        regex: /\bprint\b/
      }, {
        token: "keyword.control",
        regex: /\b(?:when|timeout|schedule)\b/
      }, {
        token: ["keyword.other", "meta.struct.record", "entity.name.struct.record", "meta.struct.record", "punctuation.separator", "meta.struct.record", "storage.type.struct.record"],
        regex: /\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)(\s*\b)(record)\b/
      }, {
        token: ["keyword.other", "meta.enum", "entity.name.enum", "meta.enum", "punctuation.separator", "meta.enum", "storage.type.enum"],
        regex: /\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)(\s*\b)(enum)\b/
      }, {
        token: ["keyword.other", "meta.type", "entity.name.type", "meta.type", "punctuation.separator"],
        regex: /\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)/
      }, {
        token: ["keyword.other", "meta.struct.record", "storage.type.struct.record", "meta.struct.record", "entity.name.struct.record"],
        regex: /\b(redef)(\s+)(record)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/
      }, {
        token: ["keyword.other", "meta.enum", "storage.type.enum", "meta.enum", "entity.name.enum"],
        regex: /\b(redef)(\s+)(enum)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/
      }, {
        token: ["storage.type", "text", "entity.name.function.event"],
        regex: /\b(event)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/
      }, {
        token: ["storage.type", "text", "entity.name.function.hook"],
        regex: /\b(hook)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/
      }, {
        token: ["storage.type", "text", "entity.name.function"],
        regex: /\b(function)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/
      }, {
        token: "keyword.other",
        regex: /\bredef\b/
      }, {
        token: "storage.type",
        regex: /\bany\b/
      }, {
        token: "storage.type",
        regex: /\b(?:enum|record|set|table|vector)\b/
      }, {
        token: ["storage.type", "text", "keyword.operator", "text", "storage.type"],
        regex: /\b(opaque)(\s+)(of)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/
      }, {
        token: "keyword.operator",
        regex: /\bof\b/
      }, {
        token: "storage.type",
        regex: /\b(?:addr|bool|count|double|file|int|interval|pattern|port|string|subnet|time)\b/
      }, {
        token: "storage.type",
        regex: /\b(?:function|hook|event)\b/
      }, {
        token: "storage.modifier",
        regex: /\b(?:global|local|const|option)\b/
      }, {
        token: "entity.name.function.call",
        regex: /\b[A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*(?=s*\()/
      }, {
        token: "punctuation.section.block.begin",
        regex: /\{/
      }, {
        token: "punctuation.section.block.end",
        regex: /\}/
      }, {
        token: "punctuation.section.brackets.begin",
        regex: /\[/
      }, {
        token: "punctuation.section.brackets.end",
        regex: /\]/
      }, {
        token: "punctuation.section.parens.begin",
        regex: /\(/
      }, {
        token: "punctuation.section.parens.end",
        regex: /\)/
      }],
      "string-state": [{
        token: "constant.character.escape",
        regex: /\\./
      }, {
        token: "string.double",
        regex: /"/,
        next: "start"
      }, {
        token: "constant.other.placeholder",
        regex: /%-?[0-9]*(\.[0-9]+)?[DTdxsefg]/
      }, {
        token: "string.double",
        regex: "."
      }],
      "pattern-state": [{
        token: "constant.character.escape",
        regex: /\\./
      }, {
        token: "string.regexp",
        regex: "/",
        next: "start"
      }, {
        token: "string.regexp",
        regex: "."
      }]
    }, this.normalizeRules();
  };

  s.metaData = {
    fileTypes: ["bro", "zeek"],
    name: "Zeek",
    scopeName: "source.zeek"
  }, r.inherits(s, i), t.ZeekHighlightRules = s;
}), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function (e, t, n) {
  "use strict";

  var r = e("../../lib/oop"),
      i = e("../../range").Range,
      s = e("./fold_mode").FoldMode,
      o = t.FoldMode = function (e) {
    e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)));
  };

  r.inherits(o, s), function () {
    this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
      var r = e.getLine(n);
      if (this.singleLineBlockCommentRe.test(r) && !this.startRegionRe.test(r) && !this.tripleStarBlockCommentRe.test(r)) return "";

      var i = this._getFoldWidgetBase(e, t, n);

      return !i && this.startRegionRe.test(r) ? "start" : i;
    }, this.getFoldWidgetRange = function (e, t, n, r) {
      var i = e.getLine(n);
      if (this.startRegionRe.test(i)) return this.getCommentRegionBlock(e, i, n);
      var s = i.match(this.foldingStartMarker);

      if (s) {
        var o = s.index;
        if (s[1]) return this.openingBracketBlock(e, s[1], n, o);
        var u = e.getCommentFoldRange(n, o + s[0].length, 1);
        return u && !u.isMultiLine() && (r ? u = this.getSectionRange(e, n) : t != "all" && (u = null)), u;
      }

      if (t === "markbegin") return;
      var s = i.match(this.foldingStopMarker);

      if (s) {
        var o = s.index + s[0].length;
        return s[1] ? this.closingBracketBlock(e, s[1], n, o) : e.getCommentFoldRange(n, o, -1);
      }
    }, this.getSectionRange = function (e, t) {
      var n = e.getLine(t),
          r = n.search(/\S/),
          s = t,
          o = n.length;
      t += 1;
      var u = t,
          a = e.getLength();

      while (++t < a) {
        n = e.getLine(t);
        var f = n.search(/\S/);
        if (f === -1) continue;
        if (r > f) break;
        var l = this.getFoldWidgetRange(e, "all", t);

        if (l) {
          if (l.start.row <= s) break;
          if (l.isMultiLine()) t = l.end.row;else if (r == f) break;
        }

        u = t;
      }

      return new i(s, o, u, e.getLine(u).length);
    }, this.getCommentRegionBlock = function (e, t, n) {
      var r = t.search(/\s*$/),
          s = e.getLength(),
          o = n,
          u = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,
          a = 1;

      while (++n < s) {
        t = e.getLine(n);
        var f = u.exec(t);
        if (!f) continue;
        f[1] ? a-- : a++;
        if (!a) break;
      }

      var l = n;
      if (l > o) return new i(o, r, l, t.length);
    };
  }.call(o.prototype);
}), ace.define("ace/mode/zeek", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/zeek_highlight_rules", "ace/mode/folding/cstyle"], function (e, t, n) {
  "use strict";

  var r = e("../lib/oop"),
      i = e("./text").Mode,
      s = e("./zeek_highlight_rules").ZeekHighlightRules,
      o = e("./folding/cstyle").FoldMode,
      u = function u() {
    this.HighlightRules = s, this.foldingRules = new o();
  };

  r.inherits(u, i), function () {
    this.lineCommentStart = "#", this.$id = "ace/mode/zeek";
  }.call(u.prototype), t.Mode = u;
});

(function () {
  ace.require(["ace/mode/zeek"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/c_cpp.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/c_cpp.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/c_cpp", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = "## STL Collections\n# std::array\nsnippet array\n	std::array<${1:T}, ${2:N}> ${3};${4}\n# std::vector\nsnippet vector\n	std::vector<${1:T}> ${2};${3}\n# std::deque\nsnippet deque\n	std::deque<${1:T}> ${2};${3}\n# std::forward_list\nsnippet flist\n	std::forward_list<${1:T}> ${2};${3}\n# std::list\nsnippet list\n	std::list<${1:T}> ${2};${3}\n# std::set\nsnippet set\n	std::set<${1:T}> ${2};${3}\n# std::map\nsnippet map\n	std::map<${1:Key}, ${2:T}> ${3};${4}\n# std::multiset\nsnippet mset\n	std::multiset<${1:T}> ${2};${3}\n# std::multimap\nsnippet mmap\n	std::multimap<${1:Key}, ${2:T}> ${3};${4}\n# std::unordered_set\nsnippet uset\n	std::unordered_set<${1:T}> ${2};${3}\n# std::unordered_map\nsnippet umap\n	std::unordered_map<${1:Key}, ${2:T}> ${3};${4}\n# std::unordered_multiset\nsnippet umset\n	std::unordered_multiset<${1:T}> ${2};${3}\n# std::unordered_multimap\nsnippet ummap\n	std::unordered_multimap<${1:Key}, ${2:T}> ${3};${4}\n# std::stack\nsnippet stack\n	std::stack<${1:T}> ${2};${3}\n# std::queue\nsnippet queue\n	std::queue<${1:T}> ${2};${3}\n# std::priority_queue\nsnippet pqueue\n	std::priority_queue<${1:T}> ${2};${3}\n##\n## Access Modifiers\n# private\nsnippet pri\n	private\n# protected\nsnippet pro\n	protected\n# public\nsnippet pub\n	public\n# friend\nsnippet fr\n	friend\n# mutable\nsnippet mu\n	mutable\n## \n## Class\n# class\nsnippet cl\n	class ${1:`Filename('$1', 'name')`} \n	{\n	public:\n		$1(${2});\n		~$1();\n\n	private:\n		${3:/* data */}\n	};\n# member function implementation\nsnippet mfun\n	${4:void} ${1:`Filename('$1', 'ClassName')`}::${2:memberFunction}(${3}) {\n		${5:/* code */}\n	}\n# namespace\nsnippet ns\n	namespace ${1:`Filename('', 'my')`} {\n		${2}\n	} /* namespace $1 */\n##\n## Input/Output\n# std::cout\nsnippet cout\n	std::cout << ${1} << std::endl;${2}\n# std::cin\nsnippet cin\n	std::cin >> ${1};${2}\n##\n## Iteration\n# for i \nsnippet fori\n	for (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n		${4:/* code */}\n	}${5}\n\n# foreach\nsnippet fore\n	for (${1:auto} ${2:i} : ${3:container}) {\n		${4:/* code */}\n	}${5}\n# iterator\nsnippet iter\n	for (${1:std::vector}<${2:type}>::${3:const_iterator} ${4:i} = ${5:container}.begin(); $4 != $5.end(); ++$4) {\n		${6}\n	}${7}\n\n# auto iterator\nsnippet itera\n	for (auto ${1:i} = $1.begin(); $1 != $1.end(); ++$1) {\n		${2:std::cout << *$1 << std::endl;}\n	}${3}\n##\n## Lambdas\n# lamda (one line)\nsnippet ld\n	[${1}](${2}){${3:/* code */}}${4}\n# lambda (multi-line)\nsnippet lld\n	[${1}](${2}){\n		${3:/* code */}\n	}${4}\n", t.scope = "c_cpp";
});

(function () {
  ace.require(["ace/snippets/c_cpp"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/css.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/css.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/css", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = "snippet .\n	${1} {\n		${2}\n	}\nsnippet !\n	 !important\nsnippet bdi:m+\n	-moz-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:m\n	-moz-border-image: ${1};\nsnippet bdrz:m\n	-moz-border-radius: ${1};\nsnippet bxsh:m+\n	-moz-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:m\n	-moz-box-shadow: ${1};\nsnippet bdi:w+\n	-webkit-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:w\n	-webkit-border-image: ${1};\nsnippet bdrz:w\n	-webkit-border-radius: ${1};\nsnippet bxsh:w+\n	-webkit-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:w\n	-webkit-box-shadow: ${1};\nsnippet @f\n	@font-face {\n		font-family: ${1};\n		src: url(${2});\n	}\nsnippet @i\n	@import url(${1});\nsnippet @m\n	@media ${1:print} {\n		${2}\n	}\nsnippet bg+\n	background: #${1:FFF} url(${2}) ${3:0} ${4:0} ${5:no-repeat};\nsnippet bga\n	background-attachment: ${1};\nsnippet bga:f\n	background-attachment: fixed;\nsnippet bga:s\n	background-attachment: scroll;\nsnippet bgbk\n	background-break: ${1};\nsnippet bgbk:bb\n	background-break: bounding-box;\nsnippet bgbk:c\n	background-break: continuous;\nsnippet bgbk:eb\n	background-break: each-box;\nsnippet bgcp\n	background-clip: ${1};\nsnippet bgcp:bb\n	background-clip: border-box;\nsnippet bgcp:cb\n	background-clip: content-box;\nsnippet bgcp:nc\n	background-clip: no-clip;\nsnippet bgcp:pb\n	background-clip: padding-box;\nsnippet bgc\n	background-color: #${1:FFF};\nsnippet bgc:t\n	background-color: transparent;\nsnippet bgi\n	background-image: url(${1});\nsnippet bgi:n\n	background-image: none;\nsnippet bgo\n	background-origin: ${1};\nsnippet bgo:bb\n	background-origin: border-box;\nsnippet bgo:cb\n	background-origin: content-box;\nsnippet bgo:pb\n	background-origin: padding-box;\nsnippet bgpx\n	background-position-x: ${1};\nsnippet bgpy\n	background-position-y: ${1};\nsnippet bgp\n	background-position: ${1:0} ${2:0};\nsnippet bgr\n	background-repeat: ${1};\nsnippet bgr:n\n	background-repeat: no-repeat;\nsnippet bgr:x\n	background-repeat: repeat-x;\nsnippet bgr:y\n	background-repeat: repeat-y;\nsnippet bgr:r\n	background-repeat: repeat;\nsnippet bgz\n	background-size: ${1};\nsnippet bgz:a\n	background-size: auto;\nsnippet bgz:ct\n	background-size: contain;\nsnippet bgz:cv\n	background-size: cover;\nsnippet bg\n	background: ${1};\nsnippet bg:ie\n	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1}',sizingMethod='${2:crop}');\nsnippet bg:n\n	background: none;\nsnippet bd+\n	border: ${1:1px} ${2:solid} #${3:000};\nsnippet bdb+\n	border-bottom: ${1:1px} ${2:solid} #${3:000};\nsnippet bdbc\n	border-bottom-color: #${1:000};\nsnippet bdbi\n	border-bottom-image: url(${1});\nsnippet bdbi:n\n	border-bottom-image: none;\nsnippet bdbli\n	border-bottom-left-image: url(${1});\nsnippet bdbli:c\n	border-bottom-left-image: continue;\nsnippet bdbli:n\n	border-bottom-left-image: none;\nsnippet bdblrz\n	border-bottom-left-radius: ${1};\nsnippet bdbri\n	border-bottom-right-image: url(${1});\nsnippet bdbri:c\n	border-bottom-right-image: continue;\nsnippet bdbri:n\n	border-bottom-right-image: none;\nsnippet bdbrrz\n	border-bottom-right-radius: ${1};\nsnippet bdbs\n	border-bottom-style: ${1};\nsnippet bdbs:n\n	border-bottom-style: none;\nsnippet bdbw\n	border-bottom-width: ${1};\nsnippet bdb\n	border-bottom: ${1};\nsnippet bdb:n\n	border-bottom: none;\nsnippet bdbk\n	border-break: ${1};\nsnippet bdbk:c\n	border-break: close;\nsnippet bdcl\n	border-collapse: ${1};\nsnippet bdcl:c\n	border-collapse: collapse;\nsnippet bdcl:s\n	border-collapse: separate;\nsnippet bdc\n	border-color: #${1:000};\nsnippet bdci\n	border-corner-image: url(${1});\nsnippet bdci:c\n	border-corner-image: continue;\nsnippet bdci:n\n	border-corner-image: none;\nsnippet bdf\n	border-fit: ${1};\nsnippet bdf:c\n	border-fit: clip;\nsnippet bdf:of\n	border-fit: overwrite;\nsnippet bdf:ow\n	border-fit: overwrite;\nsnippet bdf:r\n	border-fit: repeat;\nsnippet bdf:sc\n	border-fit: scale;\nsnippet bdf:sp\n	border-fit: space;\nsnippet bdf:st\n	border-fit: stretch;\nsnippet bdi\n	border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:n\n	border-image: none;\nsnippet bdl+\n	border-left: ${1:1px} ${2:solid} #${3:000};\nsnippet bdlc\n	border-left-color: #${1:000};\nsnippet bdli\n	border-left-image: url(${1});\nsnippet bdli:n\n	border-left-image: none;\nsnippet bdls\n	border-left-style: ${1};\nsnippet bdls:n\n	border-left-style: none;\nsnippet bdlw\n	border-left-width: ${1};\nsnippet bdl\n	border-left: ${1};\nsnippet bdl:n\n	border-left: none;\nsnippet bdlt\n	border-length: ${1};\nsnippet bdlt:a\n	border-length: auto;\nsnippet bdrz\n	border-radius: ${1};\nsnippet bdr+\n	border-right: ${1:1px} ${2:solid} #${3:000};\nsnippet bdrc\n	border-right-color: #${1:000};\nsnippet bdri\n	border-right-image: url(${1});\nsnippet bdri:n\n	border-right-image: none;\nsnippet bdrs\n	border-right-style: ${1};\nsnippet bdrs:n\n	border-right-style: none;\nsnippet bdrw\n	border-right-width: ${1};\nsnippet bdr\n	border-right: ${1};\nsnippet bdr:n\n	border-right: none;\nsnippet bdsp\n	border-spacing: ${1};\nsnippet bds\n	border-style: ${1};\nsnippet bds:ds\n	border-style: dashed;\nsnippet bds:dtds\n	border-style: dot-dash;\nsnippet bds:dtdtds\n	border-style: dot-dot-dash;\nsnippet bds:dt\n	border-style: dotted;\nsnippet bds:db\n	border-style: double;\nsnippet bds:g\n	border-style: groove;\nsnippet bds:h\n	border-style: hidden;\nsnippet bds:i\n	border-style: inset;\nsnippet bds:n\n	border-style: none;\nsnippet bds:o\n	border-style: outset;\nsnippet bds:r\n	border-style: ridge;\nsnippet bds:s\n	border-style: solid;\nsnippet bds:w\n	border-style: wave;\nsnippet bdt+\n	border-top: ${1:1px} ${2:solid} #${3:000};\nsnippet bdtc\n	border-top-color: #${1:000};\nsnippet bdti\n	border-top-image: url(${1});\nsnippet bdti:n\n	border-top-image: none;\nsnippet bdtli\n	border-top-left-image: url(${1});\nsnippet bdtli:c\n	border-corner-image: continue;\nsnippet bdtli:n\n	border-corner-image: none;\nsnippet bdtlrz\n	border-top-left-radius: ${1};\nsnippet bdtri\n	border-top-right-image: url(${1});\nsnippet bdtri:c\n	border-top-right-image: continue;\nsnippet bdtri:n\n	border-top-right-image: none;\nsnippet bdtrrz\n	border-top-right-radius: ${1};\nsnippet bdts\n	border-top-style: ${1};\nsnippet bdts:n\n	border-top-style: none;\nsnippet bdtw\n	border-top-width: ${1};\nsnippet bdt\n	border-top: ${1};\nsnippet bdt:n\n	border-top: none;\nsnippet bdw\n	border-width: ${1};\nsnippet bd\n	border: ${1};\nsnippet bd:n\n	border: none;\nsnippet b\n	bottom: ${1};\nsnippet b:a\n	bottom: auto;\nsnippet bxsh+\n	box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh\n	box-shadow: ${1};\nsnippet bxsh:n\n	box-shadow: none;\nsnippet bxz\n	box-sizing: ${1};\nsnippet bxz:bb\n	box-sizing: border-box;\nsnippet bxz:cb\n	box-sizing: content-box;\nsnippet cps\n	caption-side: ${1};\nsnippet cps:b\n	caption-side: bottom;\nsnippet cps:t\n	caption-side: top;\nsnippet cl\n	clear: ${1};\nsnippet cl:b\n	clear: both;\nsnippet cl:l\n	clear: left;\nsnippet cl:n\n	clear: none;\nsnippet cl:r\n	clear: right;\nsnippet cp\n	clip: ${1};\nsnippet cp:a\n	clip: auto;\nsnippet cp:r\n	clip: rect(${1:0} ${2:0} ${3:0} ${4:0});\nsnippet c\n	color: #${1:000};\nsnippet ct\n	content: ${1};\nsnippet ct:a\n	content: attr(${1});\nsnippet ct:cq\n	content: close-quote;\nsnippet ct:c\n	content: counter(${1});\nsnippet ct:cs\n	content: counters(${1});\nsnippet ct:ncq\n	content: no-close-quote;\nsnippet ct:noq\n	content: no-open-quote;\nsnippet ct:n\n	content: normal;\nsnippet ct:oq\n	content: open-quote;\nsnippet coi\n	counter-increment: ${1};\nsnippet cor\n	counter-reset: ${1};\nsnippet cur\n	cursor: ${1};\nsnippet cur:a\n	cursor: auto;\nsnippet cur:c\n	cursor: crosshair;\nsnippet cur:d\n	cursor: default;\nsnippet cur:ha\n	cursor: hand;\nsnippet cur:he\n	cursor: help;\nsnippet cur:m\n	cursor: move;\nsnippet cur:p\n	cursor: pointer;\nsnippet cur:t\n	cursor: text;\nsnippet d\n	display: ${1};\nsnippet d:mib\n	display: -moz-inline-box;\nsnippet d:mis\n	display: -moz-inline-stack;\nsnippet d:b\n	display: block;\nsnippet d:cp\n	display: compact;\nsnippet d:ib\n	display: inline-block;\nsnippet d:itb\n	display: inline-table;\nsnippet d:i\n	display: inline;\nsnippet d:li\n	display: list-item;\nsnippet d:n\n	display: none;\nsnippet d:ri\n	display: run-in;\nsnippet d:tbcp\n	display: table-caption;\nsnippet d:tbc\n	display: table-cell;\nsnippet d:tbclg\n	display: table-column-group;\nsnippet d:tbcl\n	display: table-column;\nsnippet d:tbfg\n	display: table-footer-group;\nsnippet d:tbhg\n	display: table-header-group;\nsnippet d:tbrg\n	display: table-row-group;\nsnippet d:tbr\n	display: table-row;\nsnippet d:tb\n	display: table;\nsnippet ec\n	empty-cells: ${1};\nsnippet ec:h\n	empty-cells: hide;\nsnippet ec:s\n	empty-cells: show;\nsnippet exp\n	expression()\nsnippet fl\n	float: ${1};\nsnippet fl:l\n	float: left;\nsnippet fl:n\n	float: none;\nsnippet fl:r\n	float: right;\nsnippet f+\n	font: ${1:1em} ${2:Arial},${3:sans-serif};\nsnippet fef\n	font-effect: ${1};\nsnippet fef:eb\n	font-effect: emboss;\nsnippet fef:eg\n	font-effect: engrave;\nsnippet fef:n\n	font-effect: none;\nsnippet fef:o\n	font-effect: outline;\nsnippet femp\n	font-emphasize-position: ${1};\nsnippet femp:a\n	font-emphasize-position: after;\nsnippet femp:b\n	font-emphasize-position: before;\nsnippet fems\n	font-emphasize-style: ${1};\nsnippet fems:ac\n	font-emphasize-style: accent;\nsnippet fems:c\n	font-emphasize-style: circle;\nsnippet fems:ds\n	font-emphasize-style: disc;\nsnippet fems:dt\n	font-emphasize-style: dot;\nsnippet fems:n\n	font-emphasize-style: none;\nsnippet fem\n	font-emphasize: ${1};\nsnippet ff\n	font-family: ${1};\nsnippet ff:c\n	font-family: ${1:'Monotype Corsiva','Comic Sans MS'},cursive;\nsnippet ff:f\n	font-family: ${1:Capitals,Impact},fantasy;\nsnippet ff:m\n	font-family: ${1:Monaco,'Courier New'},monospace;\nsnippet ff:ss\n	font-family: ${1:Helvetica,Arial},sans-serif;\nsnippet ff:s\n	font-family: ${1:Georgia,'Times New Roman'},serif;\nsnippet fza\n	font-size-adjust: ${1};\nsnippet fza:n\n	font-size-adjust: none;\nsnippet fz\n	font-size: ${1};\nsnippet fsm\n	font-smooth: ${1};\nsnippet fsm:aw\n	font-smooth: always;\nsnippet fsm:a\n	font-smooth: auto;\nsnippet fsm:n\n	font-smooth: never;\nsnippet fst\n	font-stretch: ${1};\nsnippet fst:c\n	font-stretch: condensed;\nsnippet fst:e\n	font-stretch: expanded;\nsnippet fst:ec\n	font-stretch: extra-condensed;\nsnippet fst:ee\n	font-stretch: extra-expanded;\nsnippet fst:n\n	font-stretch: normal;\nsnippet fst:sc\n	font-stretch: semi-condensed;\nsnippet fst:se\n	font-stretch: semi-expanded;\nsnippet fst:uc\n	font-stretch: ultra-condensed;\nsnippet fst:ue\n	font-stretch: ultra-expanded;\nsnippet fs\n	font-style: ${1};\nsnippet fs:i\n	font-style: italic;\nsnippet fs:n\n	font-style: normal;\nsnippet fs:o\n	font-style: oblique;\nsnippet fv\n	font-variant: ${1};\nsnippet fv:n\n	font-variant: normal;\nsnippet fv:sc\n	font-variant: small-caps;\nsnippet fw\n	font-weight: ${1};\nsnippet fw:b\n	font-weight: bold;\nsnippet fw:br\n	font-weight: bolder;\nsnippet fw:lr\n	font-weight: lighter;\nsnippet fw:n\n	font-weight: normal;\nsnippet f\n	font: ${1};\nsnippet h\n	height: ${1};\nsnippet h:a\n	height: auto;\nsnippet l\n	left: ${1};\nsnippet l:a\n	left: auto;\nsnippet lts\n	letter-spacing: ${1};\nsnippet lh\n	line-height: ${1};\nsnippet lisi\n	list-style-image: url(${1});\nsnippet lisi:n\n	list-style-image: none;\nsnippet lisp\n	list-style-position: ${1};\nsnippet lisp:i\n	list-style-position: inside;\nsnippet lisp:o\n	list-style-position: outside;\nsnippet list\n	list-style-type: ${1};\nsnippet list:c\n	list-style-type: circle;\nsnippet list:dclz\n	list-style-type: decimal-leading-zero;\nsnippet list:dc\n	list-style-type: decimal;\nsnippet list:d\n	list-style-type: disc;\nsnippet list:lr\n	list-style-type: lower-roman;\nsnippet list:n\n	list-style-type: none;\nsnippet list:s\n	list-style-type: square;\nsnippet list:ur\n	list-style-type: upper-roman;\nsnippet lis\n	list-style: ${1};\nsnippet lis:n\n	list-style: none;\nsnippet mb\n	margin-bottom: ${1};\nsnippet mb:a\n	margin-bottom: auto;\nsnippet ml\n	margin-left: ${1};\nsnippet ml:a\n	margin-left: auto;\nsnippet mr\n	margin-right: ${1};\nsnippet mr:a\n	margin-right: auto;\nsnippet mt\n	margin-top: ${1};\nsnippet mt:a\n	margin-top: auto;\nsnippet m\n	margin: ${1};\nsnippet m:4\n	margin: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet m:3\n	margin: ${1:0} ${2:0} ${3:0};\nsnippet m:2\n	margin: ${1:0} ${2:0};\nsnippet m:0\n	margin: 0;\nsnippet m:a\n	margin: auto;\nsnippet mah\n	max-height: ${1};\nsnippet mah:n\n	max-height: none;\nsnippet maw\n	max-width: ${1};\nsnippet maw:n\n	max-width: none;\nsnippet mih\n	min-height: ${1};\nsnippet miw\n	min-width: ${1};\nsnippet op\n	opacity: ${1};\nsnippet op:ie\n	filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100});\nsnippet op:ms\n	-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100})';\nsnippet orp\n	orphans: ${1};\nsnippet o+\n	outline: ${1:1px} ${2:solid} #${3:000};\nsnippet oc\n	outline-color: ${1:#000};\nsnippet oc:i\n	outline-color: invert;\nsnippet oo\n	outline-offset: ${1};\nsnippet os\n	outline-style: ${1};\nsnippet ow\n	outline-width: ${1};\nsnippet o\n	outline: ${1};\nsnippet o:n\n	outline: none;\nsnippet ovs\n	overflow-style: ${1};\nsnippet ovs:a\n	overflow-style: auto;\nsnippet ovs:mq\n	overflow-style: marquee;\nsnippet ovs:mv\n	overflow-style: move;\nsnippet ovs:p\n	overflow-style: panner;\nsnippet ovs:s\n	overflow-style: scrollbar;\nsnippet ovx\n	overflow-x: ${1};\nsnippet ovx:a\n	overflow-x: auto;\nsnippet ovx:h\n	overflow-x: hidden;\nsnippet ovx:s\n	overflow-x: scroll;\nsnippet ovx:v\n	overflow-x: visible;\nsnippet ovy\n	overflow-y: ${1};\nsnippet ovy:a\n	overflow-y: auto;\nsnippet ovy:h\n	overflow-y: hidden;\nsnippet ovy:s\n	overflow-y: scroll;\nsnippet ovy:v\n	overflow-y: visible;\nsnippet ov\n	overflow: ${1};\nsnippet ov:a\n	overflow: auto;\nsnippet ov:h\n	overflow: hidden;\nsnippet ov:s\n	overflow: scroll;\nsnippet ov:v\n	overflow: visible;\nsnippet pb\n	padding-bottom: ${1};\nsnippet pl\n	padding-left: ${1};\nsnippet pr\n	padding-right: ${1};\nsnippet pt\n	padding-top: ${1};\nsnippet p\n	padding: ${1};\nsnippet p:4\n	padding: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet p:3\n	padding: ${1:0} ${2:0} ${3:0};\nsnippet p:2\n	padding: ${1:0} ${2:0};\nsnippet p:0\n	padding: 0;\nsnippet pgba\n	page-break-after: ${1};\nsnippet pgba:aw\n	page-break-after: always;\nsnippet pgba:a\n	page-break-after: auto;\nsnippet pgba:l\n	page-break-after: left;\nsnippet pgba:r\n	page-break-after: right;\nsnippet pgbb\n	page-break-before: ${1};\nsnippet pgbb:aw\n	page-break-before: always;\nsnippet pgbb:a\n	page-break-before: auto;\nsnippet pgbb:l\n	page-break-before: left;\nsnippet pgbb:r\n	page-break-before: right;\nsnippet pgbi\n	page-break-inside: ${1};\nsnippet pgbi:a\n	page-break-inside: auto;\nsnippet pgbi:av\n	page-break-inside: avoid;\nsnippet pos\n	position: ${1};\nsnippet pos:a\n	position: absolute;\nsnippet pos:f\n	position: fixed;\nsnippet pos:r\n	position: relative;\nsnippet pos:s\n	position: static;\nsnippet q\n	quotes: ${1};\nsnippet q:en\n	quotes: '\\201C' '\\201D' '\\2018' '\\2019';\nsnippet q:n\n	quotes: none;\nsnippet q:ru\n	quotes: '\\00AB' '\\00BB' '\\201E' '\\201C';\nsnippet rz\n	resize: ${1};\nsnippet rz:b\n	resize: both;\nsnippet rz:h\n	resize: horizontal;\nsnippet rz:n\n	resize: none;\nsnippet rz:v\n	resize: vertical;\nsnippet r\n	right: ${1};\nsnippet r:a\n	right: auto;\nsnippet tbl\n	table-layout: ${1};\nsnippet tbl:a\n	table-layout: auto;\nsnippet tbl:f\n	table-layout: fixed;\nsnippet tal\n	text-align-last: ${1};\nsnippet tal:a\n	text-align-last: auto;\nsnippet tal:c\n	text-align-last: center;\nsnippet tal:l\n	text-align-last: left;\nsnippet tal:r\n	text-align-last: right;\nsnippet ta\n	text-align: ${1};\nsnippet ta:c\n	text-align: center;\nsnippet ta:l\n	text-align: left;\nsnippet ta:r\n	text-align: right;\nsnippet td\n	text-decoration: ${1};\nsnippet td:l\n	text-decoration: line-through;\nsnippet td:n\n	text-decoration: none;\nsnippet td:o\n	text-decoration: overline;\nsnippet td:u\n	text-decoration: underline;\nsnippet te\n	text-emphasis: ${1};\nsnippet te:ac\n	text-emphasis: accent;\nsnippet te:a\n	text-emphasis: after;\nsnippet te:b\n	text-emphasis: before;\nsnippet te:c\n	text-emphasis: circle;\nsnippet te:ds\n	text-emphasis: disc;\nsnippet te:dt\n	text-emphasis: dot;\nsnippet te:n\n	text-emphasis: none;\nsnippet th\n	text-height: ${1};\nsnippet th:a\n	text-height: auto;\nsnippet th:f\n	text-height: font-size;\nsnippet th:m\n	text-height: max-size;\nsnippet th:t\n	text-height: text-size;\nsnippet ti\n	text-indent: ${1};\nsnippet ti:-\n	text-indent: -9999px;\nsnippet tj\n	text-justify: ${1};\nsnippet tj:a\n	text-justify: auto;\nsnippet tj:d\n	text-justify: distribute;\nsnippet tj:ic\n	text-justify: inter-cluster;\nsnippet tj:ii\n	text-justify: inter-ideograph;\nsnippet tj:iw\n	text-justify: inter-word;\nsnippet tj:k\n	text-justify: kashida;\nsnippet tj:t\n	text-justify: tibetan;\nsnippet to+\n	text-outline: ${1:0} ${2:0} #${3:000};\nsnippet to\n	text-outline: ${1};\nsnippet to:n\n	text-outline: none;\nsnippet tr\n	text-replace: ${1};\nsnippet tr:n\n	text-replace: none;\nsnippet tsh+\n	text-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet tsh\n	text-shadow: ${1};\nsnippet tsh:n\n	text-shadow: none;\nsnippet tt\n	text-transform: ${1};\nsnippet tt:c\n	text-transform: capitalize;\nsnippet tt:l\n	text-transform: lowercase;\nsnippet tt:n\n	text-transform: none;\nsnippet tt:u\n	text-transform: uppercase;\nsnippet tw\n	text-wrap: ${1};\nsnippet tw:no\n	text-wrap: none;\nsnippet tw:n\n	text-wrap: normal;\nsnippet tw:s\n	text-wrap: suppress;\nsnippet tw:u\n	text-wrap: unrestricted;\nsnippet t\n	top: ${1};\nsnippet t:a\n	top: auto;\nsnippet va\n	vertical-align: ${1};\nsnippet va:bl\n	vertical-align: baseline;\nsnippet va:b\n	vertical-align: bottom;\nsnippet va:m\n	vertical-align: middle;\nsnippet va:sub\n	vertical-align: sub;\nsnippet va:sup\n	vertical-align: super;\nsnippet va:tb\n	vertical-align: text-bottom;\nsnippet va:tt\n	vertical-align: text-top;\nsnippet va:t\n	vertical-align: top;\nsnippet v\n	visibility: ${1};\nsnippet v:c\n	visibility: collapse;\nsnippet v:h\n	visibility: hidden;\nsnippet v:v\n	visibility: visible;\nsnippet whsc\n	white-space-collapse: ${1};\nsnippet whsc:ba\n	white-space-collapse: break-all;\nsnippet whsc:bs\n	white-space-collapse: break-strict;\nsnippet whsc:k\n	white-space-collapse: keep-all;\nsnippet whsc:l\n	white-space-collapse: loose;\nsnippet whsc:n\n	white-space-collapse: normal;\nsnippet whs\n	white-space: ${1};\nsnippet whs:n\n	white-space: normal;\nsnippet whs:nw\n	white-space: nowrap;\nsnippet whs:pl\n	white-space: pre-line;\nsnippet whs:pw\n	white-space: pre-wrap;\nsnippet whs:p\n	white-space: pre;\nsnippet wid\n	widows: ${1};\nsnippet w\n	width: ${1};\nsnippet w:a\n	width: auto;\nsnippet wob\n	word-break: ${1};\nsnippet wob:ba\n	word-break: break-all;\nsnippet wob:bs\n	word-break: break-strict;\nsnippet wob:k\n	word-break: keep-all;\nsnippet wob:l\n	word-break: loose;\nsnippet wob:n\n	word-break: normal;\nsnippet wos\n	word-spacing: ${1};\nsnippet wow\n	word-wrap: ${1};\nsnippet wow:no\n	word-wrap: none;\nsnippet wow:n\n	word-wrap: normal;\nsnippet wow:s\n	word-wrap: suppress;\nsnippet wow:u\n	word-wrap: unrestricted;\nsnippet z\n	z-index: ${1};\nsnippet z:a\n	z-index: auto;\nsnippet zoo\n	zoom: 1;\n", t.scope = "css";
});

(function () {
  ace.require(["ace/snippets/css"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/fortran.js":
/*!************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/fortran.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/fortran"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/glsl.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/glsl.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/glsl"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/haskell.js":
/*!************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/haskell.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/haskell", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = "snippet lang\n\t{-# LANGUAGE ${1:OverloadedStrings} #-}\nsnippet info\n\t-- |\n\t-- Module      :  ${1:Module.Namespace}\n\t-- Copyright   :  ${2:Author} ${3:2011-2012}\n\t-- License     :  ${4:BSD3}\n\t--\n\t-- Maintainer  :  ${5:email@something.com}\n\t-- Stability   :  ${6:experimental}\n\t-- Portability :  ${7:unknown}\n\t--\n\t-- ${8:Description}\n\t--\nsnippet import\n\timport           ${1:Data.Text}\nsnippet import2\n\timport           ${1:Data.Text} (${2:head})\nsnippet importq\n\timport qualified ${1:Data.Text} as ${2:T}\nsnippet inst\n\tinstance ${1:Monoid} ${2:Type} where\n\t\t${3}\nsnippet type\n\ttype ${1:Type} = ${2:Type}\nsnippet data\n\tdata ${1:Type} = ${2:$1} ${3:Int}\nsnippet newtype\n\tnewtype ${1:Type} = ${2:$1} ${3:Int}\nsnippet class\n\tclass ${1:Class} a where\n\t\t${2}\nsnippet module\n\tmodule `substitute(substitute(expand('%:r'), '[/\\\\]','.','g'),'^\\%(\\l*\\.\\)\\?','','')` (\n\t)\twhere\n\t`expand('%') =~ 'Main' ? \"\\n\\nmain = do\\n  print \\\"hello world\\\"\" : \"\"`\n\nsnippet const\n\t${1:name} :: ${2:a}\n\t$1 = ${3:undefined}\nsnippet fn\n\t${1:fn} :: ${2:a} -> ${3:a}\n\t$1 ${4} = ${5:undefined}\nsnippet fn2\n\t${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}\n\t$1 ${5} = ${6:undefined}\nsnippet ap\n\t${1:map} ${2:fn} ${3:list}\nsnippet do\n\tdo\n\t\t\nsnippet \u03BB\n\t\\${1:x} -> ${2}\nsnippet \\\n\t\\${1:x} -> ${2}\nsnippet <-\n\t${1:a} <- ${2:m a}\nsnippet \u2190\n\t${1:a} <- ${2:m a}\nsnippet ->\n\t${1:m a} -> ${2:a}\nsnippet \u2192\n\t${1:m a} -> ${2:a}\nsnippet tup\n\t(${1:a}, ${2:b})\nsnippet tup2\n\t(${1:a}, ${2:b}, ${3:c})\nsnippet tup3\n\t(${1:a}, ${2:b}, ${3:c}, ${4:d})\nsnippet rec\n\t${1:Record} { ${2:recFieldA} = ${3:undefined}\n\t\t\t\t, ${4:recFieldB} = ${5:undefined}\n\t\t\t\t}\nsnippet case\n\tcase ${1:something} of\n\t\t${2} -> ${3}\nsnippet let\n\tlet ${1} = ${2}\n\tin ${3}\nsnippet where\n\twhere\n\t\t${1:fn} = ${2:undefined}\n", t.scope = "haskell";
});

(function () {
  ace.require(["ace/snippets/haskell"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/html.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/html.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/html", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = "# Some useful Unicode entities\n# Non-Breaking Space\nsnippet nbs\n\t&nbsp;\n# \u2190\nsnippet left\n\t&#x2190;\n# \u2192\nsnippet right\n\t&#x2192;\n# \u2191\nsnippet up\n\t&#x2191;\n# \u2193\nsnippet down\n\t&#x2193;\n# \u21A9\nsnippet return\n\t&#x21A9;\n# \u21E4\nsnippet backtab\n\t&#x21E4;\n# \u21E5\nsnippet tab\n\t&#x21E5;\n# \u21E7\nsnippet shift\n\t&#x21E7;\n# \u2303\nsnippet ctrl\n\t&#x2303;\n# \u2305\nsnippet enter\n\t&#x2305;\n# \u2318\nsnippet cmd\n\t&#x2318;\n# \u2325\nsnippet option\n\t&#x2325;\n# \u2326\nsnippet delete\n\t&#x2326;\n# \u232B\nsnippet backspace\n\t&#x232B;\n# \u238B\nsnippet esc\n\t&#x238B;\n# Generic Doctype\nsnippet doctype HTML 4.01 Strict\n\t<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n\t\"http://www.w3.org/TR/html4/strict.dtd\">\nsnippet doctype HTML 4.01 Transitional\n\t<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n\t\"http://www.w3.org/TR/html4/loose.dtd\">\nsnippet doctype HTML 5\n\t<!DOCTYPE HTML>\nsnippet doctype XHTML 1.0 Frameset\n\t<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\t\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\nsnippet doctype XHTML 1.0 Strict\n\t<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\t\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\nsnippet doctype XHTML 1.0 Transitional\n\t<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\t\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\nsnippet doctype XHTML 1.1\n\t<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n\t\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n# HTML Doctype 4.01 Strict\nsnippet docts\n\t<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n\t\"http://www.w3.org/TR/html4/strict.dtd\">\n# HTML Doctype 4.01 Transitional\nsnippet doct\n\t<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n\t\"http://www.w3.org/TR/html4/loose.dtd\">\n# HTML Doctype 5\nsnippet doct5\n\t<!DOCTYPE html>\n# XHTML Doctype 1.0 Frameset\nsnippet docxf\n\t<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\"\n\t\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n# XHTML Doctype 1.0 Strict\nsnippet docxs\n\t<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\t\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n# XHTML Doctype 1.0 Transitional\nsnippet docxt\n\t<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\t\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n# XHTML Doctype 1.1\nsnippet docx\n\t<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n\t\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n# html5shiv\nsnippet html5shiv\n\t<!--[if lte IE 8]>\n\t\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js\"></script>\n\t<![endif]-->\nsnippet html5printshiv\n\t<!--[if lte IE 8]>\n\t\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js\"></script>\n\t<![endif]-->\n# Attributes\nsnippet attr\n\t${1:attribute}=\"${2:property}\"\nsnippet attr+\n\t${1:attribute}=\"${2:property}\" attr+${3}\nsnippet .\n\tclass=\"${1}\"${2}\nsnippet #\n\tid=\"${1}\"${2}\nsnippet alt\n\talt=\"${1}\"${2}\nsnippet charset\n\tcharset=\"${1:utf-8}\"${2}\nsnippet data\n\tdata-${1}=\"${2:$1}\"${3}\nsnippet for\n\tfor=\"${1}\"${2}\nsnippet height\n\theight=\"${1}\"${2}\nsnippet href\n\thref=\"${1:#}\"${2}\nsnippet lang\n\tlang=\"${1:en}\"${2}\nsnippet media\n\tmedia=\"${1}\"${2}\nsnippet name\n\tname=\"${1}\"${2}\nsnippet rel\n\trel=\"${1}\"${2}\nsnippet scope\n\tscope=\"${1:row}\"${2}\nsnippet src\n\tsrc=\"${1}\"${2}\nsnippet title=\n\ttitle=\"${1}\"${2}\nsnippet type\n\ttype=\"${1}\"${2}\nsnippet value\n\tvalue=\"${1}\"${2}\nsnippet width\n\twidth=\"${1}\"${2}\n# Elements\nsnippet a\n\t<a href=\"${1:#}\">${2:$1}</a>\nsnippet a.\n\t<a class=\"${1}\" href=\"${2:#}\">${3:$1}</a>\nsnippet a#\n\t<a id=\"${1}\" href=\"${2:#}\">${3:$1}</a>\nsnippet a:ext\n\t<a href=\"http://${1:example.com}\">${2:$1}</a>\nsnippet a:mail\n\t<a href=\"mailto:${1:joe@example.com}?subject=${2:feedback}\">${3:email me}</a>\nsnippet abbr\n\t<abbr title=\"${1}\">${2}</abbr>\nsnippet address\n\t<address>\n\t\t${1}\n\t</address>\nsnippet area\n\t<area shape=\"${1:rect}\" coords=\"${2}\" href=\"${3}\" alt=\"${4}\" />\nsnippet area+\n\t<area shape=\"${1:rect}\" coords=\"${2}\" href=\"${3}\" alt=\"${4}\" />\n\tarea+${5}\nsnippet area:c\n\t<area shape=\"circle\" coords=\"${1}\" href=\"${2}\" alt=\"${3}\" />\nsnippet area:d\n\t<area shape=\"default\" coords=\"${1}\" href=\"${2}\" alt=\"${3}\" />\nsnippet area:p\n\t<area shape=\"poly\" coords=\"${1}\" href=\"${2}\" alt=\"${3}\" />\nsnippet area:r\n\t<area shape=\"rect\" coords=\"${1}\" href=\"${2}\" alt=\"${3}\" />\nsnippet article\n\t<article>\n\t\t${1}\n\t</article>\nsnippet article.\n\t<article class=\"${1}\">\n\t\t${2}\n\t</article>\nsnippet article#\n\t<article id=\"${1}\">\n\t\t${2}\n\t</article>\nsnippet aside\n\t<aside>\n\t\t${1}\n\t</aside>\nsnippet aside.\n\t<aside class=\"${1}\">\n\t\t${2}\n\t</aside>\nsnippet aside#\n\t<aside id=\"${1}\">\n\t\t${2}\n\t</aside>\nsnippet audio\n\t<audio src=\"${1}>${2}</audio>\nsnippet b\n\t<b>${1}</b>\nsnippet base\n\t<base href=\"${1}\" target=\"${2}\" />\nsnippet bdi\n\t<bdi>${1}</bdo>\nsnippet bdo\n\t<bdo dir=\"${1}\">${2}</bdo>\nsnippet bdo:l\n\t<bdo dir=\"ltr\">${1}</bdo>\nsnippet bdo:r\n\t<bdo dir=\"rtl\">${1}</bdo>\nsnippet blockquote\n\t<blockquote>\n\t\t${1}\n\t</blockquote>\nsnippet body\n\t<body>\n\t\t${1}\n\t</body>\nsnippet br\n\t<br />${1}\nsnippet button\n\t<button type=\"${1:submit}\">${2}</button>\nsnippet button.\n\t<button class=\"${1:button}\" type=\"${2:submit}\">${3}</button>\nsnippet button#\n\t<button id=\"${1}\" type=\"${2:submit}\">${3}</button>\nsnippet button:s\n\t<button type=\"submit\">${1}</button>\nsnippet button:r\n\t<button type=\"reset\">${1}</button>\nsnippet canvas\n\t<canvas>\n\t\t${1}\n\t</canvas>\nsnippet caption\n\t<caption>${1}</caption>\nsnippet cite\n\t<cite>${1}</cite>\nsnippet code\n\t<code>${1}</code>\nsnippet col\n\t<col />${1}\nsnippet col+\n\t<col />\n\tcol+${1}\nsnippet colgroup\n\t<colgroup>\n\t\t${1}\n\t</colgroup>\nsnippet colgroup+\n\t<colgroup>\n\t\t<col />\n\t\tcol+${1}\n\t</colgroup>\nsnippet command\n\t<command type=\"command\" label=\"${1}\" icon=\"${2}\" />\nsnippet command:c\n\t<command type=\"checkbox\" label=\"${1}\" icon=\"${2}\" />\nsnippet command:r\n\t<command type=\"radio\" radiogroup=\"${1}\" label=\"${2}\" icon=\"${3}\" />\nsnippet datagrid\n\t<datagrid>\n\t\t${1}\n\t</datagrid>\nsnippet datalist\n\t<datalist>\n\t\t${1}\n\t</datalist>\nsnippet datatemplate\n\t<datatemplate>\n\t\t${1}\n\t</datatemplate>\nsnippet dd\n\t<dd>${1}</dd>\nsnippet dd.\n\t<dd class=\"${1}\">${2}</dd>\nsnippet dd#\n\t<dd id=\"${1}\">${2}</dd>\nsnippet del\n\t<del>${1}</del>\nsnippet details\n\t<details>${1}</details>\nsnippet dfn\n\t<dfn>${1}</dfn>\nsnippet dialog\n\t<dialog>\n\t\t${1}\n\t</dialog>\nsnippet div\n\t<div>\n\t\t${1}\n\t</div>\nsnippet div.\n\t<div class=\"${1}\">\n\t\t${2}\n\t</div>\nsnippet div#\n\t<div id=\"${1}\">\n\t\t${2}\n\t</div>\nsnippet dl\n\t<dl>\n\t\t${1}\n\t</dl>\nsnippet dl.\n\t<dl class=\"${1}\">\n\t\t${2}\n\t</dl>\nsnippet dl#\n\t<dl id=\"${1}\">\n\t\t${2}\n\t</dl>\nsnippet dl+\n\t<dl>\n\t\t<dt>${1}</dt>\n\t\t<dd>${2}</dd>\n\t\tdt+${3}\n\t</dl>\nsnippet dt\n\t<dt>${1}</dt>\nsnippet dt.\n\t<dt class=\"${1}\">${2}</dt>\nsnippet dt#\n\t<dt id=\"${1}\">${2}</dt>\nsnippet dt+\n\t<dt>${1}</dt>\n\t<dd>${2}</dd>\n\tdt+${3}\nsnippet em\n\t<em>${1}</em>\nsnippet embed\n\t<embed src=${1} type=\"${2} />\nsnippet fieldset\n\t<fieldset>\n\t\t${1}\n\t</fieldset>\nsnippet fieldset.\n\t<fieldset class=\"${1}\">\n\t\t${2}\n\t</fieldset>\nsnippet fieldset#\n\t<fieldset id=\"${1}\">\n\t\t${2}\n\t</fieldset>\nsnippet fieldset+\n\t<fieldset>\n\t\t<legend><span>${1}</span></legend>\n\t\t${2}\n\t</fieldset>\n\tfieldset+${3}\nsnippet figcaption\n\t<figcaption>${1}</figcaption>\nsnippet figure\n\t<figure>${1}</figure>\nsnippet footer\n\t<footer>\n\t\t${1}\n\t</footer>\nsnippet footer.\n\t<footer class=\"${1}\">\n\t\t${2}\n\t</footer>\nsnippet footer#\n\t<footer id=\"${1}\">\n\t\t${2}\n\t</footer>\nsnippet form\n\t<form action=\"${1}\" method=\"${2:get}\" accept-charset=\"utf-8\">\n\t\t${3}\n\t</form>\nsnippet form.\n\t<form class=\"${1}\" action=\"${2}\" method=\"${3:get}\" accept-charset=\"utf-8\">\n\t\t${4}\n\t</form>\nsnippet form#\n\t<form id=\"${1}\" action=\"${2}\" method=\"${3:get}\" accept-charset=\"utf-8\">\n\t\t${4}\n\t</form>\nsnippet h1\n\t<h1>${1}</h1>\nsnippet h1.\n\t<h1 class=\"${1}\">${2}</h1>\nsnippet h1#\n\t<h1 id=\"${1}\">${2}</h1>\nsnippet h2\n\t<h2>${1}</h2>\nsnippet h2.\n\t<h2 class=\"${1}\">${2}</h2>\nsnippet h2#\n\t<h2 id=\"${1}\">${2}</h2>\nsnippet h3\n\t<h3>${1}</h3>\nsnippet h3.\n\t<h3 class=\"${1}\">${2}</h3>\nsnippet h3#\n\t<h3 id=\"${1}\">${2}</h3>\nsnippet h4\n\t<h4>${1}</h4>\nsnippet h4.\n\t<h4 class=\"${1}\">${2}</h4>\nsnippet h4#\n\t<h4 id=\"${1}\">${2}</h4>\nsnippet h5\n\t<h5>${1}</h5>\nsnippet h5.\n\t<h5 class=\"${1}\">${2}</h5>\nsnippet h5#\n\t<h5 id=\"${1}\">${2}</h5>\nsnippet h6\n\t<h6>${1}</h6>\nsnippet h6.\n\t<h6 class=\"${1}\">${2}</h6>\nsnippet h6#\n\t<h6 id=\"${1}\">${2}</h6>\nsnippet head\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\n\t\t<title>${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}</title>\n\t\t${2}\n\t</head>\nsnippet header\n\t<header>\n\t\t${1}\n\t</header>\nsnippet header.\n\t<header class=\"${1}\">\n\t\t${2}\n\t</header>\nsnippet header#\n\t<header id=\"${1}\">\n\t\t${2}\n\t</header>\nsnippet hgroup\n\t<hgroup>\n\t\t${1}\n\t</hgroup>\nsnippet hgroup.\n\t<hgroup class=\"${1}>\n\t\t${2}\n\t</hgroup>\nsnippet hr\n\t<hr />${1}\nsnippet html\n\t<html>\n\t${1}\n\t</html>\nsnippet xhtml\n\t<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\t${1}\n\t</html>\nsnippet html5\n\t<!DOCTYPE html>\n\t<html>\n\t\t<head>\n\t\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t\t<title>${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}</title>\n\t\t\t${2:meta}\n\t\t</head>\n\t\t<body>\n\t\t\t${3:body}\n\t\t</body>\n\t</html>\nsnippet xhtml5\n\t<!DOCTYPE html>\n\t<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\t\t<head>\n\t\t\t<meta http-equiv=\"content-type\" content=\"application/xhtml+xml; charset=utf-8\" />\n\t\t\t<title>${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}</title>\n\t\t\t${2:meta}\n\t\t</head>\n\t\t<body>\n\t\t\t${3:body}\n\t\t</body>\n\t</html>\nsnippet i\n\t<i>${1}</i>\nsnippet iframe\n\t<iframe src=\"${1}\" frameborder=\"0\"></iframe>${2}\nsnippet iframe.\n\t<iframe class=\"${1}\" src=\"${2}\" frameborder=\"0\"></iframe>${3}\nsnippet iframe#\n\t<iframe id=\"${1}\" src=\"${2}\" frameborder=\"0\"></iframe>${3}\nsnippet img\n\t<img src=\"${1}\" alt=\"${2}\" />${3}\nsnippet img.\n\t<img class=\"${1}\" src=\"${2}\" alt=\"${3}\" />${4}\nsnippet img#\n\t<img id=\"${1}\" src=\"${2}\" alt=\"${3}\" />${4}\nsnippet input\n\t<input type=\"${1:text/submit/hidden/button/image}\" name=\"${2}\" id=\"${3:$2}\" value=\"${4}\" />${5}\nsnippet input.\n\t<input class=\"${1}\" type=\"${2:text/submit/hidden/button/image}\" name=\"${3}\" id=\"${4:$3}\" value=\"${5}\" />${6}\nsnippet input:text\n\t<input type=\"text\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:submit\n\t<input type=\"submit\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:hidden\n\t<input type=\"hidden\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:button\n\t<input type=\"button\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:image\n\t<input type=\"image\" name=\"${1}\" id=\"${2:$1}\" src=\"${3}\" alt=\"${4}\" />${5}\nsnippet input:checkbox\n\t<input type=\"checkbox\" name=\"${1}\" id=\"${2:$1}\" />${3}\nsnippet input:radio\n\t<input type=\"radio\" name=\"${1}\" id=\"${2:$1}\" />${3}\nsnippet input:color\n\t<input type=\"color\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:date\n\t<input type=\"date\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:datetime\n\t<input type=\"datetime\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:datetime-local\n\t<input type=\"datetime-local\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:email\n\t<input type=\"email\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:file\n\t<input type=\"file\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:month\n\t<input type=\"month\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:number\n\t<input type=\"number\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:password\n\t<input type=\"password\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:range\n\t<input type=\"range\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:reset\n\t<input type=\"reset\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:search\n\t<input type=\"search\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:time\n\t<input type=\"time\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:url\n\t<input type=\"url\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet input:week\n\t<input type=\"week\" name=\"${1}\" id=\"${2:$1}\" value=\"${3}\" />${4}\nsnippet ins\n\t<ins>${1}</ins>\nsnippet kbd\n\t<kbd>${1}</kbd>\nsnippet keygen\n\t<keygen>${1}</keygen>\nsnippet label\n\t<label for=\"${2:$1}\">${1}</label>\nsnippet label:i\n\t<label for=\"${2:$1}\">${1}</label>\n\t<input type=\"${3:text/submit/hidden/button}\" name=\"${4:$2}\" id=\"${5:$2}\" value=\"${6}\" />${7}\nsnippet label:s\n\t<label for=\"${2:$1}\">${1}</label>\n\t<select name=\"${3:$2}\" id=\"${4:$2}\">\n\t\t<option value=\"${5}\">${6:$5}</option>\n\t</select>\nsnippet legend\n\t<legend>${1}</legend>\nsnippet legend+\n\t<legend><span>${1}</span></legend>\nsnippet li\n\t<li>${1}</li>\nsnippet li.\n\t<li class=\"${1}\">${2}</li>\nsnippet li+\n\t<li>${1}</li>\n\tli+${2}\nsnippet lia\n\t<li><a href=\"${2:#}\">${1}</a></li>\nsnippet lia+\n\t<li><a href=\"${2:#}\">${1}</a></li>\n\tlia+${3}\nsnippet link\n\t<link rel=\"${1}\" href=\"${2}\" title=\"${3}\" type=\"${4}\" />${5}\nsnippet link:atom\n\t<link rel=\"alternate\" href=\"${1:atom.xml}\" title=\"Atom\" type=\"application/atom+xml\" />${2}\nsnippet link:css\n\t<link rel=\"stylesheet\" href=\"${2:style.css}\" type=\"text/css\" media=\"${3:all}\" />${4}\nsnippet link:favicon\n\t<link rel=\"shortcut icon\" href=\"${1:favicon.ico}\" type=\"image/x-icon\" />${2}\nsnippet link:rss\n\t<link rel=\"alternate\" href=\"${1:rss.xml}\" title=\"RSS\" type=\"application/atom+xml\" />${2}\nsnippet link:touch\n\t<link rel=\"apple-touch-icon\" href=\"${1:favicon.png}\" />${2}\nsnippet map\n\t<map name=\"${1}\">\n\t\t${2}\n\t</map>\nsnippet map.\n\t<map class=\"${1}\" name=\"${2}\">\n\t\t${3}\n\t</map>\nsnippet map#\n\t<map name=\"${1}\" id=\"${2:$1}>\n\t\t${3}\n\t</map>\nsnippet map+\n\t<map name=\"${1}\">\n\t\t<area shape=\"${2}\" coords=\"${3}\" href=\"${4}\" alt=\"${5}\" />${6}\n\t</map>${7}\nsnippet mark\n\t<mark>${1}</mark>\nsnippet menu\n\t<menu>\n\t\t${1}\n\t</menu>\nsnippet menu:c\n\t<menu type=\"context\">\n\t\t${1}\n\t</menu>\nsnippet menu:t\n\t<menu type=\"toolbar\">\n\t\t${1}\n\t</menu>\nsnippet meta\n\t<meta http-equiv=\"${1}\" content=\"${2}\" />${3}\nsnippet meta:compat\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=${1:7,8,edge}\" />${3}\nsnippet meta:refresh\n\t<meta http-equiv=\"refresh\" content=\"text/html;charset=UTF-8\" />${3}\nsnippet meta:utf\n\t<meta http-equiv=\"content-type\" content=\"text/html;charset=UTF-8\" />${3}\nsnippet meter\n\t<meter>${1}</meter>\nsnippet nav\n\t<nav>\n\t\t${1}\n\t</nav>\nsnippet nav.\n\t<nav class=\"${1}\">\n\t\t${2}\n\t</nav>\nsnippet nav#\n\t<nav id=\"${1}\">\n\t\t${2}\n\t</nav>\nsnippet noscript\n\t<noscript>\n\t\t${1}\n\t</noscript>\nsnippet object\n\t<object data=\"${1}\" type=\"${2}\">\n\t\t${3}\n\t</object>${4}\n# Embed QT Movie\nsnippet movie\n\t<object width=\"$2\" height=\"$3\" classid=\"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B\"\n\t codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\">\n\t\t<param name=\"src\" value=\"$1\" />\n\t\t<param name=\"controller\" value=\"$4\" />\n\t\t<param name=\"autoplay\" value=\"$5\" />\n\t\t<embed src=\"${1:movie.mov}\"\n\t\t\twidth=\"${2:320}\" height=\"${3:240}\"\n\t\t\tcontroller=\"${4:true}\" autoplay=\"${5:true}\"\n\t\t\tscale=\"tofit\" cache=\"true\"\n\t\t\tpluginspage=\"http://www.apple.com/quicktime/download/\" />\n\t</object>${6}\nsnippet ol\n\t<ol>\n\t\t${1}\n\t</ol>\nsnippet ol.\n\t<ol class=\"${1}>\n\t\t${2}\n\t</ol>\nsnippet ol#\n\t<ol id=\"${1}>\n\t\t${2}\n\t</ol>\nsnippet ol+\n\t<ol>\n\t\t<li>${1}</li>\n\t\tli+${2}\n\t</ol>\nsnippet opt\n\t<option value=\"${1}\">${2:$1}</option>\nsnippet opt+\n\t<option value=\"${1}\">${2:$1}</option>\n\topt+${3}\nsnippet optt\n\t<option>${1}</option>\nsnippet optgroup\n\t<optgroup>\n\t\t<option value=\"${1}\">${2:$1}</option>\n\t\topt+${3}\n\t</optgroup>\nsnippet output\n\t<output>${1}</output>\nsnippet p\n\t<p>${1}</p>\nsnippet param\n\t<param name=\"${1}\" value=\"${2}\" />${3}\nsnippet pre\n\t<pre>\n\t\t${1}\n\t</pre>\nsnippet progress\n\t<progress>${1}</progress>\nsnippet q\n\t<q>${1}</q>\nsnippet rp\n\t<rp>${1}</rp>\nsnippet rt\n\t<rt>${1}</rt>\nsnippet ruby\n\t<ruby>\n\t\t<rp><rt>${1}</rt></rp>\n\t</ruby>\nsnippet s\n\t<s>${1}</s>\nsnippet samp\n\t<samp>\n\t\t${1}\n\t</samp>\nsnippet script\n\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t${1}\n\t</script>\nsnippet scriptsrc\n\t<script src=\"${1}.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\nsnippet newscript\n\t<script type=\"application/javascript\" charset=\"utf-8\">\n\t\t${1}\n\t</script>\nsnippet newscriptsrc\n\t<script src=\"${1}.js\" type=\"application/javascript\" charset=\"utf-8\"></script>\nsnippet section\n\t<section>\n\t\t${1}\n\t</section>\nsnippet section.\n\t<section class=\"${1}\">\n\t\t${2}\n\t</section>\nsnippet section#\n\t<section id=\"${1}\">\n\t\t${2}\n\t</section>\nsnippet select\n\t<select name=\"${1}\" id=\"${2:$1}\">\n\t\t${3}\n\t</select>\nsnippet select.\n\t<select name=\"${1}\" id=\"${2:$1}\" class=\"${3}>\n\t\t${4}\n\t</select>\nsnippet select+\n\t<select name=\"${1}\" id=\"${2:$1}\">\n\t\t<option value=\"${3}\">${4:$3}</option>\n\t\topt+${5}\n\t</select>\nsnippet small\n\t<small>${1}</small>\nsnippet source\n\t<source src=\"${1}\" type=\"${2}\" media=\"${3}\" />\nsnippet span\n\t<span>${1}</span>\nsnippet strong\n\t<strong>${1}</strong>\nsnippet style\n\t<style type=\"text/css\" media=\"${1:all}\">\n\t\t${2}\n\t</style>\nsnippet sub\n\t<sub>${1}</sub>\nsnippet summary\n\t<summary>\n\t\t${1}\n\t</summary>\nsnippet sup\n\t<sup>${1}</sup>\nsnippet table\n\t<table border=\"${1:0}\">\n\t\t${2}\n\t</table>\nsnippet table.\n\t<table class=\"${1}\" border=\"${2:0}\">\n\t\t${3}\n\t</table>\nsnippet table#\n\t<table id=\"${1}\" border=\"${2:0}\">\n\t\t${3}\n\t</table>\nsnippet tbody\n\t<tbody>\n\t\t${1}\n\t</tbody>\nsnippet td\n\t<td>${1}</td>\nsnippet td.\n\t<td class=\"${1}\">${2}</td>\nsnippet td#\n\t<td id=\"${1}\">${2}</td>\nsnippet td+\n\t<td>${1}</td>\n\ttd+${2}\nsnippet textarea\n\t<textarea name=\"${1}\" id=${2:$1} rows=\"${3:8}\" cols=\"${4:40}\">${5}</textarea>${6}\nsnippet tfoot\n\t<tfoot>\n\t\t${1}\n\t</tfoot>\nsnippet th\n\t<th>${1}</th>\nsnippet th.\n\t<th class=\"${1}\">${2}</th>\nsnippet th#\n\t<th id=\"${1}\">${2}</th>\nsnippet th+\n\t<th>${1}</th>\n\tth+${2}\nsnippet thead\n\t<thead>\n\t\t${1}\n\t</thead>\nsnippet time\n\t<time datetime=\"${1}\" pubdate=\"${2:$1}>${3:$1}</time>\nsnippet title\n\t<title>${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}</title>\nsnippet tr\n\t<tr>\n\t\t${1}\n\t</tr>\nsnippet tr+\n\t<tr>\n\t\t<td>${1}</td>\n\t\ttd+${2}\n\t</tr>\nsnippet track\n\t<track src=\"${1}\" srclang=\"${2}\" label=\"${3}\" default=\"${4:default}>${5}</track>${6}\nsnippet ul\n\t<ul>\n\t\t${1}\n\t</ul>\nsnippet ul.\n\t<ul class=\"${1}\">\n\t\t${2}\n\t</ul>\nsnippet ul#\n\t<ul id=\"${1}\">\n\t\t${2}\n\t</ul>\nsnippet ul+\n\t<ul>\n\t\t<li>${1}</li>\n\t\tli+${2}\n\t</ul>\nsnippet var\n\t<var>${1}</var>\nsnippet video\n\t<video src=\"${1} height=\"${2}\" width=\"${3}\" preload=\"${5:none}\" autoplay=\"${6:autoplay}>${7}</video>${8}\nsnippet wbr\n\t<wbr />${1}\n", t.scope = "html";
});

(function () {
  ace.require(["ace/snippets/html"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/java.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/java.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/java", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = '## Access Modifiers\nsnippet po\n	protected\nsnippet pu\n	public\nsnippet pr\n	private\n##\n## Annotations\nsnippet before\n	@Before\n	static void ${1:intercept}(${2:args}) { ${3} }\nsnippet mm\n	@ManyToMany\n	${1}\nsnippet mo\n	@ManyToOne\n	${1}\nsnippet om\n	@OneToMany${1:(cascade=CascadeType.ALL)}\n	${2}\nsnippet oo\n	@OneToOne\n	${1}\n##\n## Basic Java packages and import\nsnippet im\n	import\nsnippet j.b\n	java.beans.\nsnippet j.i\n	java.io.\nsnippet j.m\n	java.math.\nsnippet j.n\n	java.net.\nsnippet j.u\n	java.util.\n##\n## Class\nsnippet cl\n	class ${1:`Filename("", "untitled")`} ${2}\nsnippet in\n	interface ${1:`Filename("", "untitled")`} ${2:extends Parent}${3}\nsnippet tc\n	public class ${1:`Filename()`} extends ${2:TestCase}\n##\n## Class Enhancements\nsnippet ext\n	extends \nsnippet imp\n	implements\n##\n## Comments\nsnippet /*\n	/*\n	 * ${1}\n	 */\n##\n## Constants\nsnippet co\n	static public final ${1:String} ${2:var} = ${3};${4}\nsnippet cos\n	static public final String ${1:var} = "${2}";${3}\n##\n## Control Statements\nsnippet case\n	case ${1}:\n		${2}\nsnippet def\n	default:\n		${2}\nsnippet el\n	else\nsnippet elif\n	else if (${1}) ${2}\nsnippet if\n	if (${1}) ${2}\nsnippet sw\n	switch (${1}) {\n		${2}\n	}\n##\n## Create a Method\nsnippet m\n	${1:void} ${2:method}(${3}) ${4:throws }${5}\n##\n## Create a Variable\nsnippet v\n	${1:String} ${2:var}${3: = null}${4};${5}\n##\n## Enhancements to Methods, variables, classes, etc.\nsnippet ab\n	abstract\nsnippet fi\n	final\nsnippet st\n	static\nsnippet sy\n	synchronized\n##\n## Error Methods\nsnippet err\n	System.err.print("${1:Message}");\nsnippet errf\n	System.err.printf("${1:Message}", ${2:exception});\nsnippet errln\n	System.err.println("${1:Message}");\n##\n## Exception Handling\nsnippet as\n	assert ${1:test} : "${2:Failure message}";${3}\nsnippet ca\n	catch(${1:Exception} ${2:e}) ${3}\nsnippet thr\n	throw\nsnippet ths\n	throws\nsnippet try\n	try {\n		${3}\n	} catch(${1:Exception} ${2:e}) {\n	}\nsnippet tryf\n	try {\n		${3}\n	} catch(${1:Exception} ${2:e}) {\n	} finally {\n	}\n##\n## Find Methods\nsnippet findall\n	List<${1:listName}> ${2:items} = ${1}.findAll();${3}\nsnippet findbyid\n	${1:var} ${2:item} = ${1}.findById(${3});${4}\n##\n## Javadocs\nsnippet /**\n	/**\n	 * ${1}\n	 */\nsnippet @au\n	@author `system("grep \\`id -un\\` /etc/passwd | cut -d \\":\\" -f5 | cut -d \\",\\" -f1")`\nsnippet @br\n	@brief ${1:Description}\nsnippet @fi\n	@file ${1:`Filename()`}.java\nsnippet @pa\n	@param ${1:param}\nsnippet @re\n	@return ${1:param}\n##\n## Logger Methods\nsnippet debug\n	Logger.debug(${1:param});${2}\nsnippet error\n	Logger.error(${1:param});${2}\nsnippet info\n	Logger.info(${1:param});${2}\nsnippet warn\n	Logger.warn(${1:param});${2}\n##\n## Loops\nsnippet enfor\n	for (${1} : ${2}) ${3}\nsnippet for\n	for (${1}; ${2}; ${3}) ${4}\nsnippet wh\n	while (${1}) ${2}\n##\n## Main method\nsnippet main\n	public static void main (String[] args) {\n		${1:/* code */}\n	}\n##\n## Print Methods\nsnippet print\n	System.out.print("${1:Message}");\nsnippet printf\n	System.out.printf("${1:Message}", ${2:args});\nsnippet println\n	System.out.println(${1});\n##\n## Render Methods\nsnippet ren\n	render(${1:param});${2}\nsnippet rena\n	renderArgs.put("${1}", ${2});${3}\nsnippet renb\n	renderBinary(${1:param});${2}\nsnippet renj\n	renderJSON(${1:param});${2}\nsnippet renx\n	renderXml(${1:param});${2}\n##\n## Setter and Getter Methods\nsnippet set\n	${1:public} void set${3:}(${2:String} ${4:}){\n		this.$4 = $4;\n	}\nsnippet get\n	${1:public} ${2:String} get${3:}(){\n		return this.${4:};\n	}\n##\n## Terminate Methods or Loops\nsnippet re\n	return\nsnippet br\n	break;\n##\n## Test Methods\nsnippet t\n	public void test${1:Name}() throws Exception {\n		${2}\n	}\nsnippet test\n	@Test\n	public void test${1:Name}() throws Exception {\n		${2}\n	}\n##\n## Utils\nsnippet Sc\n	Scanner\n##\n## Miscellaneous\nsnippet action\n	public static void ${1:index}(${2:args}) { ${3} }\nsnippet rnf\n	notFound(${1:param});${2}\nsnippet rnfin\n	notFoundIfNull(${1:param});${2}\nsnippet rr\n	redirect(${1:param});${2}\nsnippet ru\n	unauthorized(${1:param});${2}\nsnippet unless\n	(unless=${1:param});${2}\n', t.scope = "java";
});

(function () {
  ace.require(["ace/snippets/java"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/javascript.js":
/*!***************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/javascript.js ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/javascript", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = "# Prototype\nsnippet proto\n\t${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n\t\t${4:// body...}\n\t};\n# Function\nsnippet fun\n\tfunction ${1?:function_name}(${2:argument}) {\n\t\t${3:// body...}\n\t}\n# Anonymous Function\nregex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\nsnippet f\n\tfunction${M1?: ${1:functionName}}($2) {\n\t\t${0:$TM_SELECTED_TEXT}\n\t}${M2?;}${M3?,}${M4?)}\n# Immediate function\ntrigger \\(?f\\(\nendTrigger \\)?\nsnippet f(\n\t(function(${1}) {\n\t\t${0:${TM_SELECTED_TEXT:/* code */}}\n\t}(${1}));\n# if\nsnippet if\n\tif (${1:true}) {\n\t\t${0}\n\t}\n# if ... else\nsnippet ife\n\tif (${1:true}) {\n\t\t${2}\n\t} else {\n\t\t${0}\n\t}\n# tertiary conditional\nsnippet ter\n\t${1:/* condition */} ? ${2:a} : ${3:b}\n# switch\nsnippet switch\n\tswitch (${1:expression}) {\n\t\tcase '${3:case}':\n\t\t\t${4:// code}\n\t\t\tbreak;\n\t\t${5}\n\t\tdefault:\n\t\t\t${2:// code}\n\t}\n# case\nsnippet case\n\tcase '${1:case}':\n\t\t${2:// code}\n\t\tbreak;\n\t${3}\n\n# while (...) {...}\nsnippet wh\n\twhile (${1:/* condition */}) {\n\t\t${0:/* code */}\n\t}\n# try\nsnippet try\n\ttry {\n\t\t${0:/* code */}\n\t} catch (e) {}\n# do...while\nsnippet do\n\tdo {\n\t\t${2:/* code */}\n\t} while (${1:/* condition */});\n# Object Method\nsnippet :f\nregex /([,{[])|^\\s*/:f/\n\t${1:method_name}: function(${2:attribute}) {\n\t\t${0}\n\t}${3:,}\n# setTimeout function\nsnippet setTimeout\nregex /\\b/st|timeout|setTimeo?u?t?/\n\tsetTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\n# Get Elements\nsnippet gett\n\tgetElementsBy${1:TagName}('${2}')${3}\n# Get Element\nsnippet get\n\tgetElementBy${1:Id}('${2}')${3}\n# console.log (Firebug)\nsnippet cl\n\tconsole.log(${1});\n# return\nsnippet ret\n\treturn ${1:result}\n# for (property in object ) { ... }\nsnippet fori\n\tfor (var ${1:prop} in ${2:Things}) {\n\t\t${0:$2[$1]}\n\t}\n# hasOwnProperty\nsnippet has\n\thasOwnProperty(${1})\n# docstring\nsnippet /**\n\t/**\n\t * ${1:description}\n\t *\n\t */\nsnippet @par\nregex /^\\s*\\*\\s*/@(para?m?)?/\n\t@param {${1:type}} ${2:name} ${3:description}\nsnippet @ret\n\t@return {${1:type}} ${2:description}\n# JSON.parse\nsnippet jsonp\n\tJSON.parse(${1:jstr});\n# JSON.stringify\nsnippet jsons\n\tJSON.stringify(${1:object});\n# self-defining function\nsnippet sdf\n\tvar ${1:function_name} = function(${2:argument}) {\n\t\t${3:// initial code ...}\n\n\t\t$1 = function($2) {\n\t\t\t${4:// main code}\n\t\t};\n\t}\n# singleton\nsnippet sing\n\tfunction ${1:Singleton} (${2:argument}) {\n\t\t// the cached instance\n\t\tvar instance;\n\n\t\t// rewrite the constructor\n\t\t$1 = function $1($2) {\n\t\t\treturn instance;\n\t\t};\n\t\t\n\t\t// carry over the prototype properties\n\t\t$1.prototype = this;\n\n\t\t// the instance\n\t\tinstance = new $1();\n\n\t\t// reset the constructor pointer\n\t\tinstance.constructor = $1;\n\n\t\t${3:// code ...}\n\n\t\treturn instance;\n\t}\n# class\nsnippet class\nregex /^\\s*/clas{0,2}/\n\tvar ${1:class} = function(${20}) {\n\t\t$40$0\n\t};\n\t\n\t(function() {\n\t\t${60:this.prop = \"\"}\n\t}).call(${1:class}.prototype);\n\t\n\texports.${1:class} = ${1:class};\n# \nsnippet for-\n\tfor (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\n\t\t${0:${2:Things}[${1:i}];}\n\t}\n# for (...) {...}\nsnippet for\n\tfor (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\n\t\t${3:$2[$1]}$0\n\t}\n# for (...) {...} (Improved Native For-Loop)\nsnippet forr\n\tfor (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\n\t\t${3:$2[$1]}$0\n\t}\n\n\n#modules\nsnippet def\n\tdefine(function(require, exports, module) {\n\t\"use strict\";\n\tvar ${1/.*\\///} = require(\"${1}\");\n\t\n\t$TM_SELECTED_TEXT\n\t});\nsnippet req\nguard ^\\s*\n\tvar ${1/.*\\///} = require(\"${1}\");\n\t$0\nsnippet requ\nguard ^\\s*\n\tvar ${1/.*\\/(.)/\\u$1/} = require(\"${1}\").${1/.*\\/(.)/\\u$1/};\n\t$0\n", t.scope = "javascript";
});

(function () {
  ace.require(["ace/snippets/javascript"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/json.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/json.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/json"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/jsx.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/jsx.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/jsx"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/julia.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/julia.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/julia"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/latex.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/latex.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/latex"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/markdown.js":
/*!*************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/markdown.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/markdown", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = '# Markdown\n\n# Includes octopress (http://octopress.org/) snippets\n\nsnippet [\n	[${1:text}](http://${2:address} "${3:title}")\nsnippet [*\n	[${1:link}](${2:`@*`} "${3:title}")${4}\n\nsnippet [:\n	[${1:id}]: http://${2:url} "${3:title}"\nsnippet [:*\n	[${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ![\n	![${1:alttext}](${2:/images/image.jpg} "${3:title}")\nsnippet ![*\n	![${1:alt}](${2:`@*`} "${3:title}")${4}\n\nsnippet ![:\n	![${1:id}]: ${2:url} "${3:title}"\nsnippet ![:*\n	![${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ===\nregex /^/=+/=*//\n	${PREV_LINE/./=/g}\n	\n	${0}\nsnippet ---\nregex /^/-+/-*//\n	${PREV_LINE/./-/g}\n	\n	${0}\nsnippet blockquote\n	{% blockquote %}\n	${1:quote}\n	{% endblockquote %}\n\nsnippet blockquote-author\n	{% blockquote ${1:author}, ${2:title} %}\n	${3:quote}\n	{% endblockquote %}\n\nsnippet blockquote-link\n	{% blockquote ${1:author} ${2:URL} ${3:link_text} %}\n	${4:quote}\n	{% endblockquote %}\n\nsnippet bt-codeblock-short\n	```\n	${1:code_snippet}\n	```\n\nsnippet bt-codeblock-full\n	``` ${1:language} ${2:title} ${3:URL} ${4:link_text}\n	${5:code_snippet}\n	```\n\nsnippet codeblock-short\n	{% codeblock %}\n	${1:code_snippet}\n	{% endcodeblock %}\n\nsnippet codeblock-full\n	{% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}\n	${5:code_snippet}\n	{% endcodeblock %}\n\nsnippet gist-full\n	{% gist ${1:gist_id} ${2:filename} %}\n\nsnippet gist-short\n	{% gist ${1:gist_id} %}\n\nsnippet img\n	{% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %}\n\nsnippet youtube\n	{% youtube ${1:video_id} %}\n\n# The quote should appear only once in the text. It is inherently part of it.\n# See http://octopress.org/docs/plugins/pullquote/ for more info.\n\nsnippet pullquote\n	{% pullquote %}\n	${1:text} {" ${2:quote} "} ${3:text}\n	{% endpullquote %}\n', t.scope = "markdown";
});

(function () {
  ace.require(["ace/snippets/markdown"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/python.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/python.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/python", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = 'snippet #!\n	#!/usr/bin/env python\nsnippet imp\n	import ${1:module}\nsnippet from\n	from ${1:package} import ${2:module}\n# Module Docstring\nsnippet docs\n	\'\'\'\n	File: ${1:FILENAME:file_name}\n	Author: ${2:author}\n	Description: ${3}\n	\'\'\'\nsnippet wh\n	while ${1:condition}:\n		${2:# TODO: write code...}\n# dowh - does the same as do...while in other languages\nsnippet dowh\n	while True:\n		${1:# TODO: write code...}\n		if ${2:condition}:\n			break\nsnippet with\n	with ${1:expr} as ${2:var}:\n		${3:# TODO: write code...}\n# New Class\nsnippet cl\n	class ${1:ClassName}(${2:object}):\n		"""${3:docstring for $1}"""\n		def __init__(self, ${4:arg}):\n			${5:super($1, self).__init__()}\n			self.$4 = $4\n			${6}\n# New Function\nsnippet def\n	def ${1:fname}(${2:`indent(\'.\') ? \'self\' : \'\'`}):\n		"""${3:docstring for $1}"""\n		${4:# TODO: write code...}\nsnippet deff\n	def ${1:fname}(${2:`indent(\'.\') ? \'self\' : \'\'`}):\n		${3:# TODO: write code...}\n# New Method\nsnippet defs\n	def ${1:mname}(self, ${2:arg}):\n		${3:# TODO: write code...}\n# New Property\nsnippet property\n	def ${1:foo}():\n		doc = "${2:The $1 property.}"\n		def fget(self):\n			${3:return self._$1}\n		def fset(self, value):\n			${4:self._$1 = value}\n# Ifs\nsnippet if\n	if ${1:condition}:\n		${2:# TODO: write code...}\nsnippet el\n	else:\n		${1:# TODO: write code...}\nsnippet ei\n	elif ${1:condition}:\n		${2:# TODO: write code...}\n# For\nsnippet for\n	for ${1:item} in ${2:items}:\n		${3:# TODO: write code...}\n# Encodes\nsnippet cutf8\n	# -*- coding: utf-8 -*-\nsnippet clatin1\n	# -*- coding: latin-1 -*-\nsnippet cascii\n	# -*- coding: ascii -*-\n# Lambda\nsnippet ld\n	${1:var} = lambda ${2:vars} : ${3:action}\nsnippet .\n	self.\nsnippet try Try/Except\n	try:\n		${1:# TODO: write code...}\n	except ${2:Exception}, ${3:e}:\n		${4:raise $3}\nsnippet try Try/Except/Else\n	try:\n		${1:# TODO: write code...}\n	except ${2:Exception}, ${3:e}:\n		${4:raise $3}\n	else:\n		${5:# TODO: write code...}\nsnippet try Try/Except/Finally\n	try:\n		${1:# TODO: write code...}\n	except ${2:Exception}, ${3:e}:\n		${4:raise $3}\n	finally:\n		${5:# TODO: write code...}\nsnippet try Try/Except/Else/Finally\n	try:\n		${1:# TODO: write code...}\n	except ${2:Exception}, ${3:e}:\n		${4:raise $3}\n	else:\n		${5:# TODO: write code...}\n	finally:\n		${6:# TODO: write code...}\n# if __name__ == \'__main__\':\nsnippet ifmain\n	if __name__ == \'__main__\':\n		${1:main()}\n# __magic__\nsnippet _\n	__${1:init}__${2}\n# python debugger (pdb)\nsnippet pdb\n	import pdb; pdb.set_trace()\n# ipython debugger (ipdb)\nsnippet ipdb\n	import ipdb; ipdb.set_trace()\n# ipython debugger (pdbbb)\nsnippet pdbbb\n	import pdbpp; pdbpp.set_trace()\nsnippet pprint\n	import pprint; pprint.pprint(${1})${2}\nsnippet "\n	"""\n	${1:doc}\n	"""\n# test function/method\nsnippet test\n	def test_${1:description}(${2:self}):\n		${3:# TODO: write code...}\n# test case\nsnippet testcase\n	class ${1:ExampleCase}(unittest.TestCase):\n		\n		def test_${2:description}(self):\n			${3:# TODO: write code...}\nsnippet fut\n	from __future__ import ${1}\n#getopt\nsnippet getopt\n	try:\n		# Short option syntax: "hv:"\n		# Long option syntax: "help" or "verbose="\n		opts, args = getopt.getopt(sys.argv[1:], "${1:short_options}", [${2:long_options}])\n	\n	except getopt.GetoptError, err:\n		# Print debug info\n		print str(err)\n		${3:error_action}\n\n	for option, argument in opts:\n		if option in ("-h", "--help"):\n			${4}\n		elif option in ("-v", "--verbose"):\n			verbose = argument\n', t.scope = "python";
});

(function () {
  ace.require(["ace/snippets/python"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/r.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/r.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/r", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = 'snippet #!\n	#!/usr/bin/env Rscript\n\n# includes\nsnippet lib\n	library(${1:package})\nsnippet req\n	require(${1:package})\nsnippet source\n	source(\'${1:file}\')\n\n# conditionals\nsnippet if\n	if (${1:condition}) {\n		${2:code}\n	}\nsnippet el\n	else {\n		${1:code}\n	}\nsnippet ei\n	else if (${1:condition}) {\n		${2:code}\n	}\n\n# functions\nsnippet fun\n	${1:name} = function (${2:variables}) {\n		${3:code}\n	}\nsnippet ret\n	return(${1:code})\n\n# dataframes, lists, etc\nsnippet df\n	${1:name}[${2:rows}, ${3:cols}]\nsnippet c\n	c(${1:items})\nsnippet li\n	list(${1:items})\nsnippet mat\n	matrix(${1:data}, nrow=${2:rows}, ncol=${3:cols})\n\n# apply functions\nsnippet apply\n	apply(${1:array}, ${2:margin}, ${3:function})\nsnippet lapply\n	lapply(${1:list}, ${2:function})\nsnippet sapply\n	sapply(${1:list}, ${2:function})\nsnippet vapply\n	vapply(${1:list}, ${2:function}, ${3:type})\nsnippet mapply\n	mapply(${1:function}, ${2:...})\nsnippet tapply\n	tapply(${1:vector}, ${2:index}, ${3:function})\nsnippet rapply\n	rapply(${1:list}, ${2:function})\n\n# plyr functions\nsnippet dd\n	ddply(${1:frame}, ${2:variables}, ${3:function})\nsnippet dl\n	dlply(${1:frame}, ${2:variables}, ${3:function})\nsnippet da\n	daply(${1:frame}, ${2:variables}, ${3:function})\nsnippet d_\n	d_ply(${1:frame}, ${2:variables}, ${3:function})\n\nsnippet ad\n	adply(${1:array}, ${2:margin}, ${3:function})\nsnippet al\n	alply(${1:array}, ${2:margin}, ${3:function})\nsnippet aa\n	aaply(${1:array}, ${2:margin}, ${3:function})\nsnippet a_\n	a_ply(${1:array}, ${2:margin}, ${3:function})\n\nsnippet ld\n	ldply(${1:list}, ${2:function})\nsnippet ll\n	llply(${1:list}, ${2:function})\nsnippet la\n	laply(${1:list}, ${2:function})\nsnippet l_\n	l_ply(${1:list}, ${2:function})\n\nsnippet md\n	mdply(${1:matrix}, ${2:function})\nsnippet ml\n	mlply(${1:matrix}, ${2:function})\nsnippet ma\n	maply(${1:matrix}, ${2:function})\nsnippet m_\n	m_ply(${1:matrix}, ${2:function})\n\n# plot functions\nsnippet pl\n	plot(${1:x}, ${2:y})\nsnippet ggp\n	ggplot(${1:data}, aes(${2:aesthetics}))\nsnippet img\n	${1:(jpeg,bmp,png,tiff)}(filename="${2:filename}", width=${3}, height=${4}, unit="${5}")\n	${6:plot}\n	dev.off()\n\n# statistical test functions\nsnippet fis\n	fisher.test(${1:x}, ${2:y})\nsnippet chi\n	chisq.test(${1:x}, ${2:y})\nsnippet tt\n	t.test(${1:x}, ${2:y})\nsnippet wil\n	wilcox.test(${1:x}, ${2:y})\nsnippet cor\n	cor.test(${1:x}, ${2:y})\nsnippet fte\n	var.test(${1:x}, ${2:y})\nsnippet kvt \n	kv.test(${1:x}, ${2:y})\n', t.scope = "r";
});

(function () {
  ace.require(["ace/snippets/r"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/rhtml.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/rhtml.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/rhtml"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/scss.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/scss.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/scss"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/sql.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/sql.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/sql", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = "snippet tbl\n	create table ${1:table} (\n		${2:columns}\n	);\nsnippet col\n	${1:name}	${2:type}	${3:default ''}	${4:not null}\nsnippet ccol\n	${1:name}	varchar2(${2:size})	${3:default ''}	${4:not null}\nsnippet ncol\n	${1:name}	number	${3:default 0}	${4:not null}\nsnippet dcol\n	${1:name}	date	${3:default sysdate}	${4:not null}\nsnippet ind\n	create index ${3:$1_$2} on ${1:table}(${2:column});\nsnippet uind\n	create unique index ${1:name} on ${2:table}(${3:column});\nsnippet tblcom\n	comment on table ${1:table} is '${2:comment}';\nsnippet colcom\n	comment on column ${1:table}.${2:column} is '${3:comment}';\nsnippet addcol\n	alter table ${1:table} add (${2:column} ${3:type});\nsnippet seq\n	create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\nsnippet s*\n	select * from ${1:table}\n", t.scope = "sql";
});

(function () {
  ace.require(["ace/snippets/sql"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/svg.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/svg.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/svg"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/tex.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/tex.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/snippets/tex", ["require", "exports", "module"], function (e, t, n) {
  "use strict";

  t.snippetText = "#PREAMBLE\n#newcommand\nsnippet nc\n\t\\newcommand{\\${1:cmd}}[${2:opt}]{${3:realcmd}}${4}\n#usepackage\nsnippet up\n\t\\usepackage[${1:[options}]{${2:package}}\n#newunicodechar\nsnippet nuc\n\t\\newunicodechar{${1}}{${2:\\ensuremath}${3:tex-substitute}}}\n#DeclareMathOperator\nsnippet dmo\n\t\\DeclareMathOperator{${1}}{${2}}\n\n#DOCUMENT\n# \\begin{}...\\end{}\nsnippet begin\n\t\\begin{${1:env}}\n\t\t${2}\n\t\\end{$1}\n# Tabular\nsnippet tab\n\t\\begin{${1:tabular}}{${2:c}}\n\t${3}\n\t\\end{$1}\nsnippet thm\n\t\\begin[${1:author}]{${2:thm}}\n\t${3}\n\t\\end{$1}\nsnippet center\n\t\\begin{center}\n\t\t${1}\n\t\\end{center}\n# Align(ed)\nsnippet ali\n\t\\begin{align${1:ed}}\n\t\t${2}\n\t\\end{align$1}\n# Gather(ed)\nsnippet gat\n\t\\begin{gather${1:ed}}\n\t\t${2}\n\t\\end{gather$1}\n# Equation\nsnippet eq\n\t\\begin{equation}\n\t\t${1}\n\t\\end{equation}\n# Equation\nsnippet eq*\n\t\\begin{equation*}\n\t\t${1}\n\t\\end{equation*}\n# Unnumbered Equation\nsnippet \\\n\t\\[\n\t\t${1}\n\t\\]\n# Enumerate\nsnippet enum\n\t\\begin{enumerate}\n\t\t\\item ${1}\n\t\\end{enumerate}\n# Itemize\nsnippet itemize\n\t\\begin{itemize}\n\t\t\\item ${1}\n\t\\end{itemize}\n# Description\nsnippet desc\n\t\\begin{description}\n\t\t\\item[${1}] ${2}\n\t\\end{description}\n# Matrix\nsnippet mat\n\t\\begin{${1:p/b/v/V/B/small}matrix}\n\t\t${2}\n\t\\end{$1matrix}\n# Cases\nsnippet cas\n\t\\begin{cases}\n\t\t${1:equation}, &\\text{ if }${2:case}\\\\\n\t\t${3}\n\t\\end{cases}\n# Split\nsnippet spl\n\t\\begin{split}\n\t\t${1}\n\t\\end{split}\n# Part\nsnippet part\n\t\\part{${1:part name}} % (fold)\n\t\\label{prt:${2:$1}}\n\t${3}\n\t% part $2 (end)\n# Chapter\nsnippet cha\n\t\\chapter{${1:chapter name}}\n\t\\label{cha:${2:$1}}\n\t${3}\n# Section\nsnippet sec\n\t\\section{${1:section name}}\n\t\\label{sec:${2:$1}}\n\t${3}\n# Sub Section\nsnippet sub\n\t\\subsection{${1:subsection name}}\n\t\\label{sub:${2:$1}}\n\t${3}\n# Sub Sub Section\nsnippet subs\n\t\\subsubsection{${1:subsubsection name}}\n\t\\label{ssub:${2:$1}}\n\t${3}\n# Paragraph\nsnippet par\n\t\\paragraph{${1:paragraph name}}\n\t\\label{par:${2:$1}}\n\t${3}\n# Sub Paragraph\nsnippet subp\n\t\\subparagraph{${1:subparagraph name}}\n\t\\label{subp:${2:$1}}\n\t${3}\n#References\nsnippet itd\n\t\\item[${1:description}] ${2:item}\nsnippet figure\n\t${1:Figure}~\\ref{${2:fig:}}${3}\nsnippet table\n\t${1:Table}~\\ref{${2:tab:}}${3}\nsnippet listing\n\t${1:Listing}~\\ref{${2:list}}${3}\nsnippet section\n\t${1:Section}~\\ref{${2:sec:}}${3}\nsnippet page\n\t${1:page}~\\pageref{${2}}${3}\nsnippet index\n\t\\index{${1:index}}${2}\n#Citations\nsnippet cite\n\t\\cite[${1}]{${2}}${3}\nsnippet fcite\n\t\\footcite[${1}]{${2}}${3}\n#Formating text: italic, bold, underline, small capital, emphase ..\nsnippet it\n\t\\textit{${1:text}}\nsnippet bf\n\t\\textbf{${1:text}}\nsnippet under\n\t\\underline{${1:text}}\nsnippet emp\n\t\\emph{${1:text}}\nsnippet sc\n\t\\textsc{${1:text}}\n#Choosing font\nsnippet sf\n\t\\textsf{${1:text}}\nsnippet rm\n\t\\textrm{${1:text}}\nsnippet tt\n\t\\texttt{${1:text}}\n#misc\nsnippet ft\n\t\\footnote{${1:text}}\nsnippet fig\n\t\\begin{figure}\n\t\\begin{center}\n\t    \\includegraphics[scale=${1}]{Figures/${2}}\n\t\\end{center}\n\t\\caption{${3}}\n\t\\label{fig:${4}}\n\t\\end{figure}\nsnippet tikz\n\t\\begin{figure}\n\t\\begin{center}\n\t\\begin{tikzpicture}[scale=${1:1}]\n\t\t${2}\n\t\\end{tikzpicture}\n\t\\end{center}\n\t\\caption{${3}}\n\t\\label{fig:${4}}\n\t\\end{figure}\n#math\nsnippet stackrel\n\t\\stackrel{${1:above}}{${2:below}} ${3}\nsnippet frac\n\t\\frac{${1:num}}{${2:denom}}\nsnippet sum\n\t\\sum^{${1:n}}_{${2:i=1}}{${3}}", t.scope = "tex";
});

(function () {
  ace.require(["ace/snippets/tex"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/text.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/text.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/text"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/typescript.js":
/*!***************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/typescript.js ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/typescript"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/xml.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/xml.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/xml"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/snippets/yaml.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/snippets/yaml.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

;

(function () {
  ace.require(["ace/snippets/yaml"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-ambiance.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-ambiance.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/ambiance", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-ambiance", t.cssText = ".ace-ambiance .ace_gutter {background-color: #3d3d3d;background-image: linear-gradient(left, #3D3D3D, #333);background-repeat: repeat-x;border-right: 1px solid #4d4d4d;text-shadow: 0px 1px 1px #4d4d4d;color: #222;}.ace-ambiance .ace_gutter-layer {background: repeat left top;}.ace-ambiance .ace_gutter-active-line {background-color: #3F3F3F;}.ace-ambiance .ace_fold-widget {text-align: center;}.ace-ambiance .ace_fold-widget:hover {color: #777;}.ace-ambiance .ace_fold-widget.ace_start,.ace-ambiance .ace_fold-widget.ace_end,.ace-ambiance .ace_fold-widget.ace_closed{background: none !important;border: none;box-shadow: none;}.ace-ambiance .ace_fold-widget.ace_start:after {content: '\u25BE'}.ace-ambiance .ace_fold-widget.ace_end:after {content: '\u25B4'}.ace-ambiance .ace_fold-widget.ace_closed:after {content: '\u2023'}.ace-ambiance .ace_print-margin {border-left: 1px dotted #2D2D2D;right: 0;background: #262626;}.ace-ambiance .ace_scroller {-webkit-box-shadow: inset 0 0 10px black;-moz-box-shadow: inset 0 0 10px black;-o-box-shadow: inset 0 0 10px black;box-shadow: inset 0 0 10px black;}.ace-ambiance {color: #E6E1DC;background-color: #202020;}.ace-ambiance .ace_cursor {border-left: 1px solid #7991E8;}.ace-ambiance .ace_overwrite-cursors .ace_cursor {border: 1px solid #FFE300;background: #766B13;}.ace-ambiance.normal-mode .ace_cursor-layer {z-index: 0;}.ace-ambiance .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20);}.ace-ambiance .ace_marker-layer .ace_selected-word {border-radius: 4px;border: 8px solid #3f475d;box-shadow: 0 0 4px black;}.ace-ambiance .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-ambiance .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25);}.ace-ambiance .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031);}.ace-ambiance .ace_invisible {color: #333;}.ace-ambiance .ace_paren {color: #24C2C7;}.ace-ambiance .ace_keyword {color: #cda869;}.ace-ambiance .ace_keyword.ace_operator {color: #fa8d6a;}.ace-ambiance .ace_punctuation.ace_operator {color: #fa8d6a;}.ace-ambiance .ace_identifier {}.ace-ambiance .ace-statement {color: #cda869;}.ace-ambiance .ace_constant {color: #CF7EA9;}.ace-ambiance .ace_constant.ace_language {color: #CF7EA9;}.ace-ambiance .ace_constant.ace_library {}.ace-ambiance .ace_constant.ace_numeric {color: #78CF8A;}.ace-ambiance .ace_invalid {text-decoration: underline;}.ace-ambiance .ace_invalid.ace_illegal {color:#F8F8F8;background-color: rgba(86, 45, 86, 0.75);}.ace-ambiance .ace_invalid,.ace-ambiance .ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1;}.ace-ambiance .ace_support {color: #9B859D;}.ace-ambiance .ace_support.ace_function {color: #DAD085;}.ace-ambiance .ace_function.ace_buildin {color: #9b859d;}.ace-ambiance .ace_string {color: #8f9d6a;}.ace-ambiance .ace_string.ace_regexp {color: #DAD085;}.ace-ambiance .ace_comment {font-style: italic;color: #555;}.ace-ambiance .ace_comment.ace_doc {}.ace-ambiance .ace_comment.ace_doc.ace_tag {color: #666;font-style: normal;}.ace-ambiance .ace_definition,.ace-ambiance .ace_type {color: #aac6e3;}.ace-ambiance .ace_variable {color: #9999cc;}.ace-ambiance .ace_variable.ace_language {color: #9b859d;}.ace-ambiance .ace_xml-pe {color: #494949;}.ace-ambiance .ace_gutter-layer,.ace-ambiance .ace_text-layer {background-image: url(\"data:image/png;base64, \");}.ace-ambiance .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/ambiance"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-chaos.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-chaos.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/chaos", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-chaos", t.cssText = ".ace-chaos .ace_gutter {background: #141414;color: #595959;border-right: 1px solid #282828;}.ace-chaos .ace_gutter-cell.ace_warning {background-image: none;background: #FC0;border-left: none;padding-left: 0;color: #000;}.ace-chaos .ace_gutter-cell.ace_error {background-position: -6px center;background-image: none;background: #F10;border-left: none;padding-left: 0;color: #000;}.ace-chaos .ace_print-margin {border-left: 1px solid #555;right: 0;background: #1D1D1D;}.ace-chaos {background-color: #161616;color: #E6E1DC;}.ace-chaos .ace_cursor {border-left: 2px solid #FFFFFF;}.ace-chaos .ace_cursor.ace_overwrite {border-left: 0px;border-bottom: 1px solid #FFFFFF;}.ace-chaos .ace_marker-layer .ace_selection {background: #494836;}.ace-chaos .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-chaos .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #FCE94F;}.ace-chaos .ace_marker-layer .ace_active-line {background: #333;}.ace-chaos .ace_gutter-active-line {background-color: #222;}.ace-chaos .ace_invisible {color: #404040;}.ace-chaos .ace_keyword {color:#00698F;}.ace-chaos .ace_keyword.ace_operator {color:#FF308F;}.ace-chaos .ace_constant {color:#1EDAFB;}.ace-chaos .ace_constant.ace_language {color:#FDC251;}.ace-chaos .ace_constant.ace_library {color:#8DFF0A;}.ace-chaos .ace_constant.ace_numeric {color:#58C554;}.ace-chaos .ace_invalid {color:#FFFFFF;background-color:#990000;}.ace-chaos .ace_invalid.ace_deprecated {color:#FFFFFF;background-color:#990000;}.ace-chaos .ace_support {color: #999;}.ace-chaos .ace_support.ace_function {color:#00AEEF;}.ace-chaos .ace_function {color:#00AEEF;}.ace-chaos .ace_string {color:#58C554;}.ace-chaos .ace_comment {color:#555;font-style:italic;padding-bottom: 0px;}.ace-chaos .ace_variable {color:#997744;}.ace-chaos .ace_meta.ace_tag {color:#BE53E6;}.ace-chaos .ace_entity.ace_other.ace_attribute-name {color:#FFFF89;}.ace-chaos .ace_markup.ace_underline {text-decoration: underline;}.ace-chaos .ace_fold-widget {text-align: center;}.ace-chaos .ace_fold-widget:hover {color: #777;}.ace-chaos .ace_fold-widget.ace_start,.ace-chaos .ace_fold-widget.ace_end,.ace-chaos .ace_fold-widget.ace_closed{background: none !important;border: none;box-shadow: none;}.ace-chaos .ace_fold-widget.ace_start:after {content: '\u25BE'}.ace-chaos .ace_fold-widget.ace_end:after {content: '\u25B4'}.ace-chaos .ace_fold-widget.ace_closed:after {content: '\u2023'}.ace-chaos .ace_indent-guide {border-right:1px dotted #333;margin-right:-1px;}.ace-chaos .ace_fold { background: #222; border-radius: 3px; color: #7AF; border: none; }.ace-chaos .ace_fold:hover {background: #CCC; color: #000;}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/chaos"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-chrome.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-chrome.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/chrome", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-chrome", t.cssText = '.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome {background-color: #FFFFFF;color: black;}.ace-chrome .ace_cursor {color: black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/chrome"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-clouds.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-clouds.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/clouds", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-clouds", t.cssText = '.ace-clouds .ace_gutter {background: #ebebeb;color: #333}.ace-clouds .ace_print-margin {width: 1px;background: #e8e8e8}.ace-clouds {background-color: #FFFFFF;color: #000000}.ace-clouds .ace_cursor {color: #000000}.ace-clouds .ace_marker-layer .ace_selection {background: #BDD5FC}.ace-clouds.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;}.ace-clouds .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-clouds .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds .ace_marker-layer .ace_active-line {background: #FFFBD1}.ace-clouds .ace_gutter-active-line {background-color : #dcdcdc}.ace-clouds .ace_marker-layer .ace_selected-word {border: 1px solid #BDD5FC}.ace-clouds .ace_invisible {color: #BFBFBF}.ace-clouds .ace_keyword,.ace-clouds .ace_meta,.ace-clouds .ace_support.ace_constant.ace_property-value {color: #AF956F}.ace-clouds .ace_keyword.ace_operator {color: #484848}.ace-clouds .ace_keyword.ace_other.ace_unit {color: #96DC5F}.ace-clouds .ace_constant.ace_language {color: #39946A}.ace-clouds .ace_constant.ace_numeric {color: #46A609}.ace-clouds .ace_constant.ace_character.ace_entity {color: #BF78CC}.ace-clouds .ace_invalid {background-color: #FF002A}.ace-clouds .ace_fold {background-color: #AF956F;border-color: #000000}.ace-clouds .ace_storage,.ace-clouds .ace_support.ace_class,.ace-clouds .ace_support.ace_function,.ace-clouds .ace_support.ace_other,.ace-clouds .ace_support.ace_type {color: #C52727}.ace-clouds .ace_string {color: #5D90CD}.ace-clouds .ace_comment {color: #BCC8BA}.ace-clouds .ace_entity.ace_name.ace_tag,.ace-clouds .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y}';
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/clouds"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-clouds_midnight.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-clouds_midnight.js ***!
  \*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/clouds_midnight", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-clouds-midnight", t.cssText = ".ace-clouds-midnight .ace_gutter {background: #232323;color: #929292}.ace-clouds-midnight .ace_print-margin {width: 1px;background: #232323}.ace-clouds-midnight {background-color: #191919;color: #929292}.ace-clouds-midnight .ace_cursor {color: #7DA5DC}.ace-clouds-midnight .ace_marker-layer .ace_selection {background: #000000}.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #191919;}.ace-clouds-midnight .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-clouds-midnight .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds-midnight .ace_marker-layer .ace_active-line {background: rgba(215, 215, 215, 0.031)}.ace-clouds-midnight .ace_gutter-active-line {background-color: rgba(215, 215, 215, 0.031)}.ace-clouds-midnight .ace_marker-layer .ace_selected-word {border: 1px solid #000000}.ace-clouds-midnight .ace_invisible {color: #666}.ace-clouds-midnight .ace_keyword,.ace-clouds-midnight .ace_meta,.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {color: #927C5D}.ace-clouds-midnight .ace_keyword.ace_operator {color: #4B4B4B}.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {color: #366F1A}.ace-clouds-midnight .ace_constant.ace_language {color: #39946A}.ace-clouds-midnight .ace_constant.ace_numeric {color: #46A609}.ace-clouds-midnight .ace_constant.ace_character.ace_entity {color: #A165AC}.ace-clouds-midnight .ace_invalid {color: #FFFFFF;background-color: #E92E2E}.ace-clouds-midnight .ace_fold {background-color: #927C5D;border-color: #929292}.ace-clouds-midnight .ace_storage,.ace-clouds-midnight .ace_support.ace_class,.ace-clouds-midnight .ace_support.ace_function,.ace-clouds-midnight .ace_support.ace_other,.ace-clouds-midnight .ace_support.ace_type {color: #E92E2E}.ace-clouds-midnight .ace_string {color: #5D90CD}.ace-clouds-midnight .ace_comment {color: #3C403B}.ace-clouds-midnight .ace_entity.ace_name.ace_tag,.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds-midnight .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/clouds_midnight"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-cobalt.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-cobalt.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/cobalt", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-cobalt", t.cssText = ".ace-cobalt .ace_gutter {background: #011e3a;color: rgb(128,145,160)}.ace-cobalt .ace_print-margin {width: 1px;background: #555555}.ace-cobalt {background-color: #002240;color: #FFFFFF}.ace-cobalt .ace_cursor {color: #FFFFFF}.ace-cobalt .ace_marker-layer .ace_selection {background: rgba(179, 101, 57, 0.75)}.ace-cobalt.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002240;}.ace-cobalt .ace_marker-layer .ace_step {background: rgb(127, 111, 19)}.ace-cobalt .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.15)}.ace-cobalt .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.35)}.ace-cobalt .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.35)}.ace-cobalt .ace_marker-layer .ace_selected-word {border: 1px solid rgba(179, 101, 57, 0.75)}.ace-cobalt .ace_invisible {color: rgba(255, 255, 255, 0.15)}.ace-cobalt .ace_keyword,.ace-cobalt .ace_meta {color: #FF9D00}.ace-cobalt .ace_constant,.ace-cobalt .ace_constant.ace_character,.ace-cobalt .ace_constant.ace_character.ace_escape,.ace-cobalt .ace_constant.ace_other {color: #FF628C}.ace-cobalt .ace_invalid {color: #F8F8F8;background-color: #800F00}.ace-cobalt .ace_support {color: #80FFBB}.ace-cobalt .ace_support.ace_constant {color: #EB939A}.ace-cobalt .ace_fold {background-color: #FF9D00;border-color: #FFFFFF}.ace-cobalt .ace_support.ace_function {color: #FFB054}.ace-cobalt .ace_storage {color: #FFEE80}.ace-cobalt .ace_entity {color: #FFDD00}.ace-cobalt .ace_string {color: #3AD900}.ace-cobalt .ace_string.ace_regexp {color: #80FFC2}.ace-cobalt .ace_comment {font-style: italic;color: #0088FF}.ace-cobalt .ace_heading,.ace-cobalt .ace_markup.ace_heading {color: #C8E4FD;background-color: #001221}.ace-cobalt .ace_list,.ace-cobalt .ace_markup.ace_list {background-color: #130D26}.ace-cobalt .ace_variable {color: #CCCCCC}.ace-cobalt .ace_variable.ace_language {color: #FF80E1}.ace-cobalt .ace_meta.ace_tag {color: #9EFFFF}.ace-cobalt .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHCLSvkPAAP3AgSDTRd4AAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/cobalt"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-crimson_editor.js":
/*!****************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-crimson_editor.js ***!
  \****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/crimson_editor", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssText = '.ace-crimson-editor .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-crimson-editor .ace_gutter-layer {width: 100%;text-align: right;}.ace-crimson-editor .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-crimson-editor {background-color: #FFFFFF;color: rgb(64, 64, 64);}.ace-crimson-editor .ace_cursor {color: black;}.ace-crimson-editor .ace_invisible {color: rgb(191, 191, 191);}.ace-crimson-editor .ace_identifier {color: black;}.ace-crimson-editor .ace_keyword {color: blue;}.ace-crimson-editor .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-crimson-editor .ace_constant.ace_language {color: rgb(255, 156, 0);}.ace-crimson-editor .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-crimson-editor .ace_invalid {text-decoration: line-through;color: rgb(224, 0, 0);}.ace-crimson-editor .ace_fold {}.ace-crimson-editor .ace_support.ace_function {color: rgb(192, 0, 0);}.ace-crimson-editor .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-crimson-editor .ace_support.ace_type,.ace-crimson-editor .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-crimson-editor .ace_keyword.ace_operator {color: rgb(49, 132, 149);}.ace-crimson-editor .ace_string {color: rgb(128, 0, 128);}.ace-crimson-editor .ace_comment {color: rgb(76, 136, 107);}.ace-crimson-editor .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-crimson-editor .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-crimson-editor .ace_constant.ace_numeric {color: rgb(0, 0, 64);}.ace-crimson-editor .ace_variable {color: rgb(0, 64, 128);}.ace-crimson-editor .ace_xml-pe {color: rgb(104, 104, 91);}.ace-crimson-editor .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-crimson-editor .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-crimson-editor .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-crimson-editor .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-crimson-editor .ace_marker-layer .ace_active-line {background: rgb(232, 242, 254);}.ace-crimson-editor .ace_gutter-active-line {background-color : #dcdcdc;}.ace-crimson-editor .ace_meta.ace_tag {color:rgb(28, 2, 255);}.ace-crimson-editor .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-crimson-editor .ace_string.ace_regex {color: rgb(192, 0, 192);}.ace-crimson-editor .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}', t.cssClass = "ace-crimson-editor";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/crimson_editor"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-dawn.js":
/*!******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-dawn.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/dawn", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-dawn", t.cssText = ".ace-dawn .ace_gutter {background: #ebebeb;color: #333}.ace-dawn .ace_print-margin {width: 1px;background: #e8e8e8}.ace-dawn {background-color: #F9F9F9;color: #080808}.ace-dawn .ace_cursor {color: #000000}.ace-dawn .ace_marker-layer .ace_selection {background: rgba(39, 95, 255, 0.30)}.ace-dawn.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #F9F9F9;}.ace-dawn .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-dawn .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(75, 75, 126, 0.50)}.ace-dawn .ace_marker-layer .ace_active-line {background: rgba(36, 99, 180, 0.12)}.ace-dawn .ace_gutter-active-line {background-color : #dcdcdc}.ace-dawn .ace_marker-layer .ace_selected-word {border: 1px solid rgba(39, 95, 255, 0.30)}.ace-dawn .ace_invisible {color: rgba(75, 75, 126, 0.50)}.ace-dawn .ace_keyword,.ace-dawn .ace_meta {color: #794938}.ace-dawn .ace_constant,.ace-dawn .ace_constant.ace_character,.ace-dawn .ace_constant.ace_character.ace_escape,.ace-dawn .ace_constant.ace_other {color: #811F24}.ace-dawn .ace_invalid.ace_illegal {text-decoration: underline;font-style: italic;color: #F8F8F8;background-color: #B52A1D}.ace-dawn .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #B52A1D}.ace-dawn .ace_support {color: #691C97}.ace-dawn .ace_support.ace_constant {color: #B4371F}.ace-dawn .ace_fold {background-color: #794938;border-color: #080808}.ace-dawn .ace_list,.ace-dawn .ace_markup.ace_list,.ace-dawn .ace_support.ace_function {color: #693A17}.ace-dawn .ace_storage {font-style: italic;color: #A71D5D}.ace-dawn .ace_string {color: #0B6125}.ace-dawn .ace_string.ace_regexp {color: #CF5628}.ace-dawn .ace_comment {font-style: italic;color: #5A525F}.ace-dawn .ace_heading,.ace-dawn .ace_markup.ace_heading {color: #19356D}.ace-dawn .ace_variable {color: #234A97}.ace-dawn .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLh/5+x/AAizA4hxNNsZAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/dawn"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-dracula.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-dracula.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/dracula", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-dracula", t.cssText = ".ace-dracula .ace_gutter {background: #282a36;color: rgb(144,145,148)}.ace-dracula .ace_print-margin {width: 1px;background: #44475a}.ace-dracula {background-color: #282a36;color: #f8f8f2}.ace-dracula .ace_cursor {color: #f8f8f0}.ace-dracula .ace_marker-layer .ace_selection {background: #44475a}.ace-dracula.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #282a36;border-radius: 2px}.ace-dracula .ace_marker-layer .ace_step {background: rgb(198, 219, 174)}.ace-dracula .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #a29709}.ace-dracula .ace_marker-layer .ace_active-line {background: #44475a}.ace-dracula .ace_gutter-active-line {background-color: #44475a}.ace-dracula .ace_marker-layer .ace_selected-word {box-shadow: 0px 0px 0px 1px #a29709;border-radius: 3px;}.ace-dracula .ace_fold {background-color: #50fa7b;border-color: #f8f8f2}.ace-dracula .ace_keyword {color: #ff79c6}.ace-dracula .ace_constant.ace_language {color: #bd93f9}.ace-dracula .ace_constant.ace_numeric {color: #bd93f9}.ace-dracula .ace_constant.ace_character {color: #bd93f9}.ace-dracula .ace_constant.ace_character.ace_escape {color: #ff79c6}.ace-dracula .ace_constant.ace_other {color: #bd93f9}.ace-dracula .ace_support.ace_function {color: #8be9fd}.ace-dracula .ace_support.ace_constant {color: #6be5fd}.ace-dracula .ace_support.ace_class {font-style: italic;color: #66d9ef}.ace-dracula .ace_support.ace_type {font-style: italic;color: #66d9ef}.ace-dracula .ace_storage {color: #ff79c6}.ace-dracula .ace_storage.ace_type {font-style: italic;color: #8be9fd}.ace-dracula .ace_invalid {color: #F8F8F0;background-color: #ff79c6}.ace-dracula .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #bd93f9}.ace-dracula .ace_string {color: #f1fa8c}.ace-dracula .ace_comment {color: #6272a4}.ace-dracula .ace_variable {color: #50fa7b}.ace-dracula .ace_variable.ace_parameter {font-style: italic;color: #ffb86c}.ace-dracula .ace_entity.ace_other.ace_attribute-name {color: #50fa7b}.ace-dracula .ace_entity.ace_name.ace_function {color: #50fa7b}.ace-dracula .ace_entity.ace_name.ace_tag {color: #ff79c6}.ace-dracula .ace_invisible {color: #626680;}.ace-dracula .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y}", t.$selectionColorConflict = !0;
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/dracula"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-dreamweaver.js":
/*!*************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-dreamweaver.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/dreamweaver", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-dreamweaver", t.cssText = '.ace-dreamweaver .ace_gutter {background: #e8e8e8;color: #333;}.ace-dreamweaver .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-dreamweaver {background-color: #FFFFFF;color: black;}.ace-dreamweaver .ace_fold {background-color: #757AD8;}.ace-dreamweaver .ace_cursor {color: black;}.ace-dreamweaver .ace_invisible {color: rgb(191, 191, 191);}.ace-dreamweaver .ace_storage,.ace-dreamweaver .ace_keyword {color: blue;}.ace-dreamweaver .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-dreamweaver .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-dreamweaver .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-dreamweaver .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-dreamweaver .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-dreamweaver .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-dreamweaver .ace_support.ace_type,.ace-dreamweaver .ace_support.ace_class {color: #009;}.ace-dreamweaver .ace_support.ace_php_tag {color: #f00;}.ace-dreamweaver .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-dreamweaver .ace_string {color: #00F;}.ace-dreamweaver .ace_comment {color: rgb(76, 136, 107);}.ace-dreamweaver .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-dreamweaver .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-dreamweaver .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-dreamweaver .ace_variable {color: #06F}.ace-dreamweaver .ace_xml-pe {color: rgb(104, 104, 91);}.ace-dreamweaver .ace_entity.ace_name.ace_function {color: #00F;}.ace-dreamweaver .ace_heading {color: rgb(12, 7, 255);}.ace-dreamweaver .ace_list {color:rgb(185, 6, 144);}.ace-dreamweaver .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-dreamweaver .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-dreamweaver .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-dreamweaver .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-dreamweaver .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-dreamweaver .ace_gutter-active-line {background-color : #DCDCDC;}.ace-dreamweaver .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-dreamweaver .ace_meta.ace_tag {color:#009;}.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {color:#060;}.ace-dreamweaver .ace_meta.ace_tag.ace_form {color:#F90;}.ace-dreamweaver .ace_meta.ace_tag.ace_image {color:#909;}.ace-dreamweaver .ace_meta.ace_tag.ace_script {color:#900;}.ace-dreamweaver .ace_meta.ace_tag.ace_style {color:#909;}.ace-dreamweaver .ace_meta.ace_tag.ace_table {color:#099;}.ace-dreamweaver .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-dreamweaver .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/dreamweaver"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-eclipse.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-eclipse.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/eclipse", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  "use strict";

  t.isDark = !1, t.cssText = '.ace-eclipse .ace_gutter {background: #ebebeb;border-right: 1px solid rgb(159, 159, 159);color: rgb(136, 136, 136);}.ace-eclipse .ace_print-margin {width: 1px;background: #ebebeb;}.ace-eclipse {background-color: #FFFFFF;color: black;}.ace-eclipse .ace_fold {background-color: rgb(60, 76, 114);}.ace-eclipse .ace_cursor {color: black;}.ace-eclipse .ace_storage,.ace-eclipse .ace_keyword,.ace-eclipse .ace_variable {color: rgb(127, 0, 85);}.ace-eclipse .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-eclipse .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-eclipse .ace_function {color: rgb(60, 76, 114);}.ace-eclipse .ace_string {color: rgb(42, 0, 255);}.ace-eclipse .ace_comment {color: rgb(113, 150, 130);}.ace-eclipse .ace_comment.ace_doc {color: rgb(63, 95, 191);}.ace-eclipse .ace_comment.ace_doc.ace_tag {color: rgb(127, 159, 191);}.ace-eclipse .ace_constant.ace_numeric {color: darkblue;}.ace-eclipse .ace_tag {color: rgb(25, 118, 116);}.ace-eclipse .ace_type {color: rgb(127, 0, 127);}.ace-eclipse .ace_xml-pe {color: rgb(104, 104, 91);}.ace-eclipse .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-eclipse .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-eclipse .ace_meta.ace_tag {color:rgb(25, 118, 116);}.ace-eclipse .ace_invisible {color: #ddd;}.ace-eclipse .ace_entity.ace_other.ace_attribute-name {color:rgb(127, 0, 127);}.ace-eclipse .ace_marker-layer .ace_step {background: rgb(255, 255, 0);}.ace-eclipse .ace_active-line {background: rgb(232, 242, 254);}.ace-eclipse .ace_gutter-active-line {background-color : #DADADA;}.ace-eclipse .ace_marker-layer .ace_selected-word {border: 1px solid rgb(181, 213, 255);}.ace-eclipse .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}', t.cssClass = "ace-eclipse";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/eclipse"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-github.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-github.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/github", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-github", t.cssText = '.ace-github .ace_gutter {background: #e8e8e8;color: #AAA;}.ace-github  {background: #fff;color: #000;}.ace-github .ace_keyword {font-weight: bold;}.ace-github .ace_string {color: #D14;}.ace-github .ace_variable.ace_class {color: teal;}.ace-github .ace_constant.ace_numeric {color: #099;}.ace-github .ace_constant.ace_buildin {color: #0086B3;}.ace-github .ace_support.ace_function {color: #0086B3;}.ace-github .ace_comment {color: #998;font-style: italic;}.ace-github .ace_variable.ace_language  {color: #0086B3;}.ace-github .ace_paren {font-weight: bold;}.ace-github .ace_boolean {font-weight: bold;}.ace-github .ace_string.ace_regexp {color: #009926;font-weight: normal;}.ace-github .ace_variable.ace_instance {color: teal;}.ace-github .ace_constant.ace_language {font-weight: bold;}.ace-github .ace_cursor {color: black;}.ace-github.ace_focus .ace_marker-layer .ace_active-line {background: rgb(255, 255, 204);}.ace-github .ace_marker-layer .ace_active-line {background: rgb(245, 245, 245);}.ace-github .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-github.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-github.ace_nobold .ace_line > span {font-weight: normal !important;}.ace-github .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-github .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-github .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-github .ace_gutter-active-line {background-color : rgba(0, 0, 0, 0.07);}.ace-github .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-github .ace_invisible {color: #BFBFBF}.ace-github .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-github .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/github"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-gob.js":
/*!*****************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-gob.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/gob", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-gob", t.cssText = ".ace-gob .ace_gutter {background: #0B1818;color: #03EE03}.ace-gob .ace_print-margin {width: 1px;background: #131313}.ace-gob {background-color: #0B0B0B;color: #00FF00}.ace-gob .ace_cursor {border-color: rgba(16, 248, 255, 0.90);background-color: rgba(16, 240, 248, 0.70);opacity: 0.4;}.ace-gob .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20)}.ace-gob.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #141414;}.ace-gob .ace_marker-layer .ace_step {background: rgb(16, 128, 0)}.ace-gob .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(64, 255, 255, 0.25)}.ace-gob .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.04)}.ace-gob .ace_gutter-active-line {background-color: rgba(255, 255, 255, 0.04)}.ace-gob .ace_marker-layer .ace_selected-word {border: 1px solid rgba(192, 240, 255, 0.20)}.ace-gob .ace_invisible {color: rgba(255, 255, 255, 0.25)}.ace-gob .ace_keyword,.ace-gob .ace_meta {color: #10D8E8}.ace-gob .ace_constant,.ace-gob .ace_constant.ace_character,.ace-gob .ace_constant.ace_character.ace_escape,.ace-gob .ace_constant.ace_other,.ace-gob .ace_heading,.ace-gob .ace_markup.ace_heading,.ace-gob .ace_support.ace_constant {color: #10F0A0}.ace-gob .ace_invalid.ace_illegal {color: #F8F8F8;background-color: rgba(86, 45, 86, 0.75)}.ace-gob .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #20F8C0}.ace-gob .ace_support {color: #20E8B0}.ace-gob .ace_fold {background-color: #50B8B8;border-color: #70F8F8}.ace-gob .ace_support.ace_function {color: #00F800}.ace-gob .ace_list,.ace-gob .ace_markup.ace_list,.ace-gob .ace_storage {color: #10FF98}.ace-gob .ace_entity.ace_name.ace_function,.ace-gob .ace_meta.ace_tag,.ace-gob .ace_variable {color: #00F868}.ace-gob .ace_string {color: #10F060}.ace-gob .ace_string.ace_regexp {color: #20F090;}.ace-gob .ace_comment {font-style: italic;color: #00E060;}.ace-gob .ace_variable {color: #00F888;}.ace-gob .ace_xml-pe {color: #488858;}.ace-gob .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/gob"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-gruvbox.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-gruvbox.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/gruvbox", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-gruvbox", t.cssText = '.ace-gruvbox .ace_gutter-active-line {background-color: #3C3836;}.ace-gruvbox {color: #EBDAB4;background-color: #1D2021;}.ace-gruvbox .ace_invisible {color: #504945;}.ace-gruvbox .ace_marker-layer .ace_selection {background: rgba(179, 101, 57, 0.75)}.ace-gruvbox.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002240;}.ace-gruvbox .ace_keyword {color: #8ec07c;}.ace-gruvbox .ace_comment {font-style: italic;color: #928375;}.ace-gruvbox .ace-statement {color: red;}.ace-gruvbox .ace_variable {color: #84A598;}.ace-gruvbox .ace_variable.ace_language {color: #D2879B;}.ace-gruvbox .ace_constant {color: #C2859A;}.ace-gruvbox .ace_constant.ace_language {color: #C2859A;}.ace-gruvbox .ace_constant.ace_numeric {color: #C2859A;}.ace-gruvbox .ace_string {color: #B8BA37;}.ace-gruvbox .ace_support {color: #F9BC41;}.ace-gruvbox .ace_support.ace_function {color: #F84B3C;}.ace-gruvbox .ace_storage {color: #8FBF7F;}.ace-gruvbox .ace_keyword.ace_operator {color: #EBDAB4;}.ace-gruvbox .ace_punctuation.ace_operator {color: yellow;}.ace-gruvbox .ace_marker-layer .ace_active-line {background: #3C3836;}.ace-gruvbox .ace_marker-layer .ace_selected-word {border-radius: 4px;border: 8px solid #3f475d;}.ace-gruvbox .ace_print-margin {width: 5px;background: #3C3836;}.ace-gruvbox .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC") right repeat-y;}';
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/gruvbox"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-idle_fingers.js":
/*!**************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-idle_fingers.js ***!
  \**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/idle_fingers", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-idle-fingers", t.cssText = ".ace-idle-fingers .ace_gutter {background: #3b3b3b;color: rgb(153,153,153)}.ace-idle-fingers .ace_print-margin {width: 1px;background: #3b3b3b}.ace-idle-fingers {background-color: #323232;color: #FFFFFF}.ace-idle-fingers .ace_cursor {color: #91FF00}.ace-idle-fingers .ace_marker-layer .ace_selection {background: rgba(90, 100, 126, 0.88)}.ace-idle-fingers.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #323232;}.ace-idle-fingers .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-idle-fingers .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-idle-fingers .ace_marker-layer .ace_active-line {background: #353637}.ace-idle-fingers .ace_gutter-active-line {background-color: #353637}.ace-idle-fingers .ace_marker-layer .ace_selected-word {border: 1px solid rgba(90, 100, 126, 0.88)}.ace-idle-fingers .ace_invisible {color: #404040}.ace-idle-fingers .ace_keyword,.ace-idle-fingers .ace_meta {color: #CC7833}.ace-idle-fingers .ace_constant,.ace-idle-fingers .ace_constant.ace_character,.ace-idle-fingers .ace_constant.ace_character.ace_escape,.ace-idle-fingers .ace_constant.ace_other,.ace-idle-fingers .ace_support.ace_constant {color: #6C99BB}.ace-idle-fingers .ace_invalid {color: #FFFFFF;background-color: #FF0000}.ace-idle-fingers .ace_fold {background-color: #CC7833;border-color: #FFFFFF}.ace-idle-fingers .ace_support.ace_function {color: #B83426}.ace-idle-fingers .ace_variable.ace_parameter {font-style: italic}.ace-idle-fingers .ace_string {color: #A5C261}.ace-idle-fingers .ace_string.ace_regexp {color: #CCCC33}.ace-idle-fingers .ace_comment {font-style: italic;color: #BC9458}.ace-idle-fingers .ace_meta.ace_tag {color: #FFE5BB}.ace-idle-fingers .ace_entity.ace_name {color: #FFC66D}.ace-idle-fingers .ace_collab.ace_user1 {color: #323232;background-color: #FFF980}.ace-idle-fingers .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjLyZYiPj/8PAAreAwAI1+g0AAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/idle_fingers"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-iplastic.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-iplastic.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/iplastic", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-iplastic", t.cssText = ".ace-iplastic .ace_gutter {background: #dddddd;color: #666666}.ace-iplastic .ace_print-margin {width: 1px;background: #bbbbbb}.ace-iplastic {background-color: #eeeeee;color: #333333}.ace-iplastic .ace_cursor {color: #333}.ace-iplastic .ace_marker-layer .ace_selection {background: #BAD6FD;}.ace-iplastic.ace_multiselect .ace_selection.ace_start {border-radius: 4px}.ace-iplastic .ace_marker-layer .ace_step {background: #444444}.ace-iplastic .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E;background: #FFF799}.ace-iplastic .ace_marker-layer .ace_active-line {background: #e5e5e5}.ace-iplastic .ace_gutter-active-line {background-color: #eeeeee}.ace-iplastic .ace_marker-layer .ace_selected-word {border: 1px solid #555555;border-radius:4px}.ace-iplastic .ace_invisible {color: #999999}.ace-iplastic .ace_entity.ace_name.ace_tag,.ace-iplastic .ace_keyword,.ace-iplastic .ace_meta.ace_tag,.ace-iplastic .ace_storage {color: #0000FF}.ace-iplastic .ace_punctuation,.ace-iplastic .ace_punctuation.ace_tag {color: #000}.ace-iplastic .ace_constant {color: #333333;font-weight: 700}.ace-iplastic .ace_constant.ace_character,.ace-iplastic .ace_constant.ace_language,.ace-iplastic .ace_constant.ace_numeric,.ace-iplastic .ace_constant.ace_other {color: #0066FF;font-weight: 700}.ace-iplastic .ace_constant.ace_numeric{font-weight: 100}.ace-iplastic .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-iplastic .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-iplastic .ace_support.ace_constant,.ace-iplastic .ace_support.ace_function {color: #333333;font-weight: 700}.ace-iplastic .ace_fold {background-color: #464646;border-color: #F8F8F2}.ace-iplastic .ace_storage.ace_type,.ace-iplastic .ace_support.ace_class,.ace-iplastic .ace_support.ace_type {color: #3333fc;font-weight: 700}.ace-iplastic .ace_entity.ace_name.ace_function,.ace-iplastic .ace_entity.ace_other,.ace-iplastic .ace_entity.ace_other.ace_attribute-name,.ace-iplastic .ace_variable {color: #3366cc;font-style: italic}.ace-iplastic .ace_variable.ace_parameter {font-style: italic;color: #2469E0}.ace-iplastic .ace_string {color: #a55f03}.ace-iplastic .ace_comment {color: #777777;font-style: italic}.ace-iplastic .ace_fold-widget {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==);}.ace-iplastic .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAABlJREFUeNpi+P//PwMzMzPzfwAAAAD//wMAGRsECSML/RIAAAAASUVORK5CYII=) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/iplastic"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-katzenmilch.js":
/*!*************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-katzenmilch.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/katzenmilch", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-katzenmilch", t.cssText = ".ace-katzenmilch .ace_gutter,.ace-katzenmilch .ace_gutter {background: #e8e8e8;color: #333}.ace-katzenmilch .ace_print-margin {width: 1px;background: #e8e8e8}.ace-katzenmilch {background-color: #f3f2f3;color: rgba(15, 0, 9, 1.0)}.ace-katzenmilch .ace_cursor {border-left: 2px solid #100011}.ace-katzenmilch .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #100011}.ace-katzenmilch .ace_marker-layer .ace_selection {background: rgba(100, 5, 208, 0.27)}.ace-katzenmilch.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #f3f2f3;}.ace-katzenmilch .ace_marker-layer .ace_step {background: rgb(198, 219, 174)}.ace-katzenmilch .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(0, 0, 0, 0.33);}.ace-katzenmilch .ace_marker-layer .ace_active-line {background: rgb(232, 242, 254)}.ace-katzenmilch .ace_gutter-active-line {background-color: rgb(232, 242, 254)}.ace-katzenmilch .ace_marker-layer .ace_selected-word {border: 1px solid rgba(100, 5, 208, 0.27)}.ace-katzenmilch .ace_invisible {color: #BFBFBF}.ace-katzenmilch .ace_fold {background-color: rgba(2, 95, 73, 0.97);border-color: rgba(15, 0, 9, 1.0)}.ace-katzenmilch .ace_keyword {color: #674Aa8;rbackground-color: rgba(163, 170, 216, 0.055)}.ace-katzenmilch .ace_constant.ace_language {color: #7D7e52;rbackground-color: rgba(189, 190, 130, 0.059)}.ace-katzenmilch .ace_constant.ace_numeric {color: rgba(79, 130, 123, 0.93);rbackground-color: rgba(119, 194, 187, 0.059)}.ace-katzenmilch .ace_constant.ace_character,.ace-katzenmilch .ace_constant.ace_other {color: rgba(2, 95, 105, 1.0);rbackground-color: rgba(127, 34, 153, 0.063)}.ace-katzenmilch .ace_support.ace_function {color: #9D7e62;rbackground-color: rgba(189, 190, 130, 0.039)}.ace-katzenmilch .ace_support.ace_class {color: rgba(239, 106, 167, 1.0);rbackground-color: rgba(239, 106, 167, 0.063)}.ace-katzenmilch .ace_storage {color: rgba(123, 92, 191, 1.0);rbackground-color: rgba(139, 93, 223, 0.051)}.ace-katzenmilch .ace_invalid {color: #DFDFD5;rbackground-color: #CC1B27}.ace-katzenmilch .ace_string {color: #5a5f9b;rbackground-color: rgba(170, 175, 219, 0.035)}.ace-katzenmilch .ace_comment {font-style: italic;color: rgba(64, 79, 80, 0.67);rbackground-color: rgba(95, 15, 255, 0.0078)}.ace-katzenmilch .ace_entity.ace_name.ace_function,.ace-katzenmilch .ace_variable {color: rgba(2, 95, 73, 0.97);rbackground-color: rgba(34, 255, 73, 0.12)}.ace-katzenmilch .ace_variable.ace_language {color: #316fcf;rbackground-color: rgba(58, 175, 255, 0.039)}.ace-katzenmilch .ace_variable.ace_parameter {font-style: italic;color: rgba(51, 150, 159, 0.87);rbackground-color: rgba(5, 214, 249, 0.043)}.ace-katzenmilch .ace_entity.ace_other.ace_attribute-name {color: rgba(73, 70, 194, 0.93);rbackground-color: rgba(73, 134, 194, 0.035)}.ace-katzenmilch .ace_entity.ace_name.ace_tag {color: #3976a2;rbackground-color: rgba(73, 166, 210, 0.039)}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/katzenmilch"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-kr_theme.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-kr_theme.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/kr_theme", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-kr-theme", t.cssText = ".ace-kr-theme .ace_gutter {background: #1c1917;color: #FCFFE0}.ace-kr-theme .ace_print-margin {width: 1px;background: #1c1917}.ace-kr-theme {background-color: #0B0A09;color: #FCFFE0}.ace-kr-theme .ace_cursor {color: #FF9900}.ace-kr-theme .ace_marker-layer .ace_selection {background: rgba(170, 0, 255, 0.45)}.ace-kr-theme.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #0B0A09;}.ace-kr-theme .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-kr-theme .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 177, 111, 0.32)}.ace-kr-theme .ace_marker-layer .ace_active-line {background: #38403D}.ace-kr-theme .ace_gutter-active-line {background-color : #38403D}.ace-kr-theme .ace_marker-layer .ace_selected-word {border: 1px solid rgba(170, 0, 255, 0.45)}.ace-kr-theme .ace_invisible {color: rgba(255, 177, 111, 0.32)}.ace-kr-theme .ace_keyword,.ace-kr-theme .ace_meta {color: #949C8B}.ace-kr-theme .ace_constant,.ace-kr-theme .ace_constant.ace_character,.ace-kr-theme .ace_constant.ace_character.ace_escape,.ace-kr-theme .ace_constant.ace_other {color: rgba(210, 117, 24, 0.76)}.ace-kr-theme .ace_invalid {color: #F8F8F8;background-color: #A41300}.ace-kr-theme .ace_support {color: #9FC28A}.ace-kr-theme .ace_support.ace_constant {color: #C27E66}.ace-kr-theme .ace_fold {background-color: #949C8B;border-color: #FCFFE0}.ace-kr-theme .ace_support.ace_function {color: #85873A}.ace-kr-theme .ace_storage {color: #FFEE80}.ace-kr-theme .ace_string {color: rgba(164, 161, 181, 0.8)}.ace-kr-theme .ace_string.ace_regexp {color: rgba(125, 255, 192, 0.65)}.ace-kr-theme .ace_comment {font-style: italic;color: #706D5B}.ace-kr-theme .ace_variable {color: #D1A796}.ace-kr-theme .ace_list,.ace-kr-theme .ace_markup.ace_list {background-color: #0F0040}.ace-kr-theme .ace_variable.ace_language {color: #FF80E1}.ace-kr-theme .ace_meta.ace_tag {color: #BABD9C}.ace-kr-theme .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/kr_theme"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-kuroir.js":
/*!********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-kuroir.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/kuroir", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-kuroir", t.cssText = ".ace-kuroir .ace_gutter {background: #e8e8e8;color: #333;}.ace-kuroir .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-kuroir {background-color: #E8E9E8;color: #363636;}.ace-kuroir .ace_cursor {color: #202020;}.ace-kuroir .ace_marker-layer .ace_selection {background: rgba(245, 170, 0, 0.57);}.ace-kuroir.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #E8E9E8;}.ace-kuroir .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-kuroir .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(0, 0, 0, 0.29);}.ace-kuroir .ace_marker-layer .ace_active-line {background: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_gutter-active-line {background-color: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_marker-layer .ace_selected-word {border: 1px solid rgba(245, 170, 0, 0.57);}.ace-kuroir .ace_invisible {color: #BFBFBF}.ace-kuroir .ace_fold {border-color: #363636;}.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;font-style:italic;color:#FD1732;background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/kuroir"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-merbivore.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-merbivore.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/merbivore", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-merbivore", t.cssText = ".ace-merbivore .ace_gutter {background: #202020;color: #E6E1DC}.ace-merbivore .ace_print-margin {width: 1px;background: #555651}.ace-merbivore {background-color: #161616;color: #E6E1DC}.ace-merbivore .ace_cursor {color: #FFFFFF}.ace-merbivore .ace_marker-layer .ace_selection {background: #454545}.ace-merbivore.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #161616;}.ace-merbivore .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-merbivore .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-merbivore .ace_marker-layer .ace_active-line {background: #333435}.ace-merbivore .ace_gutter-active-line {background-color: #333435}.ace-merbivore .ace_marker-layer .ace_selected-word {border: 1px solid #454545}.ace-merbivore .ace_invisible {color: #404040}.ace-merbivore .ace_entity.ace_name.ace_tag,.ace-merbivore .ace_keyword,.ace-merbivore .ace_meta,.ace-merbivore .ace_meta.ace_tag,.ace-merbivore .ace_storage,.ace-merbivore .ace_support.ace_function {color: #FC6F09}.ace-merbivore .ace_constant,.ace-merbivore .ace_constant.ace_character,.ace-merbivore .ace_constant.ace_character.ace_escape,.ace-merbivore .ace_constant.ace_other,.ace-merbivore .ace_support.ace_type {color: #1EDAFB}.ace-merbivore .ace_constant.ace_character.ace_escape {color: #519F50}.ace-merbivore .ace_constant.ace_language {color: #FDC251}.ace-merbivore .ace_constant.ace_library,.ace-merbivore .ace_string,.ace-merbivore .ace_support.ace_constant {color: #8DFF0A}.ace-merbivore .ace_constant.ace_numeric {color: #58C554}.ace-merbivore .ace_invalid {color: #FFFFFF;background-color: #990000}.ace-merbivore .ace_fold {background-color: #FC6F09;border-color: #E6E1DC}.ace-merbivore .ace_comment {font-style: italic;color: #AD2EA4}.ace-merbivore .ace_entity.ace_other.ace_attribute-name {color: #FFFF89}.ace-merbivore .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQFxf3ZXB1df0PAAdsAmERTkEHAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/merbivore"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-merbivore_soft.js":
/*!****************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-merbivore_soft.js ***!
  \****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/merbivore_soft", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-merbivore-soft", t.cssText = ".ace-merbivore-soft .ace_gutter {background: #262424;color: #E6E1DC}.ace-merbivore-soft .ace_print-margin {width: 1px;background: #262424}.ace-merbivore-soft {background-color: #1C1C1C;color: #E6E1DC}.ace-merbivore-soft .ace_cursor {color: #FFFFFF}.ace-merbivore-soft .ace_marker-layer .ace_selection {background: #494949}.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #1C1C1C;}.ace-merbivore-soft .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-merbivore-soft .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-merbivore-soft .ace_marker-layer .ace_active-line {background: #333435}.ace-merbivore-soft .ace_gutter-active-line {background-color: #333435}.ace-merbivore-soft .ace_marker-layer .ace_selected-word {border: 1px solid #494949}.ace-merbivore-soft .ace_invisible {color: #404040}.ace-merbivore-soft .ace_entity.ace_name.ace_tag,.ace-merbivore-soft .ace_keyword,.ace-merbivore-soft .ace_meta,.ace-merbivore-soft .ace_meta.ace_tag,.ace-merbivore-soft .ace_storage {color: #FC803A}.ace-merbivore-soft .ace_constant,.ace-merbivore-soft .ace_constant.ace_character,.ace-merbivore-soft .ace_constant.ace_character.ace_escape,.ace-merbivore-soft .ace_constant.ace_other,.ace-merbivore-soft .ace_support.ace_type {color: #68C1D8}.ace-merbivore-soft .ace_constant.ace_character.ace_escape {color: #B3E5B4}.ace-merbivore-soft .ace_constant.ace_language {color: #E1C582}.ace-merbivore-soft .ace_constant.ace_library,.ace-merbivore-soft .ace_string,.ace-merbivore-soft .ace_support.ace_constant {color: #8EC65F}.ace-merbivore-soft .ace_constant.ace_numeric {color: #7FC578}.ace-merbivore-soft .ace_invalid,.ace-merbivore-soft .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #FE3838}.ace-merbivore-soft .ace_fold {background-color: #FC803A;border-color: #E6E1DC}.ace-merbivore-soft .ace_comment,.ace-merbivore-soft .ace_meta {font-style: italic;color: #AC4BB8}.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {color: #EAF1A3}.ace-merbivore-soft .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkpLyZfD09PwPAAfYAnaStpHRAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/merbivore_soft"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-mono_industrial.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-mono_industrial.js ***!
  \*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/mono_industrial", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-mono-industrial", t.cssText = ".ace-mono-industrial .ace_gutter {background: #1d2521;color: #C5C9C9}.ace-mono-industrial .ace_print-margin {width: 1px;background: #555651}.ace-mono-industrial {background-color: #222C28;color: #FFFFFF}.ace-mono-industrial .ace_cursor {color: #FFFFFF}.ace-mono-industrial .ace_marker-layer .ace_selection {background: rgba(145, 153, 148, 0.40)}.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #222C28;}.ace-mono-industrial .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-mono-industrial .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(102, 108, 104, 0.50)}.ace-mono-industrial .ace_marker-layer .ace_active-line {background: rgba(12, 13, 12, 0.25)}.ace-mono-industrial .ace_gutter-active-line {background-color: rgba(12, 13, 12, 0.25)}.ace-mono-industrial .ace_marker-layer .ace_selected-word {border: 1px solid rgba(145, 153, 148, 0.40)}.ace-mono-industrial .ace_invisible {color: rgba(102, 108, 104, 0.50)}.ace-mono-industrial .ace_string {background-color: #151C19;color: #FFFFFF}.ace-mono-industrial .ace_keyword,.ace-mono-industrial .ace_meta {color: #A39E64}.ace-mono-industrial .ace_constant,.ace-mono-industrial .ace_constant.ace_character,.ace-mono-industrial .ace_constant.ace_character.ace_escape,.ace-mono-industrial .ace_constant.ace_numeric,.ace-mono-industrial .ace_constant.ace_other {color: #E98800}.ace-mono-industrial .ace_entity.ace_name.ace_function,.ace-mono-industrial .ace_keyword.ace_operator,.ace-mono-industrial .ace_variable {color: #A8B3AB}.ace-mono-industrial .ace_invalid {color: #FFFFFF;background-color: rgba(153, 0, 0, 0.68)}.ace-mono-industrial .ace_support.ace_constant {color: #C87500}.ace-mono-industrial .ace_fold {background-color: #A8B3AB;border-color: #FFFFFF}.ace-mono-industrial .ace_support.ace_function {color: #588E60}.ace-mono-industrial .ace_entity.ace_name,.ace-mono-industrial .ace_support.ace_class,.ace-mono-industrial .ace_support.ace_type {color: #5778B6}.ace-mono-industrial .ace_storage {color: #C23B00}.ace-mono-industrial .ace_variable.ace_language,.ace-mono-industrial .ace_variable.ace_parameter {color: #648BD2}.ace-mono-industrial .ace_comment {color: #666C68;background-color: #151C19}.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {color: #909993}.ace-mono-industrial .ace_entity.ace_name.ace_tag {color: #A65EFF}.ace-mono-industrial .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ1NbwZfALD/4PAAlTArlEC4r/AAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/mono_industrial"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-monokai.js":
/*!*********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-monokai.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/monokai", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-monokai", t.cssText = ".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {color: #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_punctuation,.ace-monokai .ace_punctuation.ace_tag {color: #fff}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/monokai"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-nord_dark.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-nord_dark.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/nord_dark", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-nord-dark", t.cssText = ".ace-nord-dark .ace_gutter {color: #616e88;}.ace-nord-dark .ace_print-margin {width: 1px;background: #4c566a;}.ace-nord-dark {background-color: #2e3440;color: #d8dee9;}.ace-nord-dark .ace_entity.ace_other.ace_attribute-name,.ace-nord-dark .ace_storage {color: #d8dee9;}.ace-nord-dark .ace_cursor {color: #d8dee9;},.ace-nord-dark .ace_string.ace_regexp {color: #bf616a;}.ace-nord-dark .ace_marker-layer .ace_active-line {background: #434c5ecc;}.ace-nord-dark .ace_marker-layer .ace_selection {background: #434c5ecc;}.ace-nord-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #2e3440;}.ace-nord-dark .ace_marker-layer .ace_step {background: #ebcb8b;}.ace-nord-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #88c0d066;}.ace-nord-dark .ace_gutter-active-line {background-color: #434c5ecc;}.ace-nord-dark .ace_marker-layer .ace_selected-word {border: 1px solid #88c0d066;}.ace-nord-dark .ace_invisible {color: #4c566a;}.ace-nord-dark .ace_keyword,.ace-nord-dark .ace_meta,.ace-nord-dark .ace_support.ace_class,.ace-nord-dark .ace_support.ace_type {color: #81a1c1;}.ace-nord-dark .ace_constant.ace_character,.ace-nord-dark .ace_constant.ace_other {color: #d8dee9;}.ace-nord-dark .ace_constant.ace_language {color: #5e81ac;}.ace-nord-dark .ace_constant.ace_escape {color: #ebcB8b;}.ace-nord-dark .ace_constant.ace_numeric {color: #b48ead;}.ace-nord-dark .ace_fold {background-color: #4c566a;border-color: #d8dee9;}.ace-nord-dark .ace_entity.ace_name.ace_function,.ace-nord-dark .ace_entity.ace_name.ace_tag,.ace-nord-dark .ace_support.ace_function,.ace-nord-dark .ace_variable,.ace-nord-dark .ace_variable.ace_language {color: #8fbcbb;}.ace-nord-dark .ace_string {color: #a3be8c;}.ace-nord-dark .ace_comment {color: #616e88;}.ace-nord-dark .ace_indent-guide {box-shadow: inset -1px 0 0 0 #434c5eb3;}", t.$selectionColorConflict = !0;
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/nord_dark"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-pastel_on_dark.js":
/*!****************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-pastel_on_dark.js ***!
  \****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/pastel_on_dark", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-pastel-on-dark", t.cssText = ".ace-pastel-on-dark .ace_gutter {background: #353030;color: #8F938F}.ace-pastel-on-dark .ace_print-margin {width: 1px;background: #353030}.ace-pastel-on-dark {background-color: #2C2828;color: #8F938F}.ace-pastel-on-dark .ace_cursor {color: #A7A7A7}.ace-pastel-on-dark .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20)}.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #2C2828;}.ace-pastel-on-dark .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-pastel-on-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25)}.ace-pastel-on-dark .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031)}.ace-pastel-on-dark .ace_gutter-active-line {background-color: rgba(255, 255, 255, 0.031)}.ace-pastel-on-dark .ace_marker-layer .ace_selected-word {border: 1px solid rgba(221, 240, 255, 0.20)}.ace-pastel-on-dark .ace_invisible {color: rgba(255, 255, 255, 0.25)}.ace-pastel-on-dark .ace_keyword,.ace-pastel-on-dark .ace_meta {color: #757aD8}.ace-pastel-on-dark .ace_constant,.ace-pastel-on-dark .ace_constant.ace_character,.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,.ace-pastel-on-dark .ace_constant.ace_other {color: #4FB7C5}.ace-pastel-on-dark .ace_keyword.ace_operator {color: #797878}.ace-pastel-on-dark .ace_constant.ace_character {color: #AFA472}.ace-pastel-on-dark .ace_constant.ace_language {color: #DE8E30}.ace-pastel-on-dark .ace_constant.ace_numeric {color: #CCCCCC}.ace-pastel-on-dark .ace_invalid,.ace-pastel-on-dark .ace_invalid.ace_illegal {color: #F8F8F8;background-color: rgba(86, 45, 86, 0.75)}.ace-pastel-on-dark .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1}.ace-pastel-on-dark .ace_fold {background-color: #757aD8;border-color: #8F938F}.ace-pastel-on-dark .ace_support.ace_function {color: #AEB2F8}.ace-pastel-on-dark .ace_string {color: #66A968}.ace-pastel-on-dark .ace_string.ace_regexp {color: #E9C062}.ace-pastel-on-dark .ace_comment {color: #A6C6FF}.ace-pastel-on-dark .ace_variable {color: #BEBF55}.ace-pastel-on-dark .ace_variable.ace_language {color: #C1C144}.ace-pastel-on-dark .ace_xml-pe {color: #494949}.ace-pastel-on-dark .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYIiPj/8PAARgAh2NTMh8AAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/pastel_on_dark"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-solarized_dark.js":
/*!****************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-solarized_dark.js ***!
  \****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/solarized_dark", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-solarized-dark", t.cssText = ".ace-solarized-dark .ace_gutter {background: #01313f;color: #d0edf7}.ace-solarized-dark .ace_print-margin {width: 1px;background: #33555E}.ace-solarized-dark {background-color: #002B36;color: #93A1A1}.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,.ace-solarized-dark .ace_storage {color: #93A1A1}.ace-solarized-dark .ace_cursor,.ace-solarized-dark .ace_string.ace_regexp {color: #D30102}.ace-solarized-dark .ace_marker-layer .ace_active-line,.ace-solarized-dark .ace_marker-layer .ace_selection {background: rgba(255, 255, 255, 0.1)}.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002B36;}.ace-solarized-dark .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-solarized-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(147, 161, 161, 0.50)}.ace-solarized-dark .ace_gutter-active-line {background-color: #0d3440}.ace-solarized-dark .ace_marker-layer .ace_selected-word {border: 1px solid #073642}.ace-solarized-dark .ace_invisible {color: rgba(147, 161, 161, 0.50)}.ace-solarized-dark .ace_keyword,.ace-solarized-dark .ace_meta,.ace-solarized-dark .ace_support.ace_class,.ace-solarized-dark .ace_support.ace_type {color: #859900}.ace-solarized-dark .ace_constant.ace_character,.ace-solarized-dark .ace_constant.ace_other {color: #CB4B16}.ace-solarized-dark .ace_constant.ace_language {color: #B58900}.ace-solarized-dark .ace_constant.ace_numeric {color: #D33682}.ace-solarized-dark .ace_fold {background-color: #268BD2;border-color: #93A1A1}.ace-solarized-dark .ace_entity.ace_name.ace_function,.ace-solarized-dark .ace_entity.ace_name.ace_tag,.ace-solarized-dark .ace_support.ace_function,.ace-solarized-dark .ace_variable,.ace-solarized-dark .ace_variable.ace_language {color: #268BD2}.ace-solarized-dark .ace_string {color: #2AA198}.ace-solarized-dark .ace_comment {font-style: italic;color: #657B83}.ace-solarized-dark .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/solarized_dark"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-solarized_light.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-solarized_light.js ***!
  \*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/solarized_light", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-solarized-light", t.cssText = ".ace-solarized-light .ace_gutter {background: #fbf1d3;color: #333}.ace-solarized-light .ace_print-margin {width: 1px;background: #e8e8e8}.ace-solarized-light {background-color: #FDF6E3;color: #586E75}.ace-solarized-light .ace_cursor {color: #000000}.ace-solarized-light .ace_marker-layer .ace_selection {background: rgba(7, 54, 67, 0.09)}.ace-solarized-light.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FDF6E3;}.ace-solarized-light .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-solarized-light .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(147, 161, 161, 0.50)}.ace-solarized-light .ace_marker-layer .ace_active-line {background: #EEE8D5}.ace-solarized-light .ace_gutter-active-line {background-color : #EDE5C1}.ace-solarized-light .ace_marker-layer .ace_selected-word {border: 1px solid #7f9390}.ace-solarized-light .ace_invisible {color: rgba(147, 161, 161, 0.50)}.ace-solarized-light .ace_keyword,.ace-solarized-light .ace_meta,.ace-solarized-light .ace_support.ace_class,.ace-solarized-light .ace_support.ace_type {color: #859900}.ace-solarized-light .ace_constant.ace_character,.ace-solarized-light .ace_constant.ace_other {color: #CB4B16}.ace-solarized-light .ace_constant.ace_language {color: #B58900}.ace-solarized-light .ace_constant.ace_numeric {color: #D33682}.ace-solarized-light .ace_fold {background-color: #268BD2;border-color: #586E75}.ace-solarized-light .ace_entity.ace_name.ace_function,.ace-solarized-light .ace_entity.ace_name.ace_tag,.ace-solarized-light .ace_support.ace_function,.ace-solarized-light .ace_variable,.ace-solarized-light .ace_variable.ace_language {color: #268BD2}.ace-solarized-light .ace_storage {color: #073642}.ace-solarized-light .ace_string {color: #2AA198}.ace-solarized-light .ace_string.ace_regexp {color: #D30102}.ace-solarized-light .ace_comment,.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {color: #93A1A1}.ace-solarized-light .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHjy8NJ/AAjgA5fzQUmBAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/solarized_light"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-sqlserver.js":
/*!***********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-sqlserver.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/sqlserver", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-sqlserver", t.cssText = '.ace-sqlserver .ace_gutter {background: #ebebeb;color: #333;overflow: hidden;}.ace-sqlserver .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-sqlserver {background-color: #FFFFFF;color: black;}.ace-sqlserver .ace_identifier {color: black;}.ace-sqlserver .ace_keyword {color: #0000FF;}.ace-sqlserver .ace_numeric {color: black;}.ace-sqlserver .ace_storage {color: #11B7BE;}.ace-sqlserver .ace_keyword.ace_operator,.ace-sqlserver .ace_lparen,.ace-sqlserver .ace_rparen,.ace-sqlserver .ace_punctuation {color: #808080;}.ace-sqlserver .ace_set.ace_statement {color: #0000FF;text-decoration: underline;}.ace-sqlserver .ace_cursor {color: black;}.ace-sqlserver .ace_invisible {color: rgb(191, 191, 191);}.ace-sqlserver .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-sqlserver .ace_constant.ace_language {color: #979797;}.ace-sqlserver .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-sqlserver .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-sqlserver .ace_support.ace_function {color: #FF00FF;}.ace-sqlserver .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-sqlserver .ace_class {color: #008080;}.ace-sqlserver .ace_support.ace_other {color: #6D79DE;}.ace-sqlserver .ace_variable.ace_parameter {font-style: italic;color: #FD971F;}.ace-sqlserver .ace_comment {color: #008000;}.ace-sqlserver .ace_constant.ace_numeric {color: black;}.ace-sqlserver .ace_variable {color: rgb(49, 132, 149);}.ace-sqlserver .ace_xml-pe {color: rgb(104, 104, 91);}.ace-sqlserver .ace_support.ace_storedprocedure {color: #800000;}.ace-sqlserver .ace_heading {color: rgb(12, 7, 255);}.ace-sqlserver .ace_list {color: rgb(185, 6, 144);}.ace-sqlserver .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-sqlserver .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-sqlserver .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-sqlserver .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-sqlserver .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-sqlserver .ace_gutter-active-line {background-color: #dcdcdc;}.ace-sqlserver .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-sqlserver .ace_meta.ace_tag {color: #0000FF;}.ace-sqlserver .ace_string.ace_regex {color: #FF0000;}.ace-sqlserver .ace_string {color: #FF0000;}.ace-sqlserver .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-sqlserver .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/sqlserver"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-terminal.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-terminal.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/terminal", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-terminal-theme", t.cssText = ".ace-terminal-theme .ace_gutter {background: #1a0005;color: steelblue}.ace-terminal-theme .ace_print-margin {width: 1px;background: #1a1a1a}.ace-terminal-theme {background-color: black;color: #DEDEDE}.ace-terminal-theme .ace_cursor {color: #9F9F9F}.ace-terminal-theme .ace_marker-layer .ace_selection {background: #424242}.ace-terminal-theme.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px black;}.ace-terminal-theme .ace_marker-layer .ace_step {background: rgb(0, 0, 0)}.ace-terminal-theme .ace_marker-layer .ace_bracket {background: #090;}.ace-terminal-theme .ace_marker-layer .ace_bracket-start {background: #090;}.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched {margin: -1px 0 0 -1px;border: 1px solid #900}.ace-terminal-theme .ace_marker-layer .ace_active-line {background: #2A2A2A}.ace-terminal-theme .ace_gutter-active-line {background-color: #2A112A}.ace-terminal-theme .ace_marker-layer .ace_selected-word {border: 1px solid #424242}.ace-terminal-theme .ace_invisible {color: #343434}.ace-terminal-theme .ace_keyword,.ace-terminal-theme .ace_meta,.ace-terminal-theme .ace_storage,.ace-terminal-theme .ace_storage.ace_type,.ace-terminal-theme .ace_support.ace_type {color: tomato}.ace-terminal-theme .ace_keyword.ace_operator {color: deeppink}.ace-terminal-theme .ace_constant.ace_character,.ace-terminal-theme .ace_constant.ace_language,.ace-terminal-theme .ace_constant.ace_numeric,.ace-terminal-theme .ace_keyword.ace_other.ace_unit,.ace-terminal-theme .ace_support.ace_constant,.ace-terminal-theme .ace_variable.ace_parameter {color: #E78C45}.ace-terminal-theme .ace_constant.ace_other {color: gold}.ace-terminal-theme .ace_invalid {color: yellow;background-color: red}.ace-terminal-theme .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-terminal-theme .ace_fold {background-color: #7AA6DA;border-color: #DEDEDE}.ace-terminal-theme .ace_entity.ace_name.ace_function,.ace-terminal-theme .ace_support.ace_function,.ace-terminal-theme .ace_variable {color: #7AA6DA}.ace-terminal-theme .ace_support.ace_class,.ace-terminal-theme .ace_support.ace_type {color: #E7C547}.ace-terminal-theme .ace_heading,.ace-terminal-theme .ace_string {color: #B9CA4A}.ace-terminal-theme .ace_entity.ace_name.ace_tag,.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name,.ace-terminal-theme .ace_meta.ace_tag,.ace-terminal-theme .ace_string.ace_regexp,.ace-terminal-theme .ace_variable {color: #D54E53}.ace-terminal-theme .ace_comment {color: orangered}.ace-terminal-theme .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y;}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/terminal"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-textmate.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-textmate.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/textmate", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  "use strict";

  t.isDark = !1, t.cssClass = "ace-tm", t.cssText = '.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}', t.$id = "ace/theme/textmate";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/textmate"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-tomorrow.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-tomorrow.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/tomorrow", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-tomorrow", t.cssText = ".ace-tomorrow .ace_gutter {background: #f6f6f6;color: #4D4D4C}.ace-tomorrow .ace_print-margin {width: 1px;background: #f6f6f6}.ace-tomorrow {background-color: #FFFFFF;color: #4D4D4C}.ace-tomorrow .ace_cursor {color: #AEAFAD}.ace-tomorrow .ace_marker-layer .ace_selection {background: #D6D6D6}.ace-tomorrow.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;}.ace-tomorrow .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-tomorrow .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #D1D1D1}.ace-tomorrow .ace_marker-layer .ace_active-line {background: #EFEFEF}.ace-tomorrow .ace_gutter-active-line {background-color : #dcdcdc}.ace-tomorrow .ace_marker-layer .ace_selected-word {border: 1px solid #D6D6D6}.ace-tomorrow .ace_invisible {color: #D1D1D1}.ace-tomorrow .ace_keyword,.ace-tomorrow .ace_meta,.ace-tomorrow .ace_storage,.ace-tomorrow .ace_storage.ace_type,.ace-tomorrow .ace_support.ace_type {color: #8959A8}.ace-tomorrow .ace_keyword.ace_operator {color: #3E999F}.ace-tomorrow .ace_constant.ace_character,.ace-tomorrow .ace_constant.ace_language,.ace-tomorrow .ace_constant.ace_numeric,.ace-tomorrow .ace_keyword.ace_other.ace_unit,.ace-tomorrow .ace_support.ace_constant,.ace-tomorrow .ace_variable.ace_parameter {color: #F5871F}.ace-tomorrow .ace_constant.ace_other {color: #666969}.ace-tomorrow .ace_invalid {color: #FFFFFF;background-color: #C82829}.ace-tomorrow .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #8959A8}.ace-tomorrow .ace_fold {background-color: #4271AE;border-color: #4D4D4C}.ace-tomorrow .ace_entity.ace_name.ace_function,.ace-tomorrow .ace_support.ace_function,.ace-tomorrow .ace_variable {color: #4271AE}.ace-tomorrow .ace_support.ace_class,.ace-tomorrow .ace_support.ace_type {color: #C99E00}.ace-tomorrow .ace_heading,.ace-tomorrow .ace_markup.ace_heading,.ace-tomorrow .ace_string {color: #718C00}.ace-tomorrow .ace_entity.ace_name.ace_tag,.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow .ace_meta.ace_tag,.ace-tomorrow .ace_string.ace_regexp,.ace-tomorrow .ace_variable {color: #C82829}.ace-tomorrow .ace_comment {color: #8E908C}.ace-tomorrow .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/tomorrow"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night.js":
/*!****************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night.js ***!
  \****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/tomorrow_night", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-tomorrow-night", t.cssText = ".ace-tomorrow-night .ace_gutter {background: #25282c;color: #C5C8C6}.ace-tomorrow-night .ace_print-margin {width: 1px;background: #25282c}.ace-tomorrow-night {background-color: #1D1F21;color: #C5C8C6}.ace-tomorrow-night .ace_cursor {color: #AEAFAD}.ace-tomorrow-night .ace_marker-layer .ace_selection {background: #373B41}.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #1D1F21;}.ace-tomorrow-night .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #4B4E55}.ace-tomorrow-night .ace_marker-layer .ace_active-line {background: #282A2E}.ace-tomorrow-night .ace_gutter-active-line {background-color: #282A2E}.ace-tomorrow-night .ace_marker-layer .ace_selected-word {border: 1px solid #373B41}.ace-tomorrow-night .ace_invisible {color: #4B4E55}.ace-tomorrow-night .ace_keyword,.ace-tomorrow-night .ace_meta,.ace-tomorrow-night .ace_storage,.ace-tomorrow-night .ace_storage.ace_type,.ace-tomorrow-night .ace_support.ace_type {color: #B294BB}.ace-tomorrow-night .ace_keyword.ace_operator {color: #8ABEB7}.ace-tomorrow-night .ace_constant.ace_character,.ace-tomorrow-night .ace_constant.ace_language,.ace-tomorrow-night .ace_constant.ace_numeric,.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night .ace_support.ace_constant,.ace-tomorrow-night .ace_variable.ace_parameter {color: #DE935F}.ace-tomorrow-night .ace_constant.ace_other {color: #CED1CF}.ace-tomorrow-night .ace_invalid {color: #CED2CF;background-color: #DF5F5F}.ace-tomorrow-night .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-tomorrow-night .ace_fold {background-color: #81A2BE;border-color: #C5C8C6}.ace-tomorrow-night .ace_entity.ace_name.ace_function,.ace-tomorrow-night .ace_support.ace_function,.ace-tomorrow-night .ace_variable {color: #81A2BE}.ace-tomorrow-night .ace_support.ace_class,.ace-tomorrow-night .ace_support.ace_type {color: #F0C674}.ace-tomorrow-night .ace_heading,.ace-tomorrow-night .ace_markup.ace_heading,.ace-tomorrow-night .ace_string {color: #B5BD68}.ace-tomorrow-night .ace_entity.ace_name.ace_tag,.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night .ace_meta.ace_tag,.ace-tomorrow-night .ace_string.ace_regexp,.ace-tomorrow-night .ace_variable {color: #CC6666}.ace-tomorrow-night .ace_comment {color: #969896}.ace-tomorrow-night .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/tomorrow_night"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night_blue.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night_blue.js ***!
  \*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/tomorrow_night_blue", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-tomorrow-night-blue", t.cssText = ".ace-tomorrow-night-blue .ace_gutter {background: #00204b;color: #7388b5}.ace-tomorrow-night-blue .ace_print-margin {width: 1px;background: #00204b}.ace-tomorrow-night-blue {background-color: #002451;color: #FFFFFF}.ace-tomorrow-night-blue .ace_constant.ace_other,.ace-tomorrow-night-blue .ace_cursor {color: #FFFFFF}.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {background: #003F8E}.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002451;}.ace-tomorrow-night-blue .ace_marker-layer .ace_step {background: rgb(127, 111, 19)}.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404F7D}.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line {background: #00346E}.ace-tomorrow-night-blue .ace_gutter-active-line {background-color: #022040}.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word {border: 1px solid #003F8E}.ace-tomorrow-night-blue .ace_invisible {color: #404F7D}.ace-tomorrow-night-blue .ace_keyword,.ace-tomorrow-night-blue .ace_meta,.ace-tomorrow-night-blue .ace_storage,.ace-tomorrow-night-blue .ace_storage.ace_type,.ace-tomorrow-night-blue .ace_support.ace_type {color: #EBBBFF}.ace-tomorrow-night-blue .ace_keyword.ace_operator {color: #99FFFF}.ace-tomorrow-night-blue .ace_constant.ace_character,.ace-tomorrow-night-blue .ace_constant.ace_language,.ace-tomorrow-night-blue .ace_constant.ace_numeric,.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-blue .ace_support.ace_constant,.ace-tomorrow-night-blue .ace_variable.ace_parameter {color: #FFC58F}.ace-tomorrow-night-blue .ace_invalid {color: #FFFFFF;background-color: #F99DA5}.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #EBBBFF}.ace-tomorrow-night-blue .ace_fold {background-color: #BBDAFF;border-color: #FFFFFF}.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,.ace-tomorrow-night-blue .ace_support.ace_function,.ace-tomorrow-night-blue .ace_variable {color: #BBDAFF}.ace-tomorrow-night-blue .ace_support.ace_class,.ace-tomorrow-night-blue .ace_support.ace_type {color: #FFEEAD}.ace-tomorrow-night-blue .ace_heading,.ace-tomorrow-night-blue .ace_markup.ace_heading,.ace-tomorrow-night-blue .ace_string {color: #D1F1A9}.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-blue .ace_meta.ace_tag,.ace-tomorrow-night-blue .ace_string.ace_regexp,.ace-tomorrow-night-blue .ace_variable {color: #FF9DA4}.ace-tomorrow-night-blue .ace_comment {color: #7285B7}.ace-tomorrow-night-blue .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/tomorrow_night_blue"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night_bright.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night_bright.js ***!
  \***********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/tomorrow_night_bright", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-tomorrow-night-bright", t.cssText = ".ace-tomorrow-night-bright .ace_gutter {background: #1a1a1a;color: #DEDEDE}.ace-tomorrow-night-bright .ace_print-margin {width: 1px;background: #1a1a1a}.ace-tomorrow-night-bright {background-color: #000000;color: #DEDEDE}.ace-tomorrow-night-bright .ace_cursor {color: #9F9F9F}.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {background: #424242}.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #000000;}.ace-tomorrow-night-bright .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #888888}.ace-tomorrow-night-bright .ace_marker-layer .ace_highlight {border: 1px solid rgb(110, 119, 0);border-bottom: 0;box-shadow: inset 0 -1px rgb(110, 119, 0);margin: -1px 0 0 -1px;background: rgba(255, 235, 0, 0.1)}.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line {background: #2A2A2A}.ace-tomorrow-night-bright .ace_gutter-active-line {background-color: #2A2A2A}.ace-tomorrow-night-bright .ace_stack {background-color: rgb(66, 90, 44)}.ace-tomorrow-night-bright .ace_marker-layer .ace_selected-word {border: 1px solid #888888}.ace-tomorrow-night-bright .ace_invisible {color: #343434}.ace-tomorrow-night-bright .ace_keyword,.ace-tomorrow-night-bright .ace_meta,.ace-tomorrow-night-bright .ace_storage,.ace-tomorrow-night-bright .ace_storage.ace_type,.ace-tomorrow-night-bright .ace_support.ace_type {color: #C397D8}.ace-tomorrow-night-bright .ace_keyword.ace_operator {color: #70C0B1}.ace-tomorrow-night-bright .ace_constant.ace_character,.ace-tomorrow-night-bright .ace_constant.ace_language,.ace-tomorrow-night-bright .ace_constant.ace_numeric,.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-bright .ace_support.ace_constant,.ace-tomorrow-night-bright .ace_variable.ace_parameter {color: #E78C45}.ace-tomorrow-night-bright .ace_constant.ace_other {color: #EEEEEE}.ace-tomorrow-night-bright .ace_invalid {color: #CED2CF;background-color: #DF5F5F}.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-tomorrow-night-bright .ace_fold {background-color: #7AA6DA;border-color: #DEDEDE}.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,.ace-tomorrow-night-bright .ace_support.ace_function,.ace-tomorrow-night-bright .ace_variable {color: #7AA6DA}.ace-tomorrow-night-bright .ace_support.ace_class,.ace-tomorrow-night-bright .ace_support.ace_type {color: #E7C547}.ace-tomorrow-night-bright .ace_heading,.ace-tomorrow-night-bright .ace_markup.ace_heading,.ace-tomorrow-night-bright .ace_string {color: #B9CA4A}.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-bright .ace_meta.ace_tag,.ace-tomorrow-night-bright .ace_string.ace_regexp,.ace-tomorrow-night-bright .ace_variable {color: #D54E53}.ace-tomorrow-night-bright .ace_comment {color: #969896}.ace-tomorrow-night-bright .ace_c9searchresults.ace_keyword {color: #C2C280}.ace-tomorrow-night-bright .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/tomorrow_night_bright"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night_eighties.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night_eighties.js ***!
  \*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/tomorrow_night_eighties", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-tomorrow-night-eighties", t.cssText = ".ace-tomorrow-night-eighties .ace_gutter {background: #272727;color: #CCC}.ace-tomorrow-night-eighties .ace_print-margin {width: 1px;background: #272727}.ace-tomorrow-night-eighties {background-color: #2D2D2D;color: #CCCCCC}.ace-tomorrow-night-eighties .ace_constant.ace_other,.ace-tomorrow-night-eighties .ace_cursor {color: #CCCCCC}.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {background: #515151}.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #2D2D2D;}.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #6A6A6A}.ace-tomorrow-night-bright .ace_stack {background: rgb(66, 90, 44)}.ace-tomorrow-night-eighties .ace_marker-layer .ace_active-line {background: #393939}.ace-tomorrow-night-eighties .ace_gutter-active-line {background-color: #393939}.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected-word {border: 1px solid #515151}.ace-tomorrow-night-eighties .ace_invisible {color: #6A6A6A}.ace-tomorrow-night-eighties .ace_keyword,.ace-tomorrow-night-eighties .ace_meta,.ace-tomorrow-night-eighties .ace_storage,.ace-tomorrow-night-eighties .ace_storage.ace_type,.ace-tomorrow-night-eighties .ace_support.ace_type {color: #CC99CC}.ace-tomorrow-night-eighties .ace_keyword.ace_operator {color: #66CCCC}.ace-tomorrow-night-eighties .ace_constant.ace_character,.ace-tomorrow-night-eighties .ace_constant.ace_language,.ace-tomorrow-night-eighties .ace_constant.ace_numeric,.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-eighties .ace_support.ace_constant,.ace-tomorrow-night-eighties .ace_variable.ace_parameter {color: #F99157}.ace-tomorrow-night-eighties .ace_invalid {color: #CDCDCD;background-color: #F2777A}.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {color: #CDCDCD;background-color: #CC99CC}.ace-tomorrow-night-eighties .ace_fold {background-color: #6699CC;border-color: #CCCCCC}.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,.ace-tomorrow-night-eighties .ace_support.ace_function,.ace-tomorrow-night-eighties .ace_variable {color: #6699CC}.ace-tomorrow-night-eighties .ace_support.ace_class,.ace-tomorrow-night-eighties .ace_support.ace_type {color: #FFCC66}.ace-tomorrow-night-eighties .ace_heading,.ace-tomorrow-night-eighties .ace_markup.ace_heading,.ace-tomorrow-night-eighties .ace_string {color: #99CC99}.ace-tomorrow-night-eighties .ace_comment {color: #999999}.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-eighties .ace_meta.ace_tag,.ace-tomorrow-night-eighties .ace_variable {color: #F2777A}.ace-tomorrow-night-eighties .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/tomorrow_night_eighties"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-twilight.js":
/*!**********************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-twilight.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/twilight", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-twilight", t.cssText = ".ace-twilight .ace_gutter {background: #232323;color: #E2E2E2}.ace-twilight .ace_print-margin {width: 1px;background: #232323}.ace-twilight {background-color: #141414;color: #F8F8F8}.ace-twilight .ace_cursor {color: #A7A7A7}.ace-twilight .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20)}.ace-twilight.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #141414;}.ace-twilight .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-twilight .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25)}.ace-twilight .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031)}.ace-twilight .ace_gutter-active-line {background-color: rgba(255, 255, 255, 0.031)}.ace-twilight .ace_marker-layer .ace_selected-word {border: 1px solid rgba(221, 240, 255, 0.20)}.ace-twilight .ace_invisible {color: rgba(255, 255, 255, 0.25)}.ace-twilight .ace_keyword,.ace-twilight .ace_meta {color: #CDA869}.ace-twilight .ace_constant,.ace-twilight .ace_constant.ace_character,.ace-twilight .ace_constant.ace_character.ace_escape,.ace-twilight .ace_constant.ace_other,.ace-twilight .ace_heading,.ace-twilight .ace_markup.ace_heading,.ace-twilight .ace_support.ace_constant {color: #CF6A4C}.ace-twilight .ace_invalid.ace_illegal {color: #F8F8F8;background-color: rgba(86, 45, 86, 0.75)}.ace-twilight .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1}.ace-twilight .ace_support {color: #9B859D}.ace-twilight .ace_fold {background-color: #AC885B;border-color: #F8F8F8}.ace-twilight .ace_support.ace_function {color: #DAD085}.ace-twilight .ace_list,.ace-twilight .ace_markup.ace_list,.ace-twilight .ace_storage {color: #F9EE98}.ace-twilight .ace_entity.ace_name.ace_function,.ace-twilight .ace_meta.ace_tag,.ace-twilight .ace_variable {color: #AC885B}.ace-twilight .ace_string {color: #8F9D6A}.ace-twilight .ace_string.ace_regexp {color: #E9C062}.ace-twilight .ace_comment {font-style: italic;color: #5F5A60}.ace-twilight .ace_variable {color: #7587A6}.ace-twilight .ace_xml-pe {color: #494949}.ace-twilight .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/twilight"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-vibrant_ink.js":
/*!*************************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-vibrant_ink.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/vibrant_ink", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !0, t.cssClass = "ace-vibrant-ink", t.cssText = ".ace-vibrant-ink .ace_gutter {background: #1a1a1a;color: #BEBEBE}.ace-vibrant-ink .ace_print-margin {width: 1px;background: #1a1a1a}.ace-vibrant-ink {background-color: #0F0F0F;color: #FFFFFF}.ace-vibrant-ink .ace_cursor {color: #FFFFFF}.ace-vibrant-ink .ace_marker-layer .ace_selection {background: #6699CC}.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #0F0F0F;}.ace-vibrant-ink .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-vibrant-ink .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-vibrant-ink .ace_marker-layer .ace_active-line {background: #333333}.ace-vibrant-ink .ace_gutter-active-line {background-color: #333333}.ace-vibrant-ink .ace_marker-layer .ace_selected-word {border: 1px solid #6699CC}.ace-vibrant-ink .ace_invisible {color: #404040}.ace-vibrant-ink .ace_keyword,.ace-vibrant-ink .ace_meta {color: #FF6600}.ace-vibrant-ink .ace_constant,.ace-vibrant-ink .ace_constant.ace_character,.ace-vibrant-ink .ace_constant.ace_character.ace_escape,.ace-vibrant-ink .ace_constant.ace_other {color: #339999}.ace-vibrant-ink .ace_constant.ace_numeric {color: #99CC99}.ace-vibrant-ink .ace_invalid,.ace-vibrant-ink .ace_invalid.ace_deprecated {color: #CCFF33;background-color: #000000}.ace-vibrant-ink .ace_fold {background-color: #FFCC00;border-color: #FFFFFF}.ace-vibrant-ink .ace_entity.ace_name.ace_function,.ace-vibrant-ink .ace_support.ace_function,.ace-vibrant-ink .ace_variable {color: #FFCC00}.ace-vibrant-ink .ace_variable.ace_parameter {font-style: italic}.ace-vibrant-ink .ace_string {color: #66FF00}.ace-vibrant-ink .ace_string.ace_regexp {color: #44B4CC}.ace-vibrant-ink .ace_comment {color: #9933CC}.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {font-style: italic;color: #99CC99}.ace-vibrant-ink .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYNDTc/oPAALPAZ7hxlbYAAAAAElFTkSuQmCC) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/vibrant_ink"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-min-noconflict/theme-xcode.js":
/*!*******************************************************************!*\
  !*** ./node_modules/ace-builds/src-min-noconflict/theme-xcode.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/theme/xcode", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
  t.isDark = !1, t.cssClass = "ace-xcode", t.cssText = ".ace-xcode .ace_gutter {background: #e8e8e8;color: #333}.ace-xcode .ace_print-margin {width: 1px;background: #e8e8e8}.ace-xcode {background-color: #FFFFFF;color: #000000}.ace-xcode .ace_cursor {color: #000000}.ace-xcode .ace_marker-layer .ace_selection {background: #B5D5FF}.ace-xcode.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;}.ace-xcode .ace_marker-layer .ace_step {background: rgb(198, 219, 174)}.ace-xcode .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-xcode .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_marker-layer .ace_selected-word {border: 1px solid #B5D5FF}.ace-xcode .ace_constant.ace_language,.ace-xcode .ace_keyword,.ace-xcode .ace_meta,.ace-xcode .ace_variable.ace_language {color: #C800A4}.ace-xcode .ace_invisible {color: #BFBFBF}.ace-xcode .ace_constant.ace_character,.ace-xcode .ace_constant.ace_other {color: #275A5E}.ace-xcode .ace_constant.ace_numeric {color: #3A00DC}.ace-xcode .ace_entity.ace_other.ace_attribute-name,.ace-xcode .ace_support.ace_constant,.ace-xcode .ace_support.ace_function {color: #450084}.ace-xcode .ace_fold {background-color: #C800A4;border-color: #000000}.ace-xcode .ace_entity.ace_name.ace_tag,.ace-xcode .ace_support.ace_class,.ace-xcode .ace_support.ace_type {color: #790EAD}.ace-xcode .ace_storage {color: #C900A4}.ace-xcode .ace_string {color: #DF0002}.ace-xcode .ace_comment {color: #008E00}.ace-xcode .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y}";
  var r = e("../lib/dom");
  r.importCssString(t.cssText, t.cssClass);
});

(function () {
  ace.require(["ace/theme/xcode"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-noconflict/ace.js":
/*!*******************************************************!*\
  !*** ./node_modules/ace-builds/src-noconflict/ace.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj){"@babel/helpers - typeof";if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}/* ***** BEGIN LICENSE BLOCK *****
 * Distributed under the BSD license:
 *
 * Copyright (c) 2010, Ajax.org B.V.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of Ajax.org B.V. nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ***** END LICENSE BLOCK ***** */ /**
 * Define a module along with a payload
 * @param module a name for the payload
 * @param payload a function to call with (require, exports, module) params
 */(function(){var ACE_NAMESPACE="ace";var global=function(){return this;}();if(!global&&typeof window!="undefined")global=window;// strict mode
if(!ACE_NAMESPACE&&typeof requirejs!=="undefined")return;var define=function define(module,deps,payload){if(typeof module!=="string"){if(define.original)define.original.apply(this,arguments);else{console.error("dropping module because define wasn\'t a string.");console.trace();}return;}if(arguments.length==2)payload=deps;if(!define.modules[module]){define.payloads[module]=payload;define.modules[module]=null;}};define.modules={};define.payloads={};/**
 * Get at functionality define()ed using the function above
 */var _require=function _require(parentId,module,callback){if(typeof module==="string"){var payload=lookup(parentId,module);if(payload!=undefined){callback&&callback();return payload;}}else if(Object.prototype.toString.call(module)==="[object Array]"){var params=[];for(var i=0,l=module.length;i<l;++i){var dep=lookup(parentId,module[i]);if(dep==undefined&&require.original)return;params.push(dep);}return callback&&callback.apply(null,params)||true;}};var require=function require(module,callback){var packagedModule=_require("",module,callback);if(packagedModule==undefined&&require.original)return require.original.apply(this,arguments);return packagedModule;};var normalizeModule=function normalizeModule(parentId,moduleName){// normalize plugin requires
if(moduleName.indexOf("!")!==-1){var chunks=moduleName.split("!");return normalizeModule(parentId,chunks[0])+"!"+normalizeModule(parentId,chunks[1]);}// normalize relative requires
if(moduleName.charAt(0)=="."){var base=parentId.split("/").slice(0,-1).join("/");moduleName=base+"/"+moduleName;while(moduleName.indexOf(".")!==-1&&previous!=moduleName){var previous=moduleName;moduleName=moduleName.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"");}}return moduleName;};/**
 * Internal function to lookup moduleNames and resolve them by calling the
 * definition function if needed.
 */var lookup=function lookup(parentId,moduleName){moduleName=normalizeModule(parentId,moduleName);var module=define.modules[moduleName];if(!module){module=define.payloads[moduleName];if(typeof module==='function'){var exports={};var mod={id:moduleName,uri:'',exports:exports,packaged:true};var req=function req(module,callback){return _require(moduleName,module,callback);};var returnValue=module(req,exports,mod);exports=returnValue||mod.exports;define.modules[moduleName]=exports;delete define.payloads[moduleName];}module=define.modules[moduleName]=exports||module;}return module;};function exportAce(ns){var root=global;if(ns){if(!global[ns])global[ns]={};root=global[ns];}if(!root.define||!root.define.packaged){define.original=root.define;root.define=define;root.define.packaged=true;}if(!root.require||!root.require.packaged){require.original=root.require;root.require=require;root.require.packaged=true;}}exportAce(ACE_NAMESPACE);})();ace.define("ace/lib/fixoldbrowsers",["require","exports","module"],function(require,exports,module){"use strict";if(typeof Element!="undefined"&&!Element.prototype.remove){Object.defineProperty(Element.prototype,"remove",{enumerable:false,writable:true,configurable:true,value:function value(){this.parentNode&&this.parentNode.removeChild(this);}});}});ace.define("ace/lib/useragent",["require","exports","module"],function(require,exports,module){"use strict";exports.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"};exports.getOS=function(){if(exports.isMac){return exports.OS.MAC;}else if(exports.isLinux){return exports.OS.LINUX;}else{return exports.OS.WINDOWS;}};var _navigator=(typeof navigator==="undefined"?"undefined":_typeof(navigator))=="object"?navigator:{};var os=(/mac|win|linux/i.exec(_navigator.platform)||["other"])[0].toLowerCase();var ua=_navigator.userAgent||"";var appName=_navigator.appName||"";exports.isWin=os=="win";exports.isMac=os=="mac";exports.isLinux=os=="linux";exports.isIE=appName=="Microsoft Internet Explorer"||appName.indexOf("MSAppHost")>=0?parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]);// for ie
exports.isOldIE=exports.isIE&&exports.isIE<9;exports.isGecko=exports.isMozilla=ua.match(/ Gecko\/\d+/);exports.isOpera=(typeof opera==="undefined"?"undefined":_typeof(opera))=="object"&&Object.prototype.toString.call(window.opera)=="[object Opera]";exports.isWebKit=parseFloat(ua.split("WebKit/")[1])||undefined;exports.isChrome=parseFloat(ua.split(" Chrome/")[1])||undefined;exports.isEdge=parseFloat(ua.split(" Edge/")[1])||undefined;exports.isAIR=ua.indexOf("AdobeAIR")>=0;exports.isAndroid=ua.indexOf("Android")>=0;exports.isChromeOS=ua.indexOf(" CrOS ")>=0;exports.isIOS=/iPad|iPhone|iPod/.test(ua)&&!window.MSStream;if(exports.isIOS)exports.isMac=true;exports.isMobile=exports.isIOS||exports.isAndroid;});ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(require,exports,module){"use strict";var useragent=require("./useragent");var XHTML_NS="http://www.w3.org/1999/xhtml";exports.buildDom=function buildDom(arr,parent,refs){if(typeof arr=="string"&&arr){var txt=document.createTextNode(arr);if(parent)parent.appendChild(txt);return txt;}if(!Array.isArray(arr)){if(arr&&arr.appendChild&&parent)parent.appendChild(arr);return arr;}if(typeof arr[0]!="string"||!arr[0]){var els=[];for(var i=0;i<arr.length;i++){var ch=buildDom(arr[i],parent,refs);ch&&els.push(ch);}return els;}var el=document.createElement(arr[0]);var options=arr[1];var childIndex=1;if(options&&_typeof(options)=="object"&&!Array.isArray(options))childIndex=2;for(var i=childIndex;i<arr.length;i++){buildDom(arr[i],el,refs);}if(childIndex==2){Object.keys(options).forEach(function(n){var val=options[n];if(n==="class"){el.className=Array.isArray(val)?val.join(" "):val;}else if(typeof val=="function"||n=="value"||n[0]=="$"){el[n]=val;}else if(n==="ref"){if(refs)refs[val]=el;}else if(val!=null){el.setAttribute(n,val);}});}if(parent)parent.appendChild(el);return el;};exports.getDocumentHead=function(doc){if(!doc)doc=document;return doc.head||doc.getElementsByTagName("head")[0]||doc.documentElement;};exports.createElement=function(tag,ns){return document.createElementNS?document.createElementNS(ns||XHTML_NS,tag):document.createElement(tag);};exports.removeChildren=function(element){element.innerHTML="";};exports.createTextNode=function(textContent,element){var doc=element?element.ownerDocument:document;return doc.createTextNode(textContent);};exports.createFragment=function(element){var doc=element?element.ownerDocument:document;return doc.createDocumentFragment();};exports.hasCssClass=function(el,name){var classes=(el.className+"").split(/\s+/g);return classes.indexOf(name)!==-1;};exports.addCssClass=function(el,name){if(!exports.hasCssClass(el,name)){el.className+=" "+name;}};exports.removeCssClass=function(el,name){var classes=el.className.split(/\s+/g);while(true){var index=classes.indexOf(name);if(index==-1){break;}classes.splice(index,1);}el.className=classes.join(" ");};exports.toggleCssClass=function(el,name){var classes=el.className.split(/\s+/g),add=true;while(true){var index=classes.indexOf(name);if(index==-1){break;}add=false;classes.splice(index,1);}if(add)classes.push(name);el.className=classes.join(" ");return add;};exports.setCssClass=function(node,className,include){if(include){exports.addCssClass(node,className);}else{exports.removeCssClass(node,className);}};exports.hasCssString=function(id,doc){var index=0,sheets;doc=doc||document;if(sheets=doc.querySelectorAll("style")){while(index<sheets.length){if(sheets[index++].id===id)return true;}}};exports.importCssString=function importCssString(cssText,id,target){var container=target;if(!target||!target.getRootNode){container=document;}else{container=target.getRootNode();if(!container||container==target)container=document;}var doc=container.ownerDocument||container;if(id&&exports.hasCssString(id,container))return null;if(id)cssText+="\n/*# sourceURL=ace/css/"+id+" */";var style=exports.createElement("style");style.appendChild(doc.createTextNode(cssText));if(id)style.id=id;if(container==doc)container=exports.getDocumentHead(doc);container.insertBefore(style,container.firstChild);};exports.importCssStylsheet=function(uri,doc){exports.buildDom(["link",{rel:"stylesheet",href:uri}],exports.getDocumentHead(doc));};exports.scrollbarWidth=function(document){var inner=exports.createElement("ace_inner");inner.style.width="100%";inner.style.minWidth="0px";inner.style.height="200px";inner.style.display="block";var outer=exports.createElement("ace_outer");var style=outer.style;style.position="absolute";style.left="-10000px";style.overflow="hidden";style.width="200px";style.minWidth="0px";style.height="150px";style.display="block";outer.appendChild(inner);var body=document.documentElement;body.appendChild(outer);var noScrollbar=inner.offsetWidth;style.overflow="scroll";var withScrollbar=inner.offsetWidth;if(noScrollbar==withScrollbar){withScrollbar=outer.clientWidth;}body.removeChild(outer);return noScrollbar-withScrollbar;};if(typeof document=="undefined"){exports.importCssString=function(){};}exports.computedStyle=function(element,style){return window.getComputedStyle(element,"")||{};};exports.setStyle=function(styles,property,value){if(styles[property]!==value){styles[property]=value;}};exports.HAS_CSS_ANIMATION=false;exports.HAS_CSS_TRANSFORMS=false;exports.HI_DPI=useragent.isWin?typeof window!=="undefined"&&window.devicePixelRatio>=1.5:true;if(typeof document!=="undefined"){var div=document.createElement("div");if(exports.HI_DPI&&div.style.transform!==undefined)exports.HAS_CSS_TRANSFORMS=true;if(!useragent.isEdge&&typeof div.style.animationName!=="undefined")exports.HAS_CSS_ANIMATION=true;div=null;}if(exports.HAS_CSS_TRANSFORMS){exports.translate=function(element,tx,ty){element.style.transform="translate("+Math.round(tx)+"px, "+Math.round(ty)+"px)";};}else{exports.translate=function(element,tx,ty){element.style.top=Math.round(ty)+"px";element.style.left=Math.round(tx)+"px";};}});ace.define("ace/lib/oop",["require","exports","module"],function(require,exports,module){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}});};exports.mixin=function(obj,mixin){for(var key in mixin){obj[key]=mixin[key];}return obj;};exports.implement=function(proto,mixin){exports.mixin(proto,mixin);};});ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(require,exports,module){"use strict";var oop=require("./oop");var Keys=function(){var ret={MODIFIER_KEYS:{16:'Shift',17:'Ctrl',18:'Alt',224:'Meta',91:'MetaLeft',92:'MetaRight',93:'ContextMenu'},KEY_MODS:{"ctrl":1,"alt":2,"option":2,"shift":4,"super":8,"meta":8,"command":8,"cmd":8,"control":1},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",'-13':"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:' ',48:'0',49:'1',50:'2',51:'3',52:'4',53:'5',54:'6',55:'7',56:'8',57:'9',59:';',61:'=',65:'a',66:'b',67:'c',68:'d',69:'e',70:'f',71:'g',72:'h',73:'i',74:'j',75:'k',76:'l',77:'m',78:'n',79:'o',80:'p',81:'q',82:'r',83:'s',84:'t',85:'u',86:'v',87:'w',88:'x',89:'y',90:'z',107:'+',109:'-',110:'.',186:';',187:'=',188:',',189:'-',190:'.',191:'/',192:'`',219:'[',220:'\\',221:']',222:"'",111:'/',106:'*'}};var name,i;for(i in ret.FUNCTION_KEYS){name=ret.FUNCTION_KEYS[i].toLowerCase();ret[name]=parseInt(i,10);}for(i in ret.PRINTABLE_KEYS){name=ret.PRINTABLE_KEYS[i].toLowerCase();ret[name]=parseInt(i,10);}oop.mixin(ret,ret.MODIFIER_KEYS);oop.mixin(ret,ret.PRINTABLE_KEYS);oop.mixin(ret,ret.FUNCTION_KEYS);ret.enter=ret["return"];ret.escape=ret.esc;ret.del=ret["delete"];ret[173]='-';(function(){var mods=["cmd","ctrl","alt","shift"];for(var i=Math.pow(2,mods.length);i--;){ret.KEY_MODS[i]=mods.filter(function(x){return i&ret.KEY_MODS[x];}).join("-")+"-";}})();ret.KEY_MODS[0]="";ret.KEY_MODS[-1]="input-";return ret;}();oop.mixin(exports,Keys);exports.keyCodeToString=function(keyCode){var keyString=Keys[keyCode];if(typeof keyString!="string")keyString=String.fromCharCode(keyCode);return keyString.toLowerCase();};});ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(require,exports,module){"use strict";var keys=require("./keys");var useragent=require("./useragent");var pressedKeys=null;var ts=0;var activeListenerOptions;function detectListenerOptionsSupport(){activeListenerOptions=false;try{document.createComment("").addEventListener("test",function(){},{get passive(){activeListenerOptions={passive:false};}});}catch(e){}}function getListenerOptions(){if(activeListenerOptions==undefined)detectListenerOptionsSupport();return activeListenerOptions;}function EventListener(elem,type,callback){this.elem=elem;this.type=type;this.callback=callback;}EventListener.prototype.destroy=function(){removeListener(this.elem,this.type,this.callback);this.elem=this.type=this.callback=undefined;};var addListener=exports.addListener=function(elem,type,callback,destroyer){elem.addEventListener(type,callback,getListenerOptions());if(destroyer)destroyer.$toDestroy.push(new EventListener(elem,type,callback));};var removeListener=exports.removeListener=function(elem,type,callback){elem.removeEventListener(type,callback,getListenerOptions());};exports.stopEvent=function(e){exports.stopPropagation(e);exports.preventDefault(e);return false;};exports.stopPropagation=function(e){if(e.stopPropagation)e.stopPropagation();};exports.preventDefault=function(e){if(e.preventDefault)e.preventDefault();};exports.getButton=function(e){if(e.type=="dblclick")return 0;if(e.type=="contextmenu"||useragent.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey)return 2;return e.button;};exports.capture=function(el,eventHandler,releaseCaptureHandler){var ownerDocument=el&&el.ownerDocument||document;function onMouseUp(e){eventHandler&&eventHandler(e);releaseCaptureHandler&&releaseCaptureHandler(e);removeListener(ownerDocument,"mousemove",eventHandler);removeListener(ownerDocument,"mouseup",onMouseUp);removeListener(ownerDocument,"dragstart",onMouseUp);}addListener(ownerDocument,"mousemove",eventHandler);addListener(ownerDocument,"mouseup",onMouseUp);addListener(ownerDocument,"dragstart",onMouseUp);return onMouseUp;};exports.addMouseWheelListener=function(el,callback,destroyer){if("onmousewheel"in el){addListener(el,"mousewheel",function(e){var factor=8;if(e.wheelDeltaX!==undefined){e.wheelX=-e.wheelDeltaX/factor;e.wheelY=-e.wheelDeltaY/factor;}else{e.wheelX=0;e.wheelY=-e.wheelDelta/factor;}callback(e);},destroyer);}else if("onwheel"in el){addListener(el,"wheel",function(e){var factor=0.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*factor||0;e.wheelY=e.deltaY*factor||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5;e.wheelY=(e.deltaY||0)*5;break;}callback(e);},destroyer);}else{addListener(el,"DOMMouseScroll",function(e){if(e.axis&&e.axis==e.HORIZONTAL_AXIS){e.wheelX=(e.detail||0)*5;e.wheelY=0;}else{e.wheelX=0;e.wheelY=(e.detail||0)*5;}callback(e);},destroyer);}};exports.addMultiMouseDownListener=function(elements,timeouts,eventHandler,callbackName,destroyer){var clicks=0;var startX,startY,timer;var eventNames={2:"dblclick",3:"tripleclick",4:"quadclick"};function onMousedown(e){if(exports.getButton(e)!==0){clicks=0;}else if(e.detail>1){clicks++;if(clicks>4)clicks=1;}else{clicks=1;}if(useragent.isIE){var isNewClick=Math.abs(e.clientX-startX)>5||Math.abs(e.clientY-startY)>5;if(!timer||isNewClick)clicks=1;if(timer)clearTimeout(timer);timer=setTimeout(function(){timer=null;},timeouts[clicks-1]||600);if(clicks==1){startX=e.clientX;startY=e.clientY;}}e._clicks=clicks;eventHandler[callbackName]("mousedown",e);if(clicks>4)clicks=0;else if(clicks>1)return eventHandler[callbackName](eventNames[clicks],e);}if(!Array.isArray(elements))elements=[elements];elements.forEach(function(el){addListener(el,"mousedown",onMousedown,destroyer);});};var getModifierHash=function getModifierHash(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0);};exports.getModifierString=function(e){return keys.KEY_MODS[getModifierHash(e)];};function normalizeCommandKeys(callback,e,keyCode){var hashId=getModifierHash(e);if(!useragent.isMac&&pressedKeys){if(e.getModifierState&&(e.getModifierState("OS")||e.getModifierState("Win")))hashId|=8;if(pressedKeys.altGr){if((3&hashId)!=3)pressedKeys.altGr=0;else return;}if(keyCode===18||keyCode===17){var location="location"in e?e.location:e.keyLocation;if(keyCode===17&&location===1){if(pressedKeys[keyCode]==1)ts=e.timeStamp;}else if(keyCode===18&&hashId===3&&location===2){var dt=e.timeStamp-ts;if(dt<50)pressedKeys.altGr=true;}}}if(keyCode in keys.MODIFIER_KEYS){keyCode=-1;}if(!hashId&&keyCode===13){var location="location"in e?e.location:e.keyLocation;if(location===3){callback(e,hashId,-keyCode);if(e.defaultPrevented)return;}}if(useragent.isChromeOS&&hashId&8){callback(e,hashId,keyCode);if(e.defaultPrevented)return;else hashId&=~8;}if(!hashId&&!(keyCode in keys.FUNCTION_KEYS)&&!(keyCode in keys.PRINTABLE_KEYS)){return false;}return callback(e,hashId,keyCode);}exports.addCommandKeyListener=function(el,callback,destroyer){if(useragent.isOldGecko||useragent.isOpera&&!("KeyboardEvent"in window)){var lastKeyDownKeyCode=null;addListener(el,"keydown",function(e){lastKeyDownKeyCode=e.keyCode;},destroyer);addListener(el,"keypress",function(e){return normalizeCommandKeys(callback,e,lastKeyDownKeyCode);},destroyer);}else{var lastDefaultPrevented=null;addListener(el,"keydown",function(e){pressedKeys[e.keyCode]=(pressedKeys[e.keyCode]||0)+1;var result=normalizeCommandKeys(callback,e,e.keyCode);lastDefaultPrevented=e.defaultPrevented;return result;},destroyer);addListener(el,"keypress",function(e){if(lastDefaultPrevented&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)){exports.stopEvent(e);lastDefaultPrevented=null;}},destroyer);addListener(el,"keyup",function(e){pressedKeys[e.keyCode]=null;},destroyer);if(!pressedKeys){resetPressedKeys();addListener(window,"focus",resetPressedKeys);}}};function resetPressedKeys(){pressedKeys=Object.create(null);}if((typeof window==="undefined"?"undefined":_typeof(window))=="object"&&window.postMessage&&!useragent.isOldIE){var postMessageId=1;exports.nextTick=function(callback,win){win=win||window;var messageName="zero-timeout-message-"+postMessageId++;var listener=function listener(e){if(e.data==messageName){exports.stopPropagation(e);removeListener(win,"message",listener);callback();}};addListener(win,"message",listener);win.postMessage(messageName,"*");};}exports.$idleBlocked=false;exports.onIdle=function(cb,timeout){return setTimeout(function handler(){if(!exports.$idleBlocked){cb();}else{setTimeout(handler,100);}},timeout);};exports.$idleBlockId=null;exports.blockIdle=function(delay){if(exports.$idleBlockId)clearTimeout(exports.$idleBlockId);exports.$idleBlocked=true;exports.$idleBlockId=setTimeout(function(){exports.$idleBlocked=false;},delay||100);};exports.nextFrame=(typeof window==="undefined"?"undefined":_typeof(window))=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame);if(exports.nextFrame)exports.nextFrame=exports.nextFrame.bind(window);else exports.nextFrame=function(callback){setTimeout(callback,17);};});ace.define("ace/range",["require","exports","module"],function(require,exports,module){"use strict";var comparePoints=function comparePoints(p1,p2){return p1.row-p2.row||p1.column-p2.column;};var Range=function Range(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn};this.end={row:endRow,column:endColumn};};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column;};this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]";};this.contains=function(row,column){return this.compare(row,column)==0;};this.compareRange=function(range){var cmp,end=range.end,start=range.start;cmp=this.compare(end.row,end.column);if(cmp==1){cmp=this.compare(start.row,start.column);if(cmp==1){return 2;}else if(cmp==0){return 1;}else{return 0;}}else if(cmp==-1){return-2;}else{cmp=this.compare(start.row,start.column);if(cmp==-1){return-1;}else if(cmp==1){return 42;}else{return 0;}}};this.comparePoint=function(p){return this.compare(p.row,p.column);};this.containsRange=function(range){return this.comparePoint(range.start)==0&&this.comparePoint(range.end)==0;};this.intersects=function(range){var cmp=this.compareRange(range);return cmp==-1||cmp==0||cmp==1;};this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column;};this.isStart=function(row,column){return this.start.row==row&&this.start.column==column;};this.setStart=function(row,column){if(_typeof(row)=="object"){this.start.column=row.column;this.start.row=row.row;}else{this.start.row=row;this.start.column=column;}};this.setEnd=function(row,column){if(_typeof(row)=="object"){this.end.column=row.column;this.end.row=row.row;}else{this.end.row=row;this.end.column=column;}};this.inside=function(row,column){if(this.compare(row,column)==0){if(this.isEnd(row,column)||this.isStart(row,column)){return false;}else{return true;}}return false;};this.insideStart=function(row,column){if(this.compare(row,column)==0){if(this.isEnd(row,column)){return false;}else{return true;}}return false;};this.insideEnd=function(row,column){if(this.compare(row,column)==0){if(this.isStart(row,column)){return false;}else{return true;}}return false;};this.compare=function(row,column){if(!this.isMultiLine()){if(row===this.start.row){return column<this.start.column?-1:column>this.end.column?1:0;}}if(row<this.start.row)return-1;if(row>this.end.row)return 1;if(this.start.row===row)return column>=this.start.column?0:-1;if(this.end.row===row)return column<=this.end.column?0:1;return 0;};this.compareStart=function(row,column){if(this.start.row==row&&this.start.column==column){return-1;}else{return this.compare(row,column);}};this.compareEnd=function(row,column){if(this.end.row==row&&this.end.column==column){return 1;}else{return this.compare(row,column);}};this.compareInside=function(row,column){if(this.end.row==row&&this.end.column==column){return 1;}else if(this.start.row==row&&this.start.column==column){return-1;}else{return this.compare(row,column);}};this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(this.end.row<firstRow)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(this.start.row<firstRow)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end);};this.extend=function(row,column){var cmp=this.compare(row,column);if(cmp==0)return this;else if(cmp==-1)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end);};this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column;};this.isMultiLine=function(){return this.start.row!==this.end.row;};this.clone=function(){return Range.fromPoints(this.start,this.end);};this.collapseRows=function(){if(this.end.column==0)return new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0);else return new Range(this.start.row,0,this.end.row,0);};this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start);var screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column);};this.moveBy=function(row,column){this.start.row+=row;this.start.column+=column;this.end.row+=row;this.end.column+=column;};}).call(Range.prototype);Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column);};Range.comparePoints=comparePoints;Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column;};exports.Range=Range;});ace.define("ace/lib/lang",["require","exports","module"],function(require,exports,module){"use strict";exports.last=function(a){return a[a.length-1];};exports.stringReverse=function(string){return string.split("").reverse().join("");};exports.stringRepeat=function(string,count){var result='';while(count>0){if(count&1)result+=string;if(count>>=1)string+=string;}return result;};var trimBeginRegexp=/^\s\s*/;var trimEndRegexp=/\s\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,'');};exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,'');};exports.copyObject=function(obj){var copy={};for(var key in obj){copy[key]=obj[key];}return copy;};exports.copyArray=function(array){var copy=[];for(var i=0,l=array.length;i<l;i++){if(array[i]&&_typeof(array[i])=="object")copy[i]=this.copyObject(array[i]);else copy[i]=array[i];}return copy;};exports.deepCopy=function deepCopy(obj){if(_typeof(obj)!=="object"||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;key<obj.length;key++){copy[key]=deepCopy(obj[key]);}return copy;}if(Object.prototype.toString.call(obj)!=="[object Object]")return obj;copy={};for(var key in obj){copy[key]=deepCopy(obj[key]);}return copy;};exports.arrayToMap=function(arr){var map={};for(var i=0;i<arr.length;i++){map[arr[i]]=1;}return map;};exports.createMap=function(props){var map=Object.create(null);for(var i in props){map[i]=props[i];}return map;};exports.arrayRemove=function(array,value){for(var i=0;i<=array.length;i++){if(value===array[i]){array.splice(i,1);}}};exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\]\/\\])/g,'\\$1');};exports.escapeHTML=function(str){return(""+str).replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;");};exports.getMatchOffsets=function(string,regExp){var matches=[];string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length});});return matches;};exports.deferredCall=function(fcn){var timer=null;var callback=function callback(){timer=null;fcn();};var deferred=function deferred(timeout){deferred.cancel();timer=setTimeout(callback,timeout||0);return deferred;};deferred.schedule=deferred;deferred.call=function(){this.cancel();fcn();return deferred;};deferred.cancel=function(){clearTimeout(timer);timer=null;return deferred;};deferred.isPending=function(){return timer;};return deferred;};exports.delayedCall=function(fcn,defaultTimeout){var timer=null;var callback=function callback(){timer=null;fcn();};var _self=function _self(timeout){if(timer==null)timer=setTimeout(callback,timeout||defaultTimeout);};_self.delay=function(timeout){timer&&clearTimeout(timer);timer=setTimeout(callback,timeout||defaultTimeout);};_self.schedule=_self;_self.call=function(){this.cancel();fcn();};_self.cancel=function(){timer&&clearTimeout(timer);timer=null;};_self.isPending=function(){return timer;};return _self;};});ace.define("ace/clipboard",["require","exports","module"],function(require,exports,module){"use strict";var $cancelT;module.exports={lineMode:false,pasteCancelled:function pasteCancelled(){if($cancelT&&$cancelT>Date.now()-50)return true;return $cancelT=false;},cancel:function cancel(){$cancelT=Date.now();}};});ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],function(require,exports,module){"use strict";var event=require("../lib/event");var useragent=require("../lib/useragent");var dom=require("../lib/dom");var lang=require("../lib/lang");var clipboard=require("../clipboard");var BROKEN_SETDATA=useragent.isChrome<18;var USE_IE_MIME_TYPE=useragent.isIE;var HAS_FOCUS_ARGS=useragent.isChrome>63;var MAX_LINE_LENGTH=400;var KEYS=require("../lib/keys");var MODS=KEYS.KEY_MODS;var isIOS=useragent.isIOS;var valueResetRegex=isIOS?/\s/:/\n/;var isMobile=useragent.isMobile;var TextInput=function TextInput(parentNode,host){var text=dom.createElement("textarea");text.className="ace_text-input";text.setAttribute("wrap","off");text.setAttribute("autocorrect","off");text.setAttribute("autocapitalize","off");text.setAttribute("spellcheck",false);text.style.opacity="0";parentNode.insertBefore(text,parentNode.firstChild);var copied=false;var pasted=false;var inComposition=false;var sendingText=false;var tempStyle='';if(!isMobile)text.style.fontSize="1px";var commandMode=false;var ignoreFocusEvents=false;var lastValue="";var lastSelectionStart=0;var lastSelectionEnd=0;var lastRestoreEnd=0;try{var isFocused=document.activeElement===text;}catch(e){}event.addListener(text,"blur",function(e){if(ignoreFocusEvents)return;host.onBlur(e);isFocused=false;},host);event.addListener(text,"focus",function(e){if(ignoreFocusEvents)return;isFocused=true;if(useragent.isEdge){try{if(!document.hasFocus())return;}catch(e){}}host.onFocus(e);if(useragent.isEdge)setTimeout(resetSelection);else resetSelection();},host);this.$focusScroll=false;this.focus=function(){if(tempStyle||HAS_FOCUS_ARGS||this.$focusScroll=="browser")return text.focus({preventScroll:true});var top=text.style.top;text.style.position="fixed";text.style.top="0px";try{var isTransformed=text.getBoundingClientRect().top!=0;}catch(e){return;}var ancestors=[];if(isTransformed){var t=text.parentElement;while(t&&t.nodeType==1){ancestors.push(t);t.setAttribute("ace_nocontext",true);if(!t.parentElement&&t.getRootNode)t=t.getRootNode().host;else t=t.parentElement;}}text.focus({preventScroll:true});if(isTransformed){ancestors.forEach(function(p){p.removeAttribute("ace_nocontext");});}setTimeout(function(){text.style.position="";if(text.style.top=="0px")text.style.top=top;},0);};this.blur=function(){text.blur();};this.isFocused=function(){return isFocused;};host.on("beforeEndOperation",function(){var curOp=host.curOp;var commandName=curOp&&curOp.command&&curOp.command.name;if(commandName=="insertstring")return;var isUserAction=commandName&&(curOp.docChanged||curOp.selectionChanged);if(inComposition&&isUserAction){lastValue=text.value="";onCompositionEnd();}resetSelection();});var resetSelection=isIOS?function(value){if(!isFocused||copied&&!value||sendingText)return;if(!value)value="";var newValue="\n ab"+value+"cde fg\n";if(newValue!=text.value)text.value=lastValue=newValue;var selectionStart=4;var selectionEnd=4+(value.length||(host.selection.isEmpty()?0:1));if(lastSelectionStart!=selectionStart||lastSelectionEnd!=selectionEnd){text.setSelectionRange(selectionStart,selectionEnd);}lastSelectionStart=selectionStart;lastSelectionEnd=selectionEnd;}:function(){if(inComposition||sendingText)return;if(!isFocused&&!afterContextMenu)return;inComposition=true;var selectionStart=0;var selectionEnd=0;var line="";if(host.session){var selection=host.selection;var range=selection.getRange();var row=selection.cursor.row;selectionStart=range.start.column;selectionEnd=range.end.column;line=host.session.getLine(row);if(range.start.row!=row){var prevLine=host.session.getLine(row-1);selectionStart=range.start.row<row-1?0:selectionStart;selectionEnd+=prevLine.length+1;line=prevLine+"\n"+line;}else if(range.end.row!=row){var nextLine=host.session.getLine(row+1);selectionEnd=range.end.row>row+1?nextLine.length:selectionEnd;selectionEnd+=line.length+1;line=line+"\n"+nextLine;}else if(isMobile&&row>0){line="\n"+line;selectionEnd+=1;selectionStart+=1;}if(line.length>MAX_LINE_LENGTH){if(selectionStart<MAX_LINE_LENGTH&&selectionEnd<MAX_LINE_LENGTH){line=line.slice(0,MAX_LINE_LENGTH);}else{line="\n";if(selectionStart==selectionEnd){selectionStart=selectionEnd=0;}else{selectionStart=0;selectionEnd=1;}}}}var newValue=line+"\n\n";if(newValue!=lastValue){text.value=lastValue=newValue;lastSelectionStart=lastSelectionEnd=newValue.length;}if(afterContextMenu){lastSelectionStart=text.selectionStart;lastSelectionEnd=text.selectionEnd;}if(lastSelectionEnd!=selectionEnd||lastSelectionStart!=selectionStart||text.selectionEnd!=lastSelectionEnd// on ie edge selectionEnd changes silently after the initialization
){try{text.setSelectionRange(selectionStart,selectionEnd);lastSelectionStart=selectionStart;lastSelectionEnd=selectionEnd;}catch(e){}}inComposition=false;};this.resetSelection=resetSelection;if(isFocused)host.onFocus();var isAllSelected=function isAllSelected(text){return text.selectionStart===0&&text.selectionEnd>=lastValue.length&&text.value===lastValue&&lastValue&&text.selectionEnd!==lastSelectionEnd;};var onSelect=function onSelect(e){if(inComposition)return;if(copied){copied=false;}else if(isAllSelected(text)){host.selectAll();resetSelection();}else if(isMobile&&text.selectionStart!=lastSelectionStart){resetSelection();}};var inputHandler=null;this.setInputHandler=function(cb){inputHandler=cb;};this.getInputHandler=function(){return inputHandler;};var afterContextMenu=false;var sendText=function sendText(value,fromInput){if(afterContextMenu)afterContextMenu=false;if(pasted){resetSelection();if(value)host.onPaste(value);pasted=false;return"";}else{var selectionStart=text.selectionStart;var selectionEnd=text.selectionEnd;var extendLeft=lastSelectionStart;var extendRight=lastValue.length-lastSelectionEnd;var inserted=value;var restoreStart=value.length-selectionStart;var restoreEnd=value.length-selectionEnd;var i=0;while(extendLeft>0&&lastValue[i]==value[i]){i++;extendLeft--;}inserted=inserted.slice(i);i=1;while(extendRight>0&&lastValue.length-i>lastSelectionStart-1&&lastValue[lastValue.length-i]==value[value.length-i]){i++;extendRight--;}restoreStart-=i-1;restoreEnd-=i-1;var endIndex=inserted.length-i+1;if(endIndex<0){extendLeft=-endIndex;endIndex=0;}inserted=inserted.slice(0,endIndex);if(!fromInput&&!inserted&&!restoreStart&&!extendLeft&&!extendRight&&!restoreEnd)return"";sendingText=true;var shouldReset=false;if(useragent.isAndroid&&inserted==". "){inserted="  ";shouldReset=true;}if(inserted&&!extendLeft&&!extendRight&&!restoreStart&&!restoreEnd||commandMode){host.onTextInput(inserted);}else{host.onTextInput(inserted,{extendLeft:extendLeft,extendRight:extendRight,restoreStart:restoreStart,restoreEnd:restoreEnd});}sendingText=false;lastValue=value;lastSelectionStart=selectionStart;lastSelectionEnd=selectionEnd;lastRestoreEnd=restoreEnd;return shouldReset?"\n":inserted;}};var onInput=function onInput(e){if(inComposition)return onCompositionUpdate();if(e&&e.inputType){if(e.inputType=="historyUndo")return host.execCommand("undo");if(e.inputType=="historyRedo")return host.execCommand("redo");}var data=text.value;var inserted=sendText(data,true);if(data.length>MAX_LINE_LENGTH+100||valueResetRegex.test(inserted)||isMobile&&lastSelectionStart<1&&lastSelectionStart==lastSelectionEnd){resetSelection();}};var handleClipboardData=function handleClipboardData(e,data,forceIEMime){var clipboardData=e.clipboardData||window.clipboardData;if(!clipboardData||BROKEN_SETDATA)return;var mime=USE_IE_MIME_TYPE||forceIEMime?"Text":"text/plain";try{if(data){return clipboardData.setData(mime,data)!==false;}else{return clipboardData.getData(mime);}}catch(e){if(!forceIEMime)return handleClipboardData(e,data,true);}};var doCopy=function doCopy(e,isCut){var data=host.getCopyText();if(!data)return event.preventDefault(e);if(handleClipboardData(e,data)){if(isIOS){resetSelection(data);copied=data;setTimeout(function(){copied=false;},10);}isCut?host.onCut():host.onCopy();event.preventDefault(e);}else{copied=true;text.value=data;text.select();setTimeout(function(){copied=false;resetSelection();isCut?host.onCut():host.onCopy();});}};var onCut=function onCut(e){doCopy(e,true);};var onCopy=function onCopy(e){doCopy(e,false);};var onPaste=function onPaste(e){var data=handleClipboardData(e);if(clipboard.pasteCancelled())return;if(typeof data=="string"){if(data)host.onPaste(data,e);if(useragent.isIE)setTimeout(resetSelection);event.preventDefault(e);}else{text.value="";pasted=true;}};event.addCommandKeyListener(text,host.onCommandKey.bind(host),host);event.addListener(text,"select",onSelect,host);event.addListener(text,"input",onInput,host);event.addListener(text,"cut",onCut,host);event.addListener(text,"copy",onCopy,host);event.addListener(text,"paste",onPaste,host);if(!('oncut'in text)||!('oncopy'in text)||!('onpaste'in text)){event.addListener(parentNode,"keydown",function(e){if(useragent.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:onCopy(e);break;case 86:onPaste(e);break;case 88:onCut(e);break;}},host);}var onCompositionStart=function onCompositionStart(e){if(inComposition||!host.onCompositionStart||host.$readOnly)return;inComposition={};if(commandMode)return;if(e.data)inComposition.useTextareaForIME=false;setTimeout(onCompositionUpdate,0);host._signal("compositionStart");host.on("mousedown",cancelComposition);var range=host.getSelectionRange();range.end.row=range.start.row;range.end.column=range.start.column;inComposition.markerRange=range;inComposition.selectionStart=lastSelectionStart;host.onCompositionStart(inComposition);if(inComposition.useTextareaForIME){lastValue=text.value="";lastSelectionStart=0;lastSelectionEnd=0;}else{if(text.msGetInputContext)inComposition.context=text.msGetInputContext();if(text.getInputContext)inComposition.context=text.getInputContext();}};var onCompositionUpdate=function onCompositionUpdate(){if(!inComposition||!host.onCompositionUpdate||host.$readOnly)return;if(commandMode)return cancelComposition();if(inComposition.useTextareaForIME){host.onCompositionUpdate(text.value);}else{var data=text.value;sendText(data);if(inComposition.markerRange){if(inComposition.context){inComposition.markerRange.start.column=inComposition.selectionStart=inComposition.context.compositionStartOffset;}inComposition.markerRange.end.column=inComposition.markerRange.start.column+lastSelectionEnd-inComposition.selectionStart+lastRestoreEnd;}}};var onCompositionEnd=function onCompositionEnd(e){if(!host.onCompositionEnd||host.$readOnly)return;inComposition=false;host.onCompositionEnd();host.off("mousedown",cancelComposition);if(e)onInput();};function cancelComposition(){ignoreFocusEvents=true;text.blur();text.focus();ignoreFocusEvents=false;}var syncComposition=lang.delayedCall(onCompositionUpdate,50).schedule.bind(null,null);function onKeyup(e){if(e.keyCode==27&&text.value.length<text.selectionStart){if(!inComposition)lastValue=text.value;lastSelectionStart=lastSelectionEnd=-1;resetSelection();}syncComposition();}event.addListener(text,"compositionstart",onCompositionStart,host);event.addListener(text,"compositionupdate",onCompositionUpdate,host);event.addListener(text,"keyup",onKeyup,host);event.addListener(text,"keydown",syncComposition,host);event.addListener(text,"compositionend",onCompositionEnd,host);this.getElement=function(){return text;};this.setCommandMode=function(value){commandMode=value;text.readOnly=false;};this.setReadOnly=function(readOnly){if(!commandMode)text.readOnly=readOnly;};this.setCopyWithEmptySelection=function(value){};this.onContextMenu=function(e){afterContextMenu=true;resetSelection();host._emit("nativecontextmenu",{target:host,domEvent:e});this.moveToMouse(e,true);};this.moveToMouse=function(e,bringToFront){if(!tempStyle)tempStyle=text.style.cssText;text.style.cssText=(bringToFront?"z-index:100000;":"")+(useragent.isIE?"opacity:0.1;":"")+"text-indent: -"+(lastSelectionStart+lastSelectionEnd)*host.renderer.characterWidth*0.5+"px;";var rect=host.container.getBoundingClientRect();var style=dom.computedStyle(host.container);var top=rect.top+(parseInt(style.borderTopWidth)||0);var left=rect.left+(parseInt(rect.borderLeftWidth)||0);var maxTop=rect.bottom-top-text.clientHeight-2;var move=function move(e){dom.translate(text,e.clientX-left-2,Math.min(e.clientY-top-2,maxTop));};move(e);if(e.type!="mousedown")return;host.renderer.$isMousePressed=true;clearTimeout(closeTimeout);if(useragent.isWin)event.capture(host.container,move,onContextMenuClose);};this.onContextMenuClose=onContextMenuClose;var closeTimeout;function onContextMenuClose(){clearTimeout(closeTimeout);closeTimeout=setTimeout(function(){if(tempStyle){text.style.cssText=tempStyle;tempStyle='';}host.renderer.$isMousePressed=false;if(host.renderer.$keepTextAreaAtCursor)host.renderer.$moveTextAreaToCursor();},0);}var onContextMenu=function onContextMenu(e){host.textInput.onContextMenu(e);onContextMenuClose();};event.addListener(text,"mouseup",onContextMenu,host);event.addListener(text,"mousedown",function(e){e.preventDefault();onContextMenuClose();},host);event.addListener(host.renderer.scroller,"contextmenu",onContextMenu,host);event.addListener(text,"contextmenu",onContextMenu,host);if(isIOS)addIosSelectionHandler(parentNode,host,text);function addIosSelectionHandler(parentNode,host,text){var typingResetTimeout=null;var typing=false;text.addEventListener("keydown",function(e){if(typingResetTimeout)clearTimeout(typingResetTimeout);typing=true;},true);text.addEventListener("keyup",function(e){typingResetTimeout=setTimeout(function(){typing=false;},100);},true);var detectArrowKeys=function detectArrowKeys(e){if(document.activeElement!==text)return;if(typing||inComposition||host.$mouseHandler.isMousePressed)return;if(copied){return;}var selectionStart=text.selectionStart;var selectionEnd=text.selectionEnd;var key=null;var modifier=0;if(selectionStart==0){key=KEYS.up;}else if(selectionStart==1){key=KEYS.home;}else if(selectionEnd>lastSelectionEnd&&lastValue[selectionEnd]=="\n"){key=KEYS.end;}else if(selectionStart<lastSelectionStart&&lastValue[selectionStart-1]==" "){key=KEYS.left;modifier=MODS.option;}else if(selectionStart<lastSelectionStart||selectionStart==lastSelectionStart&&lastSelectionEnd!=lastSelectionStart&&selectionStart==selectionEnd){key=KEYS.left;}else if(selectionEnd>lastSelectionEnd&&lastValue.slice(0,selectionEnd).split("\n").length>2){key=KEYS.down;}else if(selectionEnd>lastSelectionEnd&&lastValue[selectionEnd-1]==" "){key=KEYS.right;modifier=MODS.option;}else if(selectionEnd>lastSelectionEnd||selectionEnd==lastSelectionEnd&&lastSelectionEnd!=lastSelectionStart&&selectionStart==selectionEnd){key=KEYS.right;}if(selectionStart!==selectionEnd)modifier|=MODS.shift;if(key){var result=host.onCommandKey({},modifier,key);if(!result&&host.commands){key=KEYS.keyCodeToString(key);var command=host.commands.findKeyCommand(modifier,key);if(command)host.execCommand(command);}lastSelectionStart=selectionStart;lastSelectionEnd=selectionEnd;resetSelection("");}};document.addEventListener("selectionchange",detectArrowKeys);host.on("destroy",function(){document.removeEventListener("selectionchange",detectArrowKeys);});}};exports.TextInput=TextInput;exports.$setUserAgentForTests=function(_isMobile,_isIOS){isMobile=_isMobile;isIOS=_isIOS;};});ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(require,exports,module){"use strict";var useragent=require("../lib/useragent");var DRAG_OFFSET=0;// pixels
var SCROLL_COOLDOWN_T=550;// milliseconds
function DefaultHandlers(mouseHandler){mouseHandler.$clickSelection=null;var editor=mouseHandler.editor;editor.setDefaultHandler("mousedown",this.onMouseDown.bind(mouseHandler));editor.setDefaultHandler("dblclick",this.onDoubleClick.bind(mouseHandler));editor.setDefaultHandler("tripleclick",this.onTripleClick.bind(mouseHandler));editor.setDefaultHandler("quadclick",this.onQuadClick.bind(mouseHandler));editor.setDefaultHandler("mousewheel",this.onMouseWheel.bind(mouseHandler));var exports=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];exports.forEach(function(x){mouseHandler[x]=this[x];},this);mouseHandler.selectByLines=this.extendSelectionBy.bind(mouseHandler,"getLineRange");mouseHandler.selectByWords=this.extendSelectionBy.bind(mouseHandler,"getWordRange");}(function(){this.onMouseDown=function(ev){var inSelection=ev.inSelection();var pos=ev.getDocumentPosition();this.mousedownEvent=ev;var editor=this.editor;var button=ev.getButton();if(button!==0){var selectionRange=editor.getSelectionRange();var selectionEmpty=selectionRange.isEmpty();if(selectionEmpty||button==1)editor.selection.moveToPosition(pos);if(button==2){editor.textInput.onContextMenu(ev.domEvent);if(!useragent.isMozilla)ev.preventDefault();}return;}this.mousedownEvent.time=Date.now();if(inSelection&&!editor.isFocused()){editor.focus();if(this.$focusTimeout&&!this.$clickSelection&&!editor.inMultiSelectMode){this.setState("focusWait");this.captureMouse(ev);return;}}this.captureMouse(ev);this.startSelect(pos,ev.domEvent._clicks>1);return ev.preventDefault();};this.startSelect=function(pos,waitForClickSelection){pos=pos||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var editor=this.editor;if(!this.mousedownEvent)return;if(this.mousedownEvent.getShiftKey())editor.selection.selectToPosition(pos);else if(!waitForClickSelection)editor.selection.moveToPosition(pos);if(!waitForClickSelection)this.select();if(editor.renderer.scroller.setCapture){editor.renderer.scroller.setCapture();}editor.setStyle("ace_selecting");this.setState("select");};this.select=function(){var anchor,editor=this.editor;var cursor=editor.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var cmp=this.$clickSelection.comparePoint(cursor);if(cmp==-1){anchor=this.$clickSelection.end;}else if(cmp==1){anchor=this.$clickSelection.start;}else{var orientedRange=calcRangeOrientation(this.$clickSelection,cursor);cursor=orientedRange.cursor;anchor=orientedRange.anchor;}editor.selection.setSelectionAnchor(anchor.row,anchor.column);}editor.selection.selectToPosition(cursor);editor.renderer.scrollCursorIntoView();};this.extendSelectionBy=function(unitName){var anchor,editor=this.editor;var cursor=editor.renderer.screenToTextCoordinates(this.x,this.y);var range=editor.selection[unitName](cursor.row,cursor.column);if(this.$clickSelection){var cmpStart=this.$clickSelection.comparePoint(range.start);var cmpEnd=this.$clickSelection.comparePoint(range.end);if(cmpStart==-1&&cmpEnd<=0){anchor=this.$clickSelection.end;if(range.end.row!=cursor.row||range.end.column!=cursor.column)cursor=range.start;}else if(cmpEnd==1&&cmpStart>=0){anchor=this.$clickSelection.start;if(range.start.row!=cursor.row||range.start.column!=cursor.column)cursor=range.end;}else if(cmpStart==-1&&cmpEnd==1){cursor=range.end;anchor=range.start;}else{var orientedRange=calcRangeOrientation(this.$clickSelection,cursor);cursor=orientedRange.cursor;anchor=orientedRange.anchor;}editor.selection.setSelectionAnchor(anchor.row,anchor.column);}editor.selection.selectToPosition(cursor);editor.renderer.scrollCursorIntoView();};this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null;this.editor.unsetStyle("ace_selecting");if(this.editor.renderer.scroller.releaseCapture){this.editor.renderer.scroller.releaseCapture();}};this.focusWait=function(){var distance=calcDistance(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);var time=Date.now();if(distance>DRAG_OFFSET||time-this.mousedownEvent.time>this.$focusTimeout)this.startSelect(this.mousedownEvent.getDocumentPosition());};this.onDoubleClick=function(ev){var pos=ev.getDocumentPosition();var editor=this.editor;var session=editor.session;var range=session.getBracketRange(pos);if(range){if(range.isEmpty()){range.start.column--;range.end.column++;}this.setState("select");}else{range=editor.selection.getWordRange(pos.row,pos.column);this.setState("selectByWords");}this.$clickSelection=range;this.select();};this.onTripleClick=function(ev){var pos=ev.getDocumentPosition();var editor=this.editor;this.setState("selectByLines");var range=editor.getSelectionRange();if(range.isMultiLine()&&range.contains(pos.row,pos.column)){this.$clickSelection=editor.selection.getLineRange(range.start.row);this.$clickSelection.end=editor.selection.getLineRange(range.end.row).end;}else{this.$clickSelection=editor.selection.getLineRange(pos.row);}this.select();};this.onQuadClick=function(ev){var editor=this.editor;editor.selectAll();this.$clickSelection=editor.getSelectionRange();this.setState("selectAll");};this.onMouseWheel=function(ev){if(ev.getAccelKey())return;if(ev.getShiftKey()&&ev.wheelY&&!ev.wheelX){ev.wheelX=ev.wheelY;ev.wheelY=0;}var editor=this.editor;if(!this.$lastScroll)this.$lastScroll={t:0,vx:0,vy:0,allowed:0};var prevScroll=this.$lastScroll;var t=ev.domEvent.timeStamp;var dt=t-prevScroll.t;var vx=dt?ev.wheelX/dt:prevScroll.vx;var vy=dt?ev.wheelY/dt:prevScroll.vy;if(dt<SCROLL_COOLDOWN_T){vx=(vx+prevScroll.vx)/2;vy=(vy+prevScroll.vy)/2;}var direction=Math.abs(vx/vy);var canScroll=false;if(direction>=1&&editor.renderer.isScrollableBy(ev.wheelX*ev.speed,0))canScroll=true;if(direction<=1&&editor.renderer.isScrollableBy(0,ev.wheelY*ev.speed))canScroll=true;if(canScroll){prevScroll.allowed=t;}else if(t-prevScroll.allowed<SCROLL_COOLDOWN_T){var isSlower=Math.abs(vx)<=1.5*Math.abs(prevScroll.vx)&&Math.abs(vy)<=1.5*Math.abs(prevScroll.vy);if(isSlower){canScroll=true;prevScroll.allowed=t;}else{prevScroll.allowed=0;}}prevScroll.t=t;prevScroll.vx=vx;prevScroll.vy=vy;if(canScroll){editor.renderer.scrollBy(ev.wheelX*ev.speed,ev.wheelY*ev.speed);return ev.stop();}};}).call(DefaultHandlers.prototype);exports.DefaultHandlers=DefaultHandlers;function calcDistance(ax,ay,bx,by){return Math.sqrt(Math.pow(bx-ax,2)+Math.pow(by-ay,2));}function calcRangeOrientation(range,cursor){if(range.start.row==range.end.row)var cmp=2*cursor.column-range.start.column-range.end.column;else if(range.start.row==range.end.row-1&&!range.start.column&&!range.end.column)var cmp=cursor.column-4;else var cmp=2*cursor.row-range.start.row-range.end.row;if(cmp<0)return{cursor:range.start,anchor:range.end};else return{cursor:range.end,anchor:range.start};}});ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var dom=require("./lib/dom");function Tooltip(parentNode){this.isOpen=false;this.$element=null;this.$parentNode=parentNode;}(function(){this.$init=function(){this.$element=dom.createElement("div");this.$element.className="ace_tooltip";this.$element.style.display="none";this.$parentNode.appendChild(this.$element);return this.$element;};this.getElement=function(){return this.$element||this.$init();};this.setText=function(text){this.getElement().textContent=text;};this.setHtml=function(html){this.getElement().innerHTML=html;};this.setPosition=function(x,y){this.getElement().style.left=x+"px";this.getElement().style.top=y+"px";};this.setClassName=function(className){dom.addCssClass(this.getElement(),className);};this.show=function(text,x,y){if(text!=null)this.setText(text);if(x!=null&&y!=null)this.setPosition(x,y);if(!this.isOpen){this.getElement().style.display="block";this.isOpen=true;}};this.hide=function(){if(this.isOpen){this.getElement().style.display="none";this.isOpen=false;}};this.getHeight=function(){return this.getElement().offsetHeight;};this.getWidth=function(){return this.getElement().offsetWidth;};this.destroy=function(){this.isOpen=false;if(this.$element&&this.$element.parentNode){this.$element.parentNode.removeChild(this.$element);}};}).call(Tooltip.prototype);exports.Tooltip=Tooltip;});ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(require,exports,module){"use strict";var dom=require("../lib/dom");var oop=require("../lib/oop");var event=require("../lib/event");var Tooltip=require("../tooltip").Tooltip;function GutterHandler(mouseHandler){var editor=mouseHandler.editor;var gutter=editor.renderer.$gutterLayer;var tooltip=new GutterTooltip(editor.container);mouseHandler.editor.setDefaultHandler("guttermousedown",function(e){if(!editor.isFocused()||e.getButton()!=0)return;var gutterRegion=gutter.getRegion(e);if(gutterRegion=="foldWidgets")return;var row=e.getDocumentPosition().row;var selection=editor.session.selection;if(e.getShiftKey())selection.selectTo(row,0);else{if(e.domEvent.detail==2){editor.selectAll();return e.preventDefault();}mouseHandler.$clickSelection=editor.selection.getLineRange(row);}mouseHandler.setState("selectByLines");mouseHandler.captureMouse(e);return e.preventDefault();});var tooltipTimeout,mouseEvent,tooltipAnnotation;function showTooltip(){var row=mouseEvent.getDocumentPosition().row;var annotation=gutter.$annotations[row];if(!annotation)return hideTooltip();var maxRow=editor.session.getLength();if(row==maxRow){var screenRow=editor.renderer.pixelToScreenCoordinates(0,mouseEvent.y).row;var pos=mouseEvent.$pos;if(screenRow>editor.session.documentToScreenRow(pos.row,pos.column))return hideTooltip();}if(tooltipAnnotation==annotation)return;tooltipAnnotation=annotation.text.join("<br/>");tooltip.setHtml(tooltipAnnotation);tooltip.show();editor._signal("showGutterTooltip",tooltip);editor.on("mousewheel",hideTooltip);if(mouseHandler.$tooltipFollowsMouse){moveTooltip(mouseEvent);}else{var gutterElement=mouseEvent.domEvent.target;var rect=gutterElement.getBoundingClientRect();var style=tooltip.getElement().style;style.left=rect.right+"px";style.top=rect.bottom+"px";}}function hideTooltip(){if(tooltipTimeout)tooltipTimeout=clearTimeout(tooltipTimeout);if(tooltipAnnotation){tooltip.hide();tooltipAnnotation=null;editor._signal("hideGutterTooltip",tooltip);editor.off("mousewheel",hideTooltip);}}function moveTooltip(e){tooltip.setPosition(e.x,e.y);}mouseHandler.editor.setDefaultHandler("guttermousemove",function(e){var target=e.domEvent.target||e.domEvent.srcElement;if(dom.hasCssClass(target,"ace_fold-widget"))return hideTooltip();if(tooltipAnnotation&&mouseHandler.$tooltipFollowsMouse)moveTooltip(e);mouseEvent=e;if(tooltipTimeout)return;tooltipTimeout=setTimeout(function(){tooltipTimeout=null;if(mouseEvent&&!mouseHandler.isMousePressed)showTooltip();else hideTooltip();},50);});event.addListener(editor.renderer.$gutter,"mouseout",function(e){mouseEvent=null;if(!tooltipAnnotation||tooltipTimeout)return;tooltipTimeout=setTimeout(function(){tooltipTimeout=null;hideTooltip();},50);},editor);editor.on("changeSession",hideTooltip);}function GutterTooltip(parentNode){Tooltip.call(this,parentNode);}oop.inherits(GutterTooltip,Tooltip);(function(){this.setPosition=function(x,y){var windowWidth=window.innerWidth||document.documentElement.clientWidth;var windowHeight=window.innerHeight||document.documentElement.clientHeight;var width=this.getWidth();var height=this.getHeight();x+=15;y+=15;if(x+width>windowWidth){x-=x+width-windowWidth;}if(y+height>windowHeight){y-=20+height;}Tooltip.prototype.setPosition.call(this,x,y);};}).call(GutterTooltip.prototype);exports.GutterHandler=GutterHandler;});ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(require,exports,module){"use strict";var event=require("../lib/event");var useragent=require("../lib/useragent");var MouseEvent=exports.MouseEvent=function(domEvent,editor){this.domEvent=domEvent;this.editor=editor;this.x=this.clientX=domEvent.clientX;this.y=this.clientY=domEvent.clientY;this.$pos=null;this.$inSelection=null;this.propagationStopped=false;this.defaultPrevented=false;};(function(){this.stopPropagation=function(){event.stopPropagation(this.domEvent);this.propagationStopped=true;};this.preventDefault=function(){event.preventDefault(this.domEvent);this.defaultPrevented=true;};this.stop=function(){this.stopPropagation();this.preventDefault();};this.getDocumentPosition=function(){if(this.$pos)return this.$pos;this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY);return this.$pos;};this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var editor=this.editor;var selectionRange=editor.getSelectionRange();if(selectionRange.isEmpty())this.$inSelection=false;else{var pos=this.getDocumentPosition();this.$inSelection=selectionRange.contains(pos.row,pos.column);}return this.$inSelection;};this.getButton=function(){return event.getButton(this.domEvent);};this.getShiftKey=function(){return this.domEvent.shiftKey;};this.getAccelKey=useragent.isMac?function(){return this.domEvent.metaKey;}:function(){return this.domEvent.ctrlKey;};}).call(MouseEvent.prototype);});ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(require,exports,module){"use strict";var dom=require("../lib/dom");var event=require("../lib/event");var useragent=require("../lib/useragent");var AUTOSCROLL_DELAY=200;var SCROLL_CURSOR_DELAY=200;var SCROLL_CURSOR_HYSTERESIS=5;function DragdropHandler(mouseHandler){var editor=mouseHandler.editor;var blankImage=dom.createElement("img");blankImage.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";if(useragent.isOpera)blankImage.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;";var exports=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];exports.forEach(function(x){mouseHandler[x]=this[x];},this);editor.on("mousedown",this.onMouseDown.bind(mouseHandler));var mouseTarget=editor.container;var dragSelectionMarker,x,y;var timerId,range;var dragCursor,counter=0;var dragOperation;var isInternal;var autoScrollStartTime;var cursorMovedTime;var cursorPointOnCaretMoved;this.onDragStart=function(e){if(this.cancelDrag||!mouseTarget.draggable){var self=this;setTimeout(function(){self.startSelect();self.captureMouse(e);},0);return e.preventDefault();}range=editor.getSelectionRange();var dataTransfer=e.dataTransfer;dataTransfer.effectAllowed=editor.getReadOnly()?"copy":"copyMove";if(useragent.isOpera){editor.container.appendChild(blankImage);blankImage.scrollTop=0;}dataTransfer.setDragImage&&dataTransfer.setDragImage(blankImage,0,0);if(useragent.isOpera){editor.container.removeChild(blankImage);}dataTransfer.clearData();dataTransfer.setData("Text",editor.session.getTextRange());isInternal=true;this.setState("drag");};this.onDragEnd=function(e){mouseTarget.draggable=false;isInternal=false;this.setState(null);if(!editor.getReadOnly()){var dropEffect=e.dataTransfer.dropEffect;if(!dragOperation&&dropEffect=="move")editor.session.remove(editor.getSelectionRange());editor.$resetCursorStyle();}this.editor.unsetStyle("ace_dragging");this.editor.renderer.setCursorStyle("");};this.onDragEnter=function(e){if(editor.getReadOnly()||!canAccept(e.dataTransfer))return;x=e.clientX;y=e.clientY;if(!dragSelectionMarker)addDragMarker();counter++;e.dataTransfer.dropEffect=dragOperation=getDropEffect(e);return event.preventDefault(e);};this.onDragOver=function(e){if(editor.getReadOnly()||!canAccept(e.dataTransfer))return;x=e.clientX;y=e.clientY;if(!dragSelectionMarker){addDragMarker();counter++;}if(onMouseMoveTimer!==null)onMouseMoveTimer=null;e.dataTransfer.dropEffect=dragOperation=getDropEffect(e);return event.preventDefault(e);};this.onDragLeave=function(e){counter--;if(counter<=0&&dragSelectionMarker){clearDragMarker();dragOperation=null;return event.preventDefault(e);}};this.onDrop=function(e){if(!dragCursor)return;var dataTransfer=e.dataTransfer;if(isInternal){switch(dragOperation){case"move":if(range.contains(dragCursor.row,dragCursor.column)){range={start:dragCursor,end:dragCursor};}else{range=editor.moveText(range,dragCursor);}break;case"copy":range=editor.moveText(range,dragCursor,true);break;}}else{var dropData=dataTransfer.getData('Text');range={start:dragCursor,end:editor.session.insert(dragCursor,dropData)};editor.focus();dragOperation=null;}clearDragMarker();return event.preventDefault(e);};event.addListener(mouseTarget,"dragstart",this.onDragStart.bind(mouseHandler),editor);event.addListener(mouseTarget,"dragend",this.onDragEnd.bind(mouseHandler),editor);event.addListener(mouseTarget,"dragenter",this.onDragEnter.bind(mouseHandler),editor);event.addListener(mouseTarget,"dragover",this.onDragOver.bind(mouseHandler),editor);event.addListener(mouseTarget,"dragleave",this.onDragLeave.bind(mouseHandler),editor);event.addListener(mouseTarget,"drop",this.onDrop.bind(mouseHandler),editor);function scrollCursorIntoView(cursor,prevCursor){var now=Date.now();var vMovement=!prevCursor||cursor.row!=prevCursor.row;var hMovement=!prevCursor||cursor.column!=prevCursor.column;if(!cursorMovedTime||vMovement||hMovement){editor.moveCursorToPosition(cursor);cursorMovedTime=now;cursorPointOnCaretMoved={x:x,y:y};}else{var distance=calcDistance(cursorPointOnCaretMoved.x,cursorPointOnCaretMoved.y,x,y);if(distance>SCROLL_CURSOR_HYSTERESIS){cursorMovedTime=null;}else if(now-cursorMovedTime>=SCROLL_CURSOR_DELAY){editor.renderer.scrollCursorIntoView();cursorMovedTime=null;}}}function autoScroll(cursor,prevCursor){var now=Date.now();var lineHeight=editor.renderer.layerConfig.lineHeight;var characterWidth=editor.renderer.layerConfig.characterWidth;var editorRect=editor.renderer.scroller.getBoundingClientRect();var offsets={x:{left:x-editorRect.left,right:editorRect.right-x},y:{top:y-editorRect.top,bottom:editorRect.bottom-y}};var nearestXOffset=Math.min(offsets.x.left,offsets.x.right);var nearestYOffset=Math.min(offsets.y.top,offsets.y.bottom);var scrollCursor={row:cursor.row,column:cursor.column};if(nearestXOffset/characterWidth<=2){scrollCursor.column+=offsets.x.left<offsets.x.right?-3:+2;}if(nearestYOffset/lineHeight<=1){scrollCursor.row+=offsets.y.top<offsets.y.bottom?-1:+1;}var vScroll=cursor.row!=scrollCursor.row;var hScroll=cursor.column!=scrollCursor.column;var vMovement=!prevCursor||cursor.row!=prevCursor.row;if(vScroll||hScroll&&!vMovement){if(!autoScrollStartTime)autoScrollStartTime=now;else if(now-autoScrollStartTime>=AUTOSCROLL_DELAY)editor.renderer.scrollCursorIntoView(scrollCursor);}else{autoScrollStartTime=null;}}function onDragInterval(){var prevCursor=dragCursor;dragCursor=editor.renderer.screenToTextCoordinates(x,y);scrollCursorIntoView(dragCursor,prevCursor);autoScroll(dragCursor,prevCursor);}function addDragMarker(){range=editor.selection.toOrientedRange();dragSelectionMarker=editor.session.addMarker(range,"ace_selection",editor.getSelectionStyle());editor.clearSelection();if(editor.isFocused())editor.renderer.$cursorLayer.setBlinking(false);clearInterval(timerId);onDragInterval();timerId=setInterval(onDragInterval,20);counter=0;event.addListener(document,"mousemove",onMouseMove);}function clearDragMarker(){clearInterval(timerId);editor.session.removeMarker(dragSelectionMarker);dragSelectionMarker=null;editor.selection.fromOrientedRange(range);if(editor.isFocused()&&!isInternal)editor.$resetCursorStyle();range=null;dragCursor=null;counter=0;autoScrollStartTime=null;cursorMovedTime=null;event.removeListener(document,"mousemove",onMouseMove);}var onMouseMoveTimer=null;function onMouseMove(){if(onMouseMoveTimer==null){onMouseMoveTimer=setTimeout(function(){if(onMouseMoveTimer!=null&&dragSelectionMarker)clearDragMarker();},20);}}function canAccept(dataTransfer){var types=dataTransfer.types;return!types||Array.prototype.some.call(types,function(type){return type=='text/plain'||type=='Text';});}function getDropEffect(e){var copyAllowed=['copy','copymove','all','uninitialized'];var moveAllowed=['move','copymove','linkmove','all','uninitialized'];var copyModifierState=useragent.isMac?e.altKey:e.ctrlKey;var effectAllowed="uninitialized";try{effectAllowed=e.dataTransfer.effectAllowed.toLowerCase();}catch(e){}var dropEffect="none";if(copyModifierState&&copyAllowed.indexOf(effectAllowed)>=0)dropEffect="copy";else if(moveAllowed.indexOf(effectAllowed)>=0)dropEffect="move";else if(copyAllowed.indexOf(effectAllowed)>=0)dropEffect="copy";return dropEffect;}}(function(){this.dragWait=function(){var interval=Date.now()-this.mousedownEvent.time;if(interval>this.editor.getDragDelay())this.startDrag();};this.dragWaitEnd=function(){var target=this.editor.container;target.draggable=false;this.startSelect(this.mousedownEvent.getDocumentPosition());this.selectEnd();};this.dragReadyEnd=function(e){this.editor.$resetCursorStyle();this.editor.unsetStyle("ace_dragging");this.editor.renderer.setCursorStyle("");this.dragWaitEnd();};this.startDrag=function(){this.cancelDrag=false;var editor=this.editor;var target=editor.container;target.draggable=true;editor.renderer.$cursorLayer.setBlinking(false);editor.setStyle("ace_dragging");var cursorStyle=useragent.isWin?"default":"move";editor.renderer.setCursorStyle(cursorStyle);this.setState("dragReady");};this.onMouseDrag=function(e){var target=this.editor.container;if(useragent.isIE&&this.state=="dragReady"){var distance=calcDistance(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);if(distance>3)target.dragDrop();}if(this.state==="dragWait"){var distance=calcDistance(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);if(distance>0){target.draggable=false;this.startSelect(this.mousedownEvent.getDocumentPosition());}}};this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var editor=this.editor;var inSelection=e.inSelection();var button=e.getButton();var clickCount=e.domEvent.detail||1;if(clickCount===1&&button===0&&inSelection){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var eventTarget=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in eventTarget)eventTarget.unselectable="on";if(editor.getDragDelay()){if(useragent.isWebKit){this.cancelDrag=true;var mouseTarget=editor.container;mouseTarget.draggable=true;}this.setState("dragWait");}else{this.startDrag();}this.captureMouse(e,this.onMouseDrag.bind(this));e.defaultPrevented=true;}};}).call(DragdropHandler.prototype);function calcDistance(ax,ay,bx,by){return Math.sqrt(Math.pow(bx-ax,2)+Math.pow(by-ay,2));}exports.DragdropHandler=DragdropHandler;});ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],function(require,exports,module){"use strict";var MouseEvent=require("./mouse_event").MouseEvent;var event=require("../lib/event");var dom=require("../lib/dom");exports.addTouchListeners=function(el,editor){var mode="scroll";var startX;var startY;var touchStartT;var lastT;var longTouchTimer;var animationTimer;var animationSteps=0;var pos;var clickCount=0;var vX=0;var vY=0;var pressed;var contextMenu;function createContextMenu(){var clipboard=window.navigator&&window.navigator.clipboard;var isOpen=false;var updateMenu=function updateMenu(){var selected=editor.getCopyText();var hasUndo=editor.session.getUndoManager().hasUndo();contextMenu.replaceChild(dom.buildDom(isOpen?["span",!selected&&["span",{"class":"ace_mobile-button",action:"selectall"},"Select All"],selected&&["span",{"class":"ace_mobile-button",action:"copy"},"Copy"],selected&&["span",{"class":"ace_mobile-button",action:"cut"},"Cut"],clipboard&&["span",{"class":"ace_mobile-button",action:"paste"},"Paste"],hasUndo&&["span",{"class":"ace_mobile-button",action:"undo"},"Undo"],["span",{"class":"ace_mobile-button",action:"find"},"Find"],["span",{"class":"ace_mobile-button",action:"openCommandPallete"},"Pallete"]]:["span"]),contextMenu.firstChild);};var handleClick=function handleClick(e){var action=e.target.getAttribute("action");if(action=="more"||!isOpen){isOpen=!isOpen;return updateMenu();}if(action=="paste"){clipboard.readText().then(function(text){editor.execCommand(action,text);});}else if(action){if(action=="cut"||action=="copy"){if(clipboard)clipboard.writeText(editor.getCopyText());else document.execCommand("copy");}editor.execCommand(action);}contextMenu.firstChild.style.display="none";isOpen=false;if(action!="openCommandPallete")editor.focus();};contextMenu=dom.buildDom(["div",{"class":"ace_mobile-menu",ontouchstart:function ontouchstart(e){mode="menu";e.stopPropagation();e.preventDefault();editor.textInput.focus();},ontouchend:function ontouchend(e){e.stopPropagation();e.preventDefault();handleClick(e);},onclick:handleClick},["span"],["span",{"class":"ace_mobile-button",action:"more"},"..."]],editor.container);}function showContextMenu(){if(!contextMenu)createContextMenu();var cursor=editor.selection.cursor;var pagePos=editor.renderer.textToScreenCoordinates(cursor.row,cursor.column);var leftOffset=editor.renderer.textToScreenCoordinates(0,0).pageX;var scrollLeft=editor.renderer.scrollLeft;var rect=editor.container.getBoundingClientRect();contextMenu.style.top=pagePos.pageY-rect.top-3+"px";if(pagePos.pageX-rect.left<rect.width-70){contextMenu.style.left="";contextMenu.style.right="10px";}else{contextMenu.style.right="";contextMenu.style.left=leftOffset+scrollLeft-rect.left+"px";}contextMenu.style.display="";contextMenu.firstChild.style.display="none";editor.on("input",hideContextMenu);}function hideContextMenu(e){if(contextMenu)contextMenu.style.display="none";editor.off("input",hideContextMenu);}function handleLongTap(){longTouchTimer=null;clearTimeout(longTouchTimer);var range=editor.selection.getRange();var inSelection=range.contains(pos.row,pos.column);if(range.isEmpty()||!inSelection){editor.selection.moveToPosition(pos);editor.selection.selectWord();}mode="wait";showContextMenu();}function switchToSelectionMode(){longTouchTimer=null;clearTimeout(longTouchTimer);editor.selection.moveToPosition(pos);var range=clickCount>=2?editor.selection.getLineRange(pos.row):editor.session.getBracketRange(pos);if(range&&!range.isEmpty()){editor.selection.setRange(range);}else{editor.selection.selectWord();}mode="wait";}event.addListener(el,"contextmenu",function(e){if(!pressed)return;var textarea=editor.textInput.getElement();textarea.focus();},editor);event.addListener(el,"touchstart",function(e){var touches=e.touches;if(longTouchTimer||touches.length>1){clearTimeout(longTouchTimer);longTouchTimer=null;touchStartT=-1;mode="zoom";return;}pressed=editor.$mouseHandler.isMousePressed=true;var h=editor.renderer.layerConfig.lineHeight;var w=editor.renderer.layerConfig.lineHeight;var t=e.timeStamp;lastT=t;var touchObj=touches[0];var x=touchObj.clientX;var y=touchObj.clientY;if(Math.abs(startX-x)+Math.abs(startY-y)>h)touchStartT=-1;startX=e.clientX=x;startY=e.clientY=y;vX=vY=0;var ev=new MouseEvent(e,editor);pos=ev.getDocumentPosition();if(t-touchStartT<500&&touches.length==1&&!animationSteps){clickCount++;e.preventDefault();e.button=0;switchToSelectionMode();}else{clickCount=0;var cursor=editor.selection.cursor;var anchor=editor.selection.isEmpty()?cursor:editor.selection.anchor;var cursorPos=editor.renderer.$cursorLayer.getPixelPosition(cursor,true);var anchorPos=editor.renderer.$cursorLayer.getPixelPosition(anchor,true);var rect=editor.renderer.scroller.getBoundingClientRect();var offsetTop=editor.renderer.layerConfig.offset;var offsetLeft=editor.renderer.scrollLeft;var weightedDistance=function weightedDistance(x,y){x=x/w;y=y/h-0.75;return x*x+y*y;};if(e.clientX<rect.left){mode="zoom";return;}var diff1=weightedDistance(e.clientX-rect.left-cursorPos.left+offsetLeft,e.clientY-rect.top-cursorPos.top+offsetTop);var diff2=weightedDistance(e.clientX-rect.left-anchorPos.left+offsetLeft,e.clientY-rect.top-anchorPos.top+offsetTop);if(diff1<3.5&&diff2<3.5)mode=diff1>diff2?"cursor":"anchor";if(diff2<3.5)mode="anchor";else if(diff1<3.5)mode="cursor";else mode="scroll";longTouchTimer=setTimeout(handleLongTap,450);}touchStartT=t;},editor);event.addListener(el,"touchend",function(e){pressed=editor.$mouseHandler.isMousePressed=false;if(animationTimer)clearInterval(animationTimer);if(mode=="zoom"){mode="";animationSteps=0;}else if(longTouchTimer){editor.selection.moveToPosition(pos);animationSteps=0;showContextMenu();}else if(mode=="scroll"){animate();hideContextMenu();}else{showContextMenu();}clearTimeout(longTouchTimer);longTouchTimer=null;},editor);event.addListener(el,"touchmove",function(e){if(longTouchTimer){clearTimeout(longTouchTimer);longTouchTimer=null;}var touches=e.touches;if(touches.length>1||mode=="zoom")return;var touchObj=touches[0];var wheelX=startX-touchObj.clientX;var wheelY=startY-touchObj.clientY;if(mode=="wait"){if(wheelX*wheelX+wheelY*wheelY>4)mode="cursor";else return e.preventDefault();}startX=touchObj.clientX;startY=touchObj.clientY;e.clientX=touchObj.clientX;e.clientY=touchObj.clientY;var t=e.timeStamp;var dt=t-lastT;lastT=t;if(mode=="scroll"){var mouseEvent=new MouseEvent(e,editor);mouseEvent.speed=1;mouseEvent.wheelX=wheelX;mouseEvent.wheelY=wheelY;if(10*Math.abs(wheelX)<Math.abs(wheelY))wheelX=0;if(10*Math.abs(wheelY)<Math.abs(wheelX))wheelY=0;if(dt!=0){vX=wheelX/dt;vY=wheelY/dt;}editor._emit("mousewheel",mouseEvent);if(!mouseEvent.propagationStopped){vX=vY=0;}}else{var ev=new MouseEvent(e,editor);var pos=ev.getDocumentPosition();if(mode=="cursor")editor.selection.moveCursorToPosition(pos);else if(mode=="anchor")editor.selection.setSelectionAnchor(pos.row,pos.column);editor.renderer.scrollCursorIntoView(pos);e.preventDefault();}},editor);function animate(){animationSteps+=60;animationTimer=setInterval(function(){if(animationSteps--<=0){clearInterval(animationTimer);animationTimer=null;}if(Math.abs(vX)<0.01)vX=0;if(Math.abs(vY)<0.01)vY=0;if(animationSteps<20)vX=0.9*vX;if(animationSteps<20)vY=0.9*vY;var oldScrollTop=editor.session.getScrollTop();editor.renderer.scrollBy(10*vX,10*vY);if(oldScrollTop==editor.session.getScrollTop())animationSteps=0;},10);}};});ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(require,exports,module){"use strict";var dom=require("./dom");exports.get=function(url,callback){var xhr=new XMLHttpRequest();xhr.open('GET',url,true);xhr.onreadystatechange=function(){if(xhr.readyState===4){callback(xhr.responseText);}};xhr.send(null);};exports.loadScript=function(path,callback){var head=dom.getDocumentHead();var s=document.createElement('script');s.src=path;head.appendChild(s);s.onload=s.onreadystatechange=function(_,isAbort){if(isAbort||!s.readyState||s.readyState=="loaded"||s.readyState=="complete"){s=s.onload=s.onreadystatechange=null;if(!isAbort)callback();}};};exports.qualifyURL=function(url){var a=document.createElement('a');a.href=url;return a.href;};});ace.define("ace/lib/event_emitter",["require","exports","module"],function(require,exports,module){"use strict";var EventEmitter={};var stopPropagation=function stopPropagation(){this.propagationStopped=true;};var preventDefault=function preventDefault(){this.defaultPrevented=true;};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={});this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[];var defaultHandler=this._defaultHandlers[eventName];if(!listeners.length&&!defaultHandler)return;if(_typeof(e)!="object"||!e)e={};if(!e.type)e.type=eventName;if(!e.stopPropagation)e.stopPropagation=stopPropagation;if(!e.preventDefault)e.preventDefault=preventDefault;listeners=listeners.slice();for(var i=0;i<listeners.length;i++){listeners[i](e,this);if(e.propagationStopped)break;}if(defaultHandler&&!e.defaultPrevented)return defaultHandler(e,this);};EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(!listeners)return;listeners=listeners.slice();for(var i=0;i<listeners.length;i++){listeners[i](e,this);}};EventEmitter.once=function(eventName,callback){var _self=this;this.on(eventName,function newCallback(){_self.off(eventName,newCallback);callback.apply(null,arguments);});if(!callback){return new Promise(function(resolve){callback=resolve;});}};EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(!handlers)handlers=this._defaultHandlers={_disabled_:{}};if(handlers[eventName]){var old=handlers[eventName];var disabled=handlers._disabled_[eventName];if(!disabled)handlers._disabled_[eventName]=disabled=[];disabled.push(old);var i=disabled.indexOf(callback);if(i!=-1)disabled.splice(i,1);}handlers[eventName]=callback;};EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(!handlers)return;var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback){if(disabled)this.setDefaultHandler(eventName,disabled.pop());}else if(disabled){var i=disabled.indexOf(callback);if(i!=-1)disabled.splice(i,1);}};EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(!listeners)listeners=this._eventRegistry[eventName]=[];if(listeners.indexOf(callback)==-1)listeners[capturing?"unshift":"push"](callback);return callback;};EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(!listeners)return;var index=listeners.indexOf(callback);if(index!==-1)listeners.splice(index,1);};EventEmitter.removeAllListeners=function(eventName){if(!eventName)this._eventRegistry=this._defaultHandlers=undefined;if(this._eventRegistry)this._eventRegistry[eventName]=undefined;if(this._defaultHandlers)this._defaultHandlers[eventName]=undefined;};exports.EventEmitter=EventEmitter;});ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(require,exports,module){"no use strict";var oop=require("./oop");var EventEmitter=require("./event_emitter").EventEmitter;var optionsProvider={setOptions:function setOptions(optList){Object.keys(optList).forEach(function(key){this.setOption(key,optList[key]);},this);},getOptions:function getOptions(optionNames){var result={};if(!optionNames){var options=this.$options;optionNames=Object.keys(options).filter(function(key){return!options[key].hidden;});}else if(!Array.isArray(optionNames)){result=optionNames;optionNames=Object.keys(result);}optionNames.forEach(function(key){result[key]=this.getOption(key);},this);return result;},setOption:function setOption(name,value){if(this["$"+name]===value)return;var opt=this.$options[name];if(!opt){return warn('misspelled option "'+name+'"');}if(opt.forwardTo)return this[opt.forwardTo]&&this[opt.forwardTo].setOption(name,value);if(!opt.handlesSet)this["$"+name]=value;if(opt&&opt.set)opt.set.call(this,value);},getOption:function getOption(name){var opt=this.$options[name];if(!opt){return warn('misspelled option "'+name+'"');}if(opt.forwardTo)return this[opt.forwardTo]&&this[opt.forwardTo].getOption(name);return opt&&opt.get?opt.get.call(this):this["$"+name];}};function warn(message){if(typeof console!="undefined"&&console.warn)console.warn.apply(console,arguments);}function reportError(msg,data){var e=new Error(msg);e.data=data;if((typeof console==="undefined"?"undefined":_typeof(console))=="object"&&console.error)console.error(e);setTimeout(function(){throw e;});}var AppConfig=function AppConfig(){this.$defaultOptions={};};(function(){oop.implement(this,EventEmitter);this.defineOptions=function(obj,path,options){if(!obj.$options)this.$defaultOptions[path]=obj.$options={};Object.keys(options).forEach(function(key){var opt=options[key];if(typeof opt=="string")opt={forwardTo:opt};opt.name||(opt.name=key);obj.$options[opt.name]=opt;if("initialValue"in opt)obj["$"+opt.name]=opt.initialValue;});oop.implement(obj,optionsProvider);return this;};this.resetOptions=function(obj){Object.keys(obj.$options).forEach(function(key){var opt=obj.$options[key];if("value"in opt)obj.setOption(key,opt.value);});};this.setDefaultValue=function(path,name,value){if(!path){for(path in this.$defaultOptions){if(this.$defaultOptions[path][name])break;}if(!this.$defaultOptions[path][name])return false;}var opts=this.$defaultOptions[path]||(this.$defaultOptions[path]={});if(opts[name]){if(opts.forwardTo)this.setDefaultValue(opts.forwardTo,name,value);else opts[name].value=value;}};this.setDefaultValues=function(path,optionHash){Object.keys(optionHash).forEach(function(key){this.setDefaultValue(path,key,optionHash[key]);},this);};this.warn=warn;this.reportError=reportError;}).call(AppConfig.prototype);exports.AppConfig=AppConfig;});ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/app_config"],function(require,exports,module){"no use strict";var lang=require("./lib/lang");var oop=require("./lib/oop");var net=require("./lib/net");var AppConfig=require("./lib/app_config").AppConfig;module.exports=exports=new AppConfig();var global=function(){return this||typeof window!="undefined"&&window;}();var options={packaged:false,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{},loadWorkerFromBlob:true,sharedPopups:false};exports.get=function(key){if(!options.hasOwnProperty(key))throw new Error("Unknown config key: "+key);return options[key];};exports.set=function(key,value){if(options.hasOwnProperty(key))options[key]=value;else if(this.setDefaultValue("",key,value)==false)throw new Error("Unknown config key: "+key);};exports.all=function(){return lang.copyObject(options);};exports.$modes={};exports.moduleUrl=function(name,component){if(options.$moduleUrls[name])return options.$moduleUrls[name];var parts=name.split("/");component=component||parts[parts.length-2]||"";var sep=component=="snippets"?"/":"-";var base=parts[parts.length-1];if(component=="worker"&&sep=="-"){var re=new RegExp("^"+component+"[\\-_]|[\\-_]"+component+"$","g");base=base.replace(re,"");}if((!base||base==component)&&parts.length>1)base=parts[parts.length-2];var path=options[component+"Path"];if(path==null){path=options.basePath;}else if(sep=="/"){component=sep="";}if(path&&path.slice(-1)!="/")path+="/";return path+component+sep+base+this.get("suffix");};exports.setModuleUrl=function(name,subst){return options.$moduleUrls[name]=subst;};exports.$loading={};exports.loadModule=function(moduleName,onLoad){var module,moduleType;if(Array.isArray(moduleName)){moduleType=moduleName[0];moduleName=moduleName[1];}try{module=require(moduleName);}catch(e){}if(module&&!exports.$loading[moduleName])return onLoad&&onLoad(module);if(!exports.$loading[moduleName])exports.$loading[moduleName]=[];exports.$loading[moduleName].push(onLoad);if(exports.$loading[moduleName].length>1)return;var afterLoad=function afterLoad(){require([moduleName],function(module){exports._emit("load.module",{name:moduleName,module:module});var listeners=exports.$loading[moduleName];exports.$loading[moduleName]=null;listeners.forEach(function(onLoad){onLoad&&onLoad(module);});});};if(!exports.get("packaged"))return afterLoad();net.loadScript(exports.moduleUrl(moduleName,moduleType),afterLoad);_reportErrorIfPathIsNotConfigured();};var _reportErrorIfPathIsNotConfigured=function reportErrorIfPathIsNotConfigured(){if(!options.basePath&&!options.workerPath&&!options.modePath&&!options.themePath&&!Object.keys(options.$moduleUrls).length){console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver");_reportErrorIfPathIsNotConfigured=function reportErrorIfPathIsNotConfigured(){};}};init(true);function init(packaged){if(!global||!global.document)return;options.packaged=packaged||require.packaged||module.packaged||global.define&&__webpack_require__(/*! !webpack amd define */ "./node_modules/webpack/buildin/amd-define.js").packaged;var scriptOptions={};var scriptUrl="";var currentScript=document.currentScript||document._currentScript;// native or polyfill
var currentDocument=currentScript&&currentScript.ownerDocument||document;var scripts=currentDocument.getElementsByTagName("script");for(var i=0;i<scripts.length;i++){var script=scripts[i];var src=script.src||script.getAttribute("src");if(!src)continue;var attributes=script.attributes;for(var j=0,l=attributes.length;j<l;j++){var attr=attributes[j];if(attr.name.indexOf("data-ace-")===0){scriptOptions[deHyphenate(attr.name.replace(/^data-ace-/,""))]=attr.value;}}var m=src.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);if(m)scriptUrl=m[1];}if(scriptUrl){scriptOptions.base=scriptOptions.base||scriptUrl;scriptOptions.packaged=true;}scriptOptions.basePath=scriptOptions.base;scriptOptions.workerPath=scriptOptions.workerPath||scriptOptions.base;scriptOptions.modePath=scriptOptions.modePath||scriptOptions.base;scriptOptions.themePath=scriptOptions.themePath||scriptOptions.base;delete scriptOptions.base;for(var key in scriptOptions){if(typeof scriptOptions[key]!=="undefined")exports.set(key,scriptOptions[key]);}}exports.init=init;function deHyphenate(str){return str.replace(/-(.)/g,function(m,m1){return m1.toUpperCase();});}exports.version="1.4.12";});ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/mouse/touch_handler","ace/config"],function(require,exports,module){"use strict";var event=require("../lib/event");var useragent=require("../lib/useragent");var DefaultHandlers=require("./default_handlers").DefaultHandlers;var DefaultGutterHandler=require("./default_gutter_handler").GutterHandler;var MouseEvent=require("./mouse_event").MouseEvent;var DragdropHandler=require("./dragdrop_handler").DragdropHandler;var addTouchListeners=require("./touch_handler").addTouchListeners;var config=require("../config");var MouseHandler=function MouseHandler(editor){var _self=this;this.editor=editor;new DefaultHandlers(this);new DefaultGutterHandler(this);new DragdropHandler(this);var focusEditor=function focusEditor(e){var windowBlurred=!document.hasFocus||!document.hasFocus()||!editor.isFocused()&&document.activeElement==(editor.textInput&&editor.textInput.getElement());if(windowBlurred)window.focus();editor.focus();};var mouseTarget=editor.renderer.getMouseEventTarget();event.addListener(mouseTarget,"click",this.onMouseEvent.bind(this,"click"),editor);event.addListener(mouseTarget,"mousemove",this.onMouseMove.bind(this,"mousemove"),editor);event.addMultiMouseDownListener([mouseTarget,editor.renderer.scrollBarV&&editor.renderer.scrollBarV.inner,editor.renderer.scrollBarH&&editor.renderer.scrollBarH.inner,editor.textInput&&editor.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent",editor);event.addMouseWheelListener(editor.container,this.onMouseWheel.bind(this,"mousewheel"),editor);addTouchListeners(editor.container,editor);var gutterEl=editor.renderer.$gutter;event.addListener(gutterEl,"mousedown",this.onMouseEvent.bind(this,"guttermousedown"),editor);event.addListener(gutterEl,"click",this.onMouseEvent.bind(this,"gutterclick"),editor);event.addListener(gutterEl,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick"),editor);event.addListener(gutterEl,"mousemove",this.onMouseEvent.bind(this,"guttermousemove"),editor);event.addListener(mouseTarget,"mousedown",focusEditor,editor);event.addListener(gutterEl,"mousedown",focusEditor,editor);if(useragent.isIE&&editor.renderer.scrollBarV){event.addListener(editor.renderer.scrollBarV.element,"mousedown",focusEditor,editor);event.addListener(editor.renderer.scrollBarH.element,"mousedown",focusEditor,editor);}editor.on("mousemove",function(e){if(_self.state||_self.$dragDelay||!_self.$dragEnabled)return;var character=editor.renderer.screenToTextCoordinates(e.x,e.y);var range=editor.session.selection.getRange();var renderer=editor.renderer;if(!range.isEmpty()&&range.insideStart(character.row,character.column)){renderer.setCursorStyle("default");}else{renderer.setCursorStyle("");}},editor);};(function(){this.onMouseEvent=function(name,e){this.editor._emit(name,new MouseEvent(e,this.editor));};this.onMouseMove=function(name,e){var listeners=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!listeners||!listeners.length)return;this.editor._emit(name,new MouseEvent(e,this.editor));};this.onMouseWheel=function(name,e){var mouseEvent=new MouseEvent(e,this.editor);mouseEvent.speed=this.$scrollSpeed*2;mouseEvent.wheelX=e.wheelX;mouseEvent.wheelY=e.wheelY;this.editor._emit(name,mouseEvent);};this.setState=function(state){this.state=state;};this.captureMouse=function(ev,mouseMoveHandler){this.x=ev.x;this.y=ev.y;this.isMousePressed=true;var editor=this.editor;var renderer=this.editor.renderer;renderer.$isMousePressed=true;var self=this;var onMouseMove=function onMouseMove(e){if(!e)return;if(useragent.isWebKit&&!e.which&&self.releaseMouse)return self.releaseMouse();self.x=e.clientX;self.y=e.clientY;mouseMoveHandler&&mouseMoveHandler(e);self.mouseEvent=new MouseEvent(e,self.editor);self.$mouseMoved=true;};var onCaptureEnd=function onCaptureEnd(e){editor.off("beforeEndOperation",onOperationEnd);clearInterval(timerId);onCaptureInterval();self[self.state+"End"]&&self[self.state+"End"](e);self.state="";self.isMousePressed=renderer.$isMousePressed=false;if(renderer.$keepTextAreaAtCursor)renderer.$moveTextAreaToCursor();self.$onCaptureMouseMove=self.releaseMouse=null;e&&self.onMouseEvent("mouseup",e);editor.endOperation();};var onCaptureInterval=function onCaptureInterval(){self[self.state]&&self[self.state]();self.$mouseMoved=false;};if(useragent.isOldIE&&ev.domEvent.type=="dblclick"){return setTimeout(function(){onCaptureEnd(ev);});}var onOperationEnd=function onOperationEnd(e){if(!self.releaseMouse)return;if(editor.curOp.command.name&&editor.curOp.selectionChanged){self[self.state+"End"]&&self[self.state+"End"]();self.state="";self.releaseMouse();}};editor.on("beforeEndOperation",onOperationEnd);editor.startOperation({command:{name:"mouse"}});self.$onCaptureMouseMove=onMouseMove;self.releaseMouse=event.capture(this.editor.container,onMouseMove,onCaptureEnd);var timerId=setInterval(onCaptureInterval,20);};this.releaseMouse=null;this.cancelContextMenu=function(){var stop=function(e){if(e&&e.domEvent&&e.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",stop);if(e&&e.domEvent)event.stopEvent(e.domEvent);}.bind(this);setTimeout(stop,10);this.editor.on("nativecontextmenu",stop);};this.destroy=function(){if(this.releaseMouse)this.releaseMouse();};}).call(MouseHandler.prototype);config.defineOptions(MouseHandler.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:useragent.isMac?150:0},dragEnabled:{initialValue:true},focusTimeout:{initialValue:0},tooltipFollowsMouse:{initialValue:true}});exports.MouseHandler=MouseHandler;});ace.define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"],function(require,exports,module){"use strict";var dom=require("../lib/dom");function FoldHandler(editor){editor.on("click",function(e){var position=e.getDocumentPosition();var session=editor.session;var fold=session.getFoldAt(position.row,position.column,1);if(fold){if(e.getAccelKey())session.removeFold(fold);else session.expandFold(fold);e.stop();}var target=e.domEvent&&e.domEvent.target;if(target&&dom.hasCssClass(target,"ace_inline_button")){if(dom.hasCssClass(target,"ace_toggle_wrap")){session.setOption("wrap",!session.getUseWrapMode());editor.renderer.scrollCursorIntoView();}}});editor.on("gutterclick",function(e){var gutterRegion=editor.renderer.$gutterLayer.getRegion(e);if(gutterRegion=="foldWidgets"){var row=e.getDocumentPosition().row;var session=editor.session;if(session.foldWidgets&&session.foldWidgets[row])editor.session.onFoldWidgetClick(row,e);if(!editor.isFocused())editor.focus();e.stop();}});editor.on("gutterdblclick",function(e){var gutterRegion=editor.renderer.$gutterLayer.getRegion(e);if(gutterRegion=="foldWidgets"){var row=e.getDocumentPosition().row;var session=editor.session;var data=session.getParentFoldRangeData(row,true);var range=data.range||data.firstRange;if(range){row=range.start.row;var fold=session.getFoldAt(row,session.getLine(row).length,1);if(fold){session.removeFold(fold);}else{session.addFold("...",range);editor.renderer.scrollCursorIntoView({row:range.start.row,column:0});}}e.stop();}});}exports.FoldHandler=FoldHandler;});ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(require,exports,module){"use strict";var keyUtil=require("../lib/keys");var event=require("../lib/event");var KeyBinding=function KeyBinding(editor){this.$editor=editor;this.$data={editor:editor};this.$handlers=[];this.setDefaultHandler(editor.commands);};(function(){this.setDefaultHandler=function(kb){this.removeKeyboardHandler(this.$defaultHandler);this.$defaultHandler=kb;this.addKeyboardHandler(kb,0);};this.setKeyboardHandler=function(kb){var h=this.$handlers;if(h[h.length-1]==kb)return;while(h[h.length-1]&&h[h.length-1]!=this.$defaultHandler){this.removeKeyboardHandler(h[h.length-1]);}this.addKeyboardHandler(kb,1);};this.addKeyboardHandler=function(kb,pos){if(!kb)return;if(typeof kb=="function"&&!kb.handleKeyboard)kb.handleKeyboard=kb;var i=this.$handlers.indexOf(kb);if(i!=-1)this.$handlers.splice(i,1);if(pos==undefined)this.$handlers.push(kb);else this.$handlers.splice(pos,0,kb);if(i==-1&&kb.attach)kb.attach(this.$editor);};this.removeKeyboardHandler=function(kb){var i=this.$handlers.indexOf(kb);if(i==-1)return false;this.$handlers.splice(i,1);kb.detach&&kb.detach(this.$editor);return true;};this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1];};this.getStatusText=function(){var data=this.$data;var editor=data.editor;return this.$handlers.map(function(h){return h.getStatusText&&h.getStatusText(editor,data)||"";}).filter(Boolean).join(" ");};this.$callKeyboardHandlers=function(hashId,keyString,keyCode,e){var toExecute;var success=false;var commands=this.$editor.commands;for(var i=this.$handlers.length;i--;){toExecute=this.$handlers[i].handleKeyboard(this.$data,hashId,keyString,keyCode,e);if(!toExecute||!toExecute.command)continue;if(toExecute.command=="null"){success=true;}else{success=commands.exec(toExecute.command,this.$editor,toExecute.args,e);}if(success&&e&&hashId!=-1&&toExecute.passEvent!=true&&toExecute.command.passEvent!=true){event.stopEvent(e);}if(success)break;}if(!success&&hashId==-1){toExecute={command:"insertstring"};success=commands.exec("insertstring",this.$editor,keyString);}if(success&&this.$editor._signal)this.$editor._signal("keyboardActivity",toExecute);return success;};this.onCommandKey=function(e,hashId,keyCode){var keyString=keyUtil.keyCodeToString(keyCode);return this.$callKeyboardHandlers(hashId,keyString,keyCode,e);};this.onTextInput=function(text){return this.$callKeyboardHandlers(-1,text);};}).call(KeyBinding.prototype);exports.KeyBinding=KeyBinding;});ace.define("ace/lib/bidiutil",["require","exports","module"],function(require,exports,module){"use strict";var ArabicAlefBetIntervalsBegine=["\u0621","\u0641"];var ArabicAlefBetIntervalsEnd=["\u063A","\u064A"];var dir=0,hiLevel=0;var lastArabic=false,hasUBAT_AL=false,hasUBAT_B=false,hasUBAT_S=false,hasBlockSep=false,hasSegSep=false;var impTab_LTR=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,0x11,2,0,1],[0,3,5,5,4,1,0],[0,3,0x15,0x15,4,0,1],[0,3,5,5,4,2,0]];var impTab_RTL=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,0x21,3,1,1]];var LTR=0,RTL=1;var L=0;var R=1;var EN=2;var AN=3;var ON=4;var B=5;var S=6;var AL=7;var WS=8;var CS=9;var ES=10;var ET=11;var NSM=12;var LRE=13;var RLE=14;var PDF=15;var LRO=16;var RLO=17;var BN=18;var UnicodeTBL00=[BN,BN,BN,BN,BN,BN,BN,BN,BN,S,B,S,WS,B,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,B,B,B,S,WS,ON,ON,ET,ET,ET,ON,ON,ON,ON,ON,ES,CS,ES,CS,CS,EN,EN,EN,EN,EN,EN,EN,EN,EN,EN,CS,ON,ON,ON,ON,ON,ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,ON,ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,BN,BN,BN,BN,BN,BN,B,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,CS,ON,ET,ET,ET,ET,ON,ON,ON,ON,L,ON,ON,BN,ON,ON,ET,ET,EN,EN,ON,L,ON,ON,ON,EN,L,ON,ON,ON,ON,ON];var UnicodeTBL20=[WS,WS,WS,WS,WS,WS,WS,WS,WS,WS,WS,BN,BN,BN,L,R,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,WS,B,LRE,RLE,PDF,LRO,RLO,CS,ET,ET,ET,ET,ET,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,CS,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,WS];function _computeLevels(chars,levels,len,charTypes){var impTab=dir?impTab_RTL:impTab_LTR,prevState=null,newClass=null,newLevel=null,newState=0,action=null,cond=null,condPos=-1,i=null,ix=null,classes=[];if(!charTypes){for(i=0,charTypes=[];i<len;i++){charTypes[i]=_getCharacterType(chars[i]);}}hiLevel=dir;lastArabic=false;hasUBAT_AL=false;hasUBAT_B=false;hasUBAT_S=false;for(ix=0;ix<len;ix++){prevState=newState;classes[ix]=newClass=_getCharClass(chars,charTypes,classes,ix);newState=impTab[prevState][newClass];action=newState&0xF0;newState&=0x0F;levels[ix]=newLevel=impTab[newState][5];if(action>0){if(action==0x10){for(i=condPos;i<ix;i++){levels[i]=1;}condPos=-1;}else{condPos=-1;}}cond=impTab[newState][6];if(cond){if(condPos==-1){condPos=ix;}}else{if(condPos>-1){for(i=condPos;i<ix;i++){levels[i]=newLevel;}condPos=-1;}}if(charTypes[ix]==B){levels[ix]=0;}hiLevel|=newLevel;}if(hasUBAT_S){for(i=0;i<len;i++){if(charTypes[i]==S){levels[i]=dir;for(var j=i-1;j>=0;j--){if(charTypes[j]==WS){levels[j]=dir;}else{break;}}}}}}function _invertLevel(lev,levels,_array){if(hiLevel<lev){return;}if(lev==1&&dir==RTL&&!hasUBAT_B){_array.reverse();return;}var len=_array.length,start=0,end,lo,hi,tmp;while(start<len){if(levels[start]>=lev){end=start+1;while(end<len&&levels[end]>=lev){end++;}for(lo=start,hi=end-1;lo<hi;lo++,hi--){tmp=_array[lo];_array[lo]=_array[hi];_array[hi]=tmp;}start=end;}start++;}}function _getCharClass(chars,types,classes,ix){var cType=types[ix],wType,nType,len,i;switch(cType){case L:case R:lastArabic=false;case ON:case AN:return cType;case EN:return lastArabic?AN:EN;case AL:lastArabic=true;hasUBAT_AL=true;return R;case WS:return ON;case CS:if(ix<1||ix+1>=types.length||(wType=classes[ix-1])!=EN&&wType!=AN||(nType=types[ix+1])!=EN&&nType!=AN){return ON;}if(lastArabic){nType=AN;}return nType==wType?nType:ON;case ES:wType=ix>0?classes[ix-1]:B;if(wType==EN&&ix+1<types.length&&types[ix+1]==EN){return EN;}return ON;case ET:if(ix>0&&classes[ix-1]==EN){return EN;}if(lastArabic){return ON;}i=ix+1;len=types.length;while(i<len&&types[i]==ET){i++;}if(i<len&&types[i]==EN){return EN;}return ON;case NSM:len=types.length;i=ix+1;while(i<len&&types[i]==NSM){i++;}if(i<len){var c=chars[ix],rtlCandidate=c>=0x0591&&c<=0x08FF||c==0xFB1E;wType=types[i];if(rtlCandidate&&(wType==R||wType==AL)){return R;}}if(ix<1||(wType=types[ix-1])==B){return ON;}return classes[ix-1];case B:lastArabic=false;hasUBAT_B=true;return dir;case S:hasUBAT_S=true;return ON;case LRE:case RLE:case LRO:case RLO:case PDF:lastArabic=false;case BN:return ON;}}function _getCharacterType(ch){var uc=ch.charCodeAt(0),hi=uc>>8;if(hi==0){return uc>0x00BF?L:UnicodeTBL00[uc];}else if(hi==5){return /[\u0591-\u05f4]/.test(ch)?R:L;}else if(hi==6){if(/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch))return NSM;else if(/[\u0660-\u0669\u066b-\u066c]/.test(ch))return AN;else if(uc==0x066A)return ET;else if(/[\u06f0-\u06f9]/.test(ch))return EN;else return AL;}else if(hi==0x20&&uc<=0x205F){return UnicodeTBL20[uc&0xFF];}else if(hi==0xFE){return uc>=0xFE70?AL:ON;}return ON;}function _isArabicDiacritics(ch){return ch>="\u064B"&&ch<="\u0655";}exports.L=L;exports.R=R;exports.EN=EN;exports.ON_R=3;exports.AN=4;exports.R_H=5;exports.B=6;exports.RLE=7;exports.DOT="\xB7";exports.doBidiReorder=function(text,textCharTypes,isRtl){if(text.length<2)return{};var chars=text.split(""),logicalFromVisual=new Array(chars.length),bidiLevels=new Array(chars.length),levels=[];dir=isRtl?RTL:LTR;_computeLevels(chars,levels,chars.length,textCharTypes);for(var i=0;i<logicalFromVisual.length;logicalFromVisual[i]=i,i++){;}_invertLevel(2,levels,logicalFromVisual);_invertLevel(1,levels,logicalFromVisual);for(var i=0;i<logicalFromVisual.length-1;i++){//fix levels to reflect character width
if(textCharTypes[i]===AN){levels[i]=exports.AN;}else if(levels[i]===R&&(textCharTypes[i]>AL&&textCharTypes[i]<LRE||textCharTypes[i]===ON||textCharTypes[i]===BN)){levels[i]=exports.ON_R;}else if(i>0&&chars[i-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(chars[i])){levels[i-1]=levels[i]=exports.R_H;i++;}}if(chars[chars.length-1]===exports.DOT)levels[chars.length-1]=exports.B;if(chars[0]==="\u202B")levels[0]=exports.RLE;for(var i=0;i<logicalFromVisual.length;i++){bidiLevels[i]=levels[logicalFromVisual[i]];}return{'logicalFromVisual':logicalFromVisual,'bidiLevels':bidiLevels};};exports.hasBidiCharacters=function(text,textCharTypes){var ret=false;for(var i=0;i<text.length;i++){textCharTypes[i]=_getCharacterType(text.charAt(i));if(!ret&&(textCharTypes[i]==R||textCharTypes[i]==AL||textCharTypes[i]==AN))ret=true;}return ret;};exports.getVisualFromLogicalIdx=function(logIdx,rowMap){for(var i=0;i<rowMap.logicalFromVisual.length;i++){if(rowMap.logicalFromVisual[i]==logIdx)return i;}return 0;};});ace.define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang"],function(require,exports,module){"use strict";var bidiUtil=require("./lib/bidiutil");var lang=require("./lib/lang");var bidiRE=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/;var BidiHandler=function BidiHandler(session){this.session=session;this.bidiMap={};this.currentRow=null;this.bidiUtil=bidiUtil;this.charWidths=[];this.EOL="\xAC";this.showInvisibles=true;this.isRtlDir=false;this.$isRtl=false;this.line="";this.wrapIndent=0;this.EOF="\xB6";this.RLE="\u202B";this.contentWidth=0;this.fontMetrics=null;this.rtlLineOffset=0;this.wrapOffset=0;this.isMoveLeftOperation=false;this.seenBidi=bidiRE.test(session.getValue());};(function(){this.isBidiRow=function(screenRow,docRow,splitIndex){if(!this.seenBidi)return false;if(screenRow!==this.currentRow){this.currentRow=screenRow;this.updateRowLine(docRow,splitIndex);this.updateBidiMap();}return this.bidiMap.bidiLevels;};this.onChange=function(delta){if(!this.seenBidi){if(delta.action=="insert"&&bidiRE.test(delta.lines.join("\n"))){this.seenBidi=true;this.currentRow=null;}}else{this.currentRow=null;}};this.getDocumentRow=function(){var docRow=0;var rowCache=this.session.$screenRowCache;if(rowCache.length){var index=this.session.$getRowCacheIndex(rowCache,this.currentRow);if(index>=0)docRow=this.session.$docRowCache[index];}return docRow;};this.getSplitIndex=function(){var splitIndex=0;var rowCache=this.session.$screenRowCache;if(rowCache.length){var currentIndex,prevIndex=this.session.$getRowCacheIndex(rowCache,this.currentRow);while(this.currentRow-splitIndex>0){currentIndex=this.session.$getRowCacheIndex(rowCache,this.currentRow-splitIndex-1);if(currentIndex!==prevIndex)break;prevIndex=currentIndex;splitIndex++;}}else{splitIndex=this.currentRow;}return splitIndex;};this.updateRowLine=function(docRow,splitIndex){if(docRow===undefined)docRow=this.getDocumentRow();var isLastRow=docRow===this.session.getLength()-1,endOfLine=isLastRow?this.EOF:this.EOL;this.wrapIndent=0;this.line=this.session.getLine(docRow);this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE;if(this.session.$useWrapMode){var splits=this.session.$wrapData[docRow];if(splits){if(splitIndex===undefined)splitIndex=this.getSplitIndex();if(splitIndex>0&&splits.length){this.wrapIndent=splits.indent;this.wrapOffset=this.wrapIndent*this.charWidths[bidiUtil.L];this.line=splitIndex<splits.length?this.line.substring(splits[splitIndex-1],splits[splitIndex]):this.line.substring(splits[splits.length-1]);}else{this.line=this.line.substring(0,splits[splitIndex]);}}if(splitIndex==splits.length)this.line+=this.showInvisibles?endOfLine:bidiUtil.DOT;}else{this.line+=this.showInvisibles?endOfLine:bidiUtil.DOT;}var session=this.session,shift=0,size;this.line=this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g,function(ch,i){if(ch==='\t'||session.isFullWidth(ch.charCodeAt(0))){size=ch==='\t'?session.getScreenTabSize(i+shift):2;shift+=size-1;return lang.stringRepeat(bidiUtil.DOT,size);}return ch;});if(this.isRtlDir){this.fontMetrics.$main.textContent=this.line.charAt(this.line.length-1)==bidiUtil.DOT?this.line.substr(0,this.line.length-1):this.line;this.rtlLineOffset=this.contentWidth-this.fontMetrics.$main.getBoundingClientRect().width;}};this.updateBidiMap=function(){var textCharTypes=[];if(bidiUtil.hasBidiCharacters(this.line,textCharTypes)||this.isRtlDir){this.bidiMap=bidiUtil.doBidiReorder(this.line,textCharTypes,this.isRtlDir);}else{this.bidiMap={};}};this.markAsDirty=function(){this.currentRow=null;};this.updateCharacterWidths=function(fontMetrics){if(this.characterWidth===fontMetrics.$characterSize.width)return;this.fontMetrics=fontMetrics;var characterWidth=this.characterWidth=fontMetrics.$characterSize.width;var bidiCharWidth=fontMetrics.$measureCharWidth("\u05D4");this.charWidths[bidiUtil.L]=this.charWidths[bidiUtil.EN]=this.charWidths[bidiUtil.ON_R]=characterWidth;this.charWidths[bidiUtil.R]=this.charWidths[bidiUtil.AN]=bidiCharWidth;this.charWidths[bidiUtil.R_H]=bidiCharWidth*0.45;this.charWidths[bidiUtil.B]=this.charWidths[bidiUtil.RLE]=0;this.currentRow=null;};this.setShowInvisibles=function(showInvisibles){this.showInvisibles=showInvisibles;this.currentRow=null;};this.setEolChar=function(eolChar){this.EOL=eolChar;};this.setContentWidth=function(width){this.contentWidth=width;};this.isRtlLine=function(row){if(this.$isRtl)return true;if(row!=undefined)return this.session.getLine(row).charAt(0)==this.RLE;else return this.isRtlDir;};this.setRtlDirection=function(editor,isRtlDir){var cursor=editor.getCursorPosition();for(var row=editor.selection.getSelectionAnchor().row;row<=cursor.row;row++){if(!isRtlDir&&editor.session.getLine(row).charAt(0)===editor.session.$bidiHandler.RLE)editor.session.doc.removeInLine(row,0,1);else if(isRtlDir&&editor.session.getLine(row).charAt(0)!==editor.session.$bidiHandler.RLE)editor.session.doc.insert({column:0,row:row},editor.session.$bidiHandler.RLE);}};this.getPosLeft=function(col){col-=this.wrapIndent;var leftBoundary=this.line.charAt(0)===this.RLE?1:0;var logicalIdx=col>leftBoundary?this.session.getOverwrite()?col:col-1:leftBoundary;var visualIdx=bidiUtil.getVisualFromLogicalIdx(logicalIdx,this.bidiMap),levels=this.bidiMap.bidiLevels,left=0;if(!this.session.getOverwrite()&&col<=leftBoundary&&levels[visualIdx]%2!==0)visualIdx++;for(var i=0;i<visualIdx;i++){left+=this.charWidths[levels[i]];}if(!this.session.getOverwrite()&&col>leftBoundary&&levels[visualIdx]%2===0)left+=this.charWidths[levels[visualIdx]];if(this.wrapIndent)left+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset;if(this.isRtlDir)left+=this.rtlLineOffset;return left;};this.getSelections=function(startCol,endCol){var map=this.bidiMap,levels=map.bidiLevels,level,selections=[],offset=0,selColMin=Math.min(startCol,endCol)-this.wrapIndent,selColMax=Math.max(startCol,endCol)-this.wrapIndent,isSelected=false,isSelectedPrev=false,selectionStart=0;if(this.wrapIndent)offset+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset;for(var logIdx,visIdx=0;visIdx<levels.length;visIdx++){logIdx=map.logicalFromVisual[visIdx];level=levels[visIdx];isSelected=logIdx>=selColMin&&logIdx<selColMax;if(isSelected&&!isSelectedPrev){selectionStart=offset;}else if(!isSelected&&isSelectedPrev){selections.push({left:selectionStart,width:offset-selectionStart});}offset+=this.charWidths[level];isSelectedPrev=isSelected;}if(isSelected&&visIdx===levels.length){selections.push({left:selectionStart,width:offset-selectionStart});}if(this.isRtlDir){for(var i=0;i<selections.length;i++){selections[i].left+=this.rtlLineOffset;}}return selections;};this.offsetToCol=function(posX){if(this.isRtlDir)posX-=this.rtlLineOffset;var logicalIdx=0,posX=Math.max(posX,0),offset=0,visualIdx=0,levels=this.bidiMap.bidiLevels,charWidth=this.charWidths[levels[visualIdx]];if(this.wrapIndent)posX-=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset;while(posX>offset+charWidth/2){offset+=charWidth;if(visualIdx===levels.length-1){charWidth=0;break;}charWidth=this.charWidths[levels[++visualIdx]];}if(visualIdx>0&&levels[visualIdx-1]%2!==0&&levels[visualIdx]%2===0){if(posX<offset)visualIdx--;logicalIdx=this.bidiMap.logicalFromVisual[visualIdx];}else if(visualIdx>0&&levels[visualIdx-1]%2===0&&levels[visualIdx]%2!==0){logicalIdx=1+(posX>offset?this.bidiMap.logicalFromVisual[visualIdx]:this.bidiMap.logicalFromVisual[visualIdx-1]);}else if(this.isRtlDir&&visualIdx===levels.length-1&&charWidth===0&&levels[visualIdx-1]%2===0||!this.isRtlDir&&visualIdx===0&&levels[visualIdx]%2!==0){logicalIdx=1+this.bidiMap.logicalFromVisual[visualIdx];}else{if(visualIdx>0&&levels[visualIdx-1]%2!==0&&charWidth!==0)visualIdx--;logicalIdx=this.bidiMap.logicalFromVisual[visualIdx];}if(logicalIdx===0&&this.isRtlDir)logicalIdx++;return logicalIdx+this.wrapIndent;};}).call(BidiHandler.prototype);exports.BidiHandler=BidiHandler;});ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var lang=require("./lib/lang");var EventEmitter=require("./lib/event_emitter").EventEmitter;var Range=require("./range").Range;var Selection=function Selection(session){this.session=session;this.doc=session.getDocument();this.clearSelection();this.cursor=this.lead=this.doc.createAnchor(0,0);this.anchor=this.doc.createAnchor(0,0);this.$silent=false;var self=this;this.cursor.on("change",function(e){self.$cursorChanged=true;if(!self.$silent)self._emit("changeCursor");if(!self.$isEmpty&&!self.$silent)self._emit("changeSelection");if(!self.$keepDesiredColumnOnChange&&e.old.column!=e.value.column)self.$desiredColumn=null;});this.anchor.on("change",function(){self.$anchorChanged=true;if(!self.$isEmpty&&!self.$silent)self._emit("changeSelection");});};(function(){oop.implement(this,EventEmitter);this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column;};this.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row;};this.getCursor=function(){return this.lead.getPosition();};this.setSelectionAnchor=function(row,column){this.$isEmpty=false;this.anchor.setPosition(row,column);};this.getAnchor=this.getSelectionAnchor=function(){if(this.$isEmpty)return this.getSelectionLead();return this.anchor.getPosition();};this.getSelectionLead=function(){return this.lead.getPosition();};this.isBackwards=function(){var anchor=this.anchor;var lead=this.lead;return anchor.row>lead.row||anchor.row==lead.row&&anchor.column>lead.column;};this.getRange=function(){var anchor=this.anchor;var lead=this.lead;if(this.$isEmpty)return Range.fromPoints(lead,lead);return this.isBackwards()?Range.fromPoints(lead,anchor):Range.fromPoints(anchor,lead);};this.clearSelection=function(){if(!this.$isEmpty){this.$isEmpty=true;this._emit("changeSelection");}};this.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE);};this.setRange=this.setSelectionRange=function(range,reverse){var start=reverse?range.end:range.start;var end=reverse?range.start:range.end;this.$setSelection(start.row,start.column,end.row,end.column);};this.$setSelection=function(anchorRow,anchorColumn,cursorRow,cursorColumn){if(this.$silent)return;var wasEmpty=this.$isEmpty;var wasMultiselect=this.inMultiSelectMode;this.$silent=true;this.$cursorChanged=this.$anchorChanged=false;this.anchor.setPosition(anchorRow,anchorColumn);this.cursor.setPosition(cursorRow,cursorColumn);this.$isEmpty=!Range.comparePoints(this.anchor,this.cursor);this.$silent=false;if(this.$cursorChanged)this._emit("changeCursor");if(this.$cursorChanged||this.$anchorChanged||wasEmpty!=this.$isEmpty||wasMultiselect)this._emit("changeSelection");};this.$moveSelection=function(mover){var lead=this.lead;if(this.$isEmpty)this.setSelectionAnchor(lead.row,lead.column);mover.call(this);};this.selectTo=function(row,column){this.$moveSelection(function(){this.moveCursorTo(row,column);});};this.selectToPosition=function(pos){this.$moveSelection(function(){this.moveCursorToPosition(pos);});};this.moveTo=function(row,column){this.clearSelection();this.moveCursorTo(row,column);};this.moveToPosition=function(pos){this.clearSelection();this.moveCursorToPosition(pos);};this.selectUp=function(){this.$moveSelection(this.moveCursorUp);};this.selectDown=function(){this.$moveSelection(this.moveCursorDown);};this.selectRight=function(){this.$moveSelection(this.moveCursorRight);};this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft);};this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart);};this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd);};this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd);};this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart);};this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight);};this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft);};this.getWordRange=function(row,column){if(typeof column=="undefined"){var cursor=row||this.lead;row=cursor.row;column=cursor.column;}return this.session.getWordRange(row,column);};this.selectWord=function(){this.setSelectionRange(this.getWordRange());};this.selectAWord=function(){var cursor=this.getCursor();var range=this.session.getAWordRange(cursor.row,cursor.column);this.setSelectionRange(range);};this.getLineRange=function(row,excludeLastChar){var rowStart=typeof row=="number"?row:this.lead.row;var rowEnd;var foldLine=this.session.getFoldLine(rowStart);if(foldLine){rowStart=foldLine.start.row;rowEnd=foldLine.end.row;}else{rowEnd=rowStart;}if(excludeLastChar===true)return new Range(rowStart,0,rowEnd,this.session.getLine(rowEnd).length);else return new Range(rowStart,0,rowEnd+1,0);};this.selectLine=function(){this.setSelectionRange(this.getLineRange());};this.moveCursorUp=function(){this.moveCursorBy(-1,0);};this.moveCursorDown=function(){this.moveCursorBy(1,0);};this.wouldMoveIntoSoftTab=function(cursor,tabSize,direction){var start=cursor.column;var end=cursor.column+tabSize;if(direction<0){start=cursor.column-tabSize;end=cursor.column;}return this.session.isTabStop(cursor)&&this.doc.getLine(cursor.row).slice(start,end).split(" ").length-1==tabSize;};this.moveCursorLeft=function(){var cursor=this.lead.getPosition(),fold;if(fold=this.session.getFoldAt(cursor.row,cursor.column,-1)){this.moveCursorTo(fold.start.row,fold.start.column);}else if(cursor.column===0){if(cursor.row>0){this.moveCursorTo(cursor.row-1,this.doc.getLine(cursor.row-1).length);}}else{var tabSize=this.session.getTabSize();if(this.wouldMoveIntoSoftTab(cursor,tabSize,-1)&&!this.session.getNavigateWithinSoftTabs()){this.moveCursorBy(0,-tabSize);}else{this.moveCursorBy(0,-1);}}};this.moveCursorRight=function(){var cursor=this.lead.getPosition(),fold;if(fold=this.session.getFoldAt(cursor.row,cursor.column,1)){this.moveCursorTo(fold.end.row,fold.end.column);}else if(this.lead.column==this.doc.getLine(this.lead.row).length){if(this.lead.row<this.doc.getLength()-1){this.moveCursorTo(this.lead.row+1,0);}}else{var tabSize=this.session.getTabSize();var cursor=this.lead;if(this.wouldMoveIntoSoftTab(cursor,tabSize,1)&&!this.session.getNavigateWithinSoftTabs()){this.moveCursorBy(0,tabSize);}else{this.moveCursorBy(0,1);}}};this.moveCursorLineStart=function(){var row=this.lead.row;var column=this.lead.column;var screenRow=this.session.documentToScreenRow(row,column);var firstColumnPosition=this.session.screenToDocumentPosition(screenRow,0);var beforeCursor=this.session.getDisplayLine(row,null,firstColumnPosition.row,firstColumnPosition.column);var leadingSpace=beforeCursor.match(/^\s*/);if(leadingSpace[0].length!=column&&!this.session.$useEmacsStyleLineStart)firstColumnPosition.column+=leadingSpace[0].length;this.moveCursorToPosition(firstColumnPosition);};this.moveCursorLineEnd=function(){var lead=this.lead;var lineEnd=this.session.getDocumentLastRowColumnPosition(lead.row,lead.column);if(this.lead.column==lineEnd.column){var line=this.session.getLine(lineEnd.row);if(lineEnd.column==line.length){var textEnd=line.search(/\s+$/);if(textEnd>0)lineEnd.column=textEnd;}}this.moveCursorTo(lineEnd.row,lineEnd.column);};this.moveCursorFileEnd=function(){var row=this.doc.getLength()-1;var column=this.doc.getLine(row).length;this.moveCursorTo(row,column);};this.moveCursorFileStart=function(){this.moveCursorTo(0,0);};this.moveCursorLongWordRight=function(){var row=this.lead.row;var column=this.lead.column;var line=this.doc.getLine(row);var rightOfCursor=line.substring(column);this.session.nonTokenRe.lastIndex=0;this.session.tokenRe.lastIndex=0;var fold=this.session.getFoldAt(row,column,1);if(fold){this.moveCursorTo(fold.end.row,fold.end.column);return;}if(this.session.nonTokenRe.exec(rightOfCursor)){column+=this.session.nonTokenRe.lastIndex;this.session.nonTokenRe.lastIndex=0;rightOfCursor=line.substring(column);}if(column>=line.length){this.moveCursorTo(row,line.length);this.moveCursorRight();if(row<this.doc.getLength()-1)this.moveCursorWordRight();return;}if(this.session.tokenRe.exec(rightOfCursor)){column+=this.session.tokenRe.lastIndex;this.session.tokenRe.lastIndex=0;}this.moveCursorTo(row,column);};this.moveCursorLongWordLeft=function(){var row=this.lead.row;var column=this.lead.column;var fold;if(fold=this.session.getFoldAt(row,column,-1)){this.moveCursorTo(fold.start.row,fold.start.column);return;}var str=this.session.getFoldStringAt(row,column,-1);if(str==null){str=this.doc.getLine(row).substring(0,column);}var leftOfCursor=lang.stringReverse(str);this.session.nonTokenRe.lastIndex=0;this.session.tokenRe.lastIndex=0;if(this.session.nonTokenRe.exec(leftOfCursor)){column-=this.session.nonTokenRe.lastIndex;leftOfCursor=leftOfCursor.slice(this.session.nonTokenRe.lastIndex);this.session.nonTokenRe.lastIndex=0;}if(column<=0){this.moveCursorTo(row,0);this.moveCursorLeft();if(row>0)this.moveCursorWordLeft();return;}if(this.session.tokenRe.exec(leftOfCursor)){column-=this.session.tokenRe.lastIndex;this.session.tokenRe.lastIndex=0;}this.moveCursorTo(row,column);};this.$shortWordEndIndex=function(rightOfCursor){var index=0,ch;var whitespaceRe=/\s/;var tokenRe=this.session.tokenRe;tokenRe.lastIndex=0;if(this.session.tokenRe.exec(rightOfCursor)){index=this.session.tokenRe.lastIndex;}else{while((ch=rightOfCursor[index])&&whitespaceRe.test(ch)){index++;}if(index<1){tokenRe.lastIndex=0;while((ch=rightOfCursor[index])&&!tokenRe.test(ch)){tokenRe.lastIndex=0;index++;if(whitespaceRe.test(ch)){if(index>2){index--;break;}else{while((ch=rightOfCursor[index])&&whitespaceRe.test(ch)){index++;}if(index>2)break;}}}}}tokenRe.lastIndex=0;return index;};this.moveCursorShortWordRight=function(){var row=this.lead.row;var column=this.lead.column;var line=this.doc.getLine(row);var rightOfCursor=line.substring(column);var fold=this.session.getFoldAt(row,column,1);if(fold)return this.moveCursorTo(fold.end.row,fold.end.column);if(column==line.length){var l=this.doc.getLength();do{row++;rightOfCursor=this.doc.getLine(row);}while(row<l&&/^\s*$/.test(rightOfCursor));if(!/^\s+/.test(rightOfCursor))rightOfCursor="";column=0;}var index=this.$shortWordEndIndex(rightOfCursor);this.moveCursorTo(row,column+index);};this.moveCursorShortWordLeft=function(){var row=this.lead.row;var column=this.lead.column;var fold;if(fold=this.session.getFoldAt(row,column,-1))return this.moveCursorTo(fold.start.row,fold.start.column);var line=this.session.getLine(row).substring(0,column);if(column===0){do{row--;line=this.doc.getLine(row);}while(row>0&&/^\s*$/.test(line));column=line.length;if(!/\s+$/.test(line))line="";}var leftOfCursor=lang.stringReverse(line);var index=this.$shortWordEndIndex(leftOfCursor);return this.moveCursorTo(row,column-index);};this.moveCursorWordRight=function(){if(this.session.$selectLongWords)this.moveCursorLongWordRight();else this.moveCursorShortWordRight();};this.moveCursorWordLeft=function(){if(this.session.$selectLongWords)this.moveCursorLongWordLeft();else this.moveCursorShortWordLeft();};this.moveCursorBy=function(rows,chars){var screenPos=this.session.documentToScreenPosition(this.lead.row,this.lead.column);var offsetX;if(chars===0){if(rows!==0){if(this.session.$bidiHandler.isBidiRow(screenPos.row,this.lead.row)){offsetX=this.session.$bidiHandler.getPosLeft(screenPos.column);screenPos.column=Math.round(offsetX/this.session.$bidiHandler.charWidths[0]);}else{offsetX=screenPos.column*this.session.$bidiHandler.charWidths[0];}}if(this.$desiredColumn)screenPos.column=this.$desiredColumn;else this.$desiredColumn=screenPos.column;}if(rows!=0&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var widget=this.session.lineWidgets[this.lead.row];if(rows<0)rows-=widget.rowsAbove||0;else if(rows>0)rows+=widget.rowCount-(widget.rowsAbove||0);}var docPos=this.session.screenToDocumentPosition(screenPos.row+rows,screenPos.column,offsetX);if(rows!==0&&chars===0&&docPos.row===this.lead.row&&docPos.column===this.lead.column){}this.moveCursorTo(docPos.row,docPos.column+chars,chars===0);};this.moveCursorToPosition=function(position){this.moveCursorTo(position.row,position.column);};this.moveCursorTo=function(row,column,keepDesiredColumn){var fold=this.session.getFoldAt(row,column,1);if(fold){row=fold.start.row;column=fold.start.column;}this.$keepDesiredColumnOnChange=true;var line=this.session.getLine(row);if(/[\uDC00-\uDFFF]/.test(line.charAt(column))&&line.charAt(column-1)){if(this.lead.row==row&&this.lead.column==column+1)column=column-1;else column=column+1;}this.lead.setPosition(row,column);this.$keepDesiredColumnOnChange=false;if(!keepDesiredColumn)this.$desiredColumn=null;};this.moveCursorToScreen=function(row,column,keepDesiredColumn){var pos=this.session.screenToDocumentPosition(row,column);this.moveCursorTo(pos.row,pos.column,keepDesiredColumn);};this.detach=function(){this.lead.detach();this.anchor.detach();this.session=this.doc=null;};this.fromOrientedRange=function(range){this.setSelectionRange(range,range.cursor==range.start);this.$desiredColumn=range.desiredColumn||this.$desiredColumn;};this.toOrientedRange=function(range){var r=this.getRange();if(range){range.start.column=r.start.column;range.start.row=r.start.row;range.end.column=r.end.column;range.end.row=r.end.row;}else{range=r;}range.cursor=this.isBackwards()?range.start:range.end;range.desiredColumn=this.$desiredColumn;return range;};this.getRangeOfMovements=function(func){var start=this.getCursor();try{func(this);var end=this.getCursor();return Range.fromPoints(start,end);}catch(e){return Range.fromPoints(start,start);}finally{this.moveCursorToPosition(start);}};this.toJSON=function(){if(this.rangeCount){var data=this.ranges.map(function(r){var r1=r.clone();r1.isBackwards=r.cursor==r.start;return r1;});}else{var data=this.getRange();data.isBackwards=this.isBackwards();}return data;};this.fromJSON=function(data){if(data.start==undefined){if(this.rangeList&&data.length>1){this.toSingleRange(data[0]);for(var i=data.length;i--;){var r=Range.fromPoints(data[i].start,data[i].end);if(data[i].isBackwards)r.cursor=r.start;this.addRange(r,true);}return;}else{data=data[0];}}if(this.rangeList)this.toSingleRange(data);this.setSelectionRange(data,data.isBackwards);};this.isEqual=function(data){if((data.length||this.rangeCount)&&data.length!=this.rangeCount)return false;if(!data.length||!this.ranges)return this.getRange().isEqual(data);for(var i=this.ranges.length;i--;){if(!this.ranges[i].isEqual(data[i]))return false;}return true;};}).call(Selection.prototype);exports.Selection=Selection;});ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(require,exports,module){"use strict";var config=require("./config");var MAX_TOKEN_COUNT=2000;var Tokenizer=function Tokenizer(rules){this.states=rules;this.regExps={};this.matchMappings={};for(var key in this.states){var state=this.states[key];var ruleRegExps=[];var matchTotal=0;var mapping=this.matchMappings[key]={defaultToken:"text"};var flag="g";var splitterRurles=[];for(var i=0;i<state.length;i++){var rule=state[i];if(rule.defaultToken)mapping.defaultToken=rule.defaultToken;if(rule.caseInsensitive)flag="gi";if(rule.regex==null)continue;if(rule.regex instanceof RegExp)rule.regex=rule.regex.toString().slice(1,-1);var adjustedregex=rule.regex;var matchcount=new RegExp("(?:("+adjustedregex+")|(.))").exec("a").length-2;if(Array.isArray(rule.token)){if(rule.token.length==1||matchcount==1){rule.token=rule.token[0];}else if(matchcount-1!=rule.token.length){this.reportError("number of classes and regexp groups doesn't match",{rule:rule,groupCount:matchcount-1});rule.token=rule.token[0];}else{rule.tokenArray=rule.token;rule.token=null;rule.onMatch=this.$arrayTokens;}}else if(typeof rule.token=="function"&&!rule.onMatch){if(matchcount>1)rule.onMatch=this.$applyToken;else rule.onMatch=rule.token;}if(matchcount>1){if(/\\\d/.test(rule.regex)){adjustedregex=rule.regex.replace(/\\([0-9]+)/g,function(match,digit){return"\\"+(parseInt(digit,10)+matchTotal+1);});}else{matchcount=1;adjustedregex=this.removeCapturingGroups(rule.regex);}if(!rule.splitRegex&&typeof rule.token!="string")splitterRurles.push(rule);// flag will be known only at the very end
}mapping[matchTotal]=i;matchTotal+=matchcount;ruleRegExps.push(adjustedregex);if(!rule.onMatch)rule.onMatch=null;}if(!ruleRegExps.length){mapping[0]=0;ruleRegExps.push("$");}splitterRurles.forEach(function(rule){rule.splitRegex=this.createSplitterRegexp(rule.regex,flag);},this);this.regExps[key]=new RegExp("("+ruleRegExps.join(")|(")+")|($)",flag);}};(function(){this.$setMaxTokenCount=function(m){MAX_TOKEN_COUNT=m|0;};this.$applyToken=function(str){var values=this.splitRegex.exec(str).slice(1);var types=this.token.apply(this,values);if(typeof types==="string")return[{type:types,value:str}];var tokens=[];for(var i=0,l=types.length;i<l;i++){if(values[i])tokens[tokens.length]={type:types[i],value:values[i]};}return tokens;};this.$arrayTokens=function(str){if(!str)return[];var values=this.splitRegex.exec(str);if(!values)return"text";var tokens=[];var types=this.tokenArray;for(var i=0,l=types.length;i<l;i++){if(values[i+1])tokens[tokens.length]={type:types[i],value:values[i+1]};}return tokens;};this.removeCapturingGroups=function(src){var r=src.replace(/\\.|\[(?:\\.|[^\\\]])*|\(\?[:=!]|(\()/g,function(x,y){return y?"(?:":x;});return r;};this.createSplitterRegexp=function(src,flag){if(src.indexOf("(?=")!=-1){var stack=0;var inChClass=false;var lastCapture={};src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(m,esc,parenOpen,parenClose,square,index){if(inChClass){inChClass=square!="]";}else if(square){inChClass=true;}else if(parenClose){if(stack==lastCapture.stack){lastCapture.end=index+1;lastCapture.stack=-1;}stack--;}else if(parenOpen){stack++;if(parenOpen.length!=1){lastCapture.stack=stack;lastCapture.start=index;}}return m;});if(lastCapture.end!=null&&/^\)*$/.test(src.substr(lastCapture.end)))src=src.substring(0,lastCapture.start)+src.substr(lastCapture.end);}if(src.charAt(0)!="^")src="^"+src;if(src.charAt(src.length-1)!="$")src+="$";return new RegExp(src,(flag||"").replace("g",""));};this.getLineTokens=function(line,startState){if(startState&&typeof startState!="string"){var stack=startState.slice(0);startState=stack[0];if(startState==="#tmp"){stack.shift();startState=stack.shift();}}else var stack=[];var currentState=startState||"start";var state=this.states[currentState];if(!state){currentState="start";state=this.states[currentState];}var mapping=this.matchMappings[currentState];var re=this.regExps[currentState];re.lastIndex=0;var match,tokens=[];var lastIndex=0;var matchAttempts=0;var token={type:null,value:""};while(match=re.exec(line)){var type=mapping.defaultToken;var rule=null;var value=match[0];var index=re.lastIndex;if(index-value.length>lastIndex){var skipped=line.substring(lastIndex,index-value.length);if(token.type==type){token.value+=skipped;}else{if(token.type)tokens.push(token);token={type:type,value:skipped};}}for(var i=0;i<match.length-2;i++){if(match[i+1]===undefined)continue;rule=state[mapping[i]];if(rule.onMatch)type=rule.onMatch(value,currentState,stack,line);else type=rule.token;if(rule.next){if(typeof rule.next=="string"){currentState=rule.next;}else{currentState=rule.next(currentState,stack);}state=this.states[currentState];if(!state){this.reportError("state doesn't exist",currentState);currentState="start";state=this.states[currentState];}mapping=this.matchMappings[currentState];lastIndex=index;re=this.regExps[currentState];re.lastIndex=index;}if(rule.consumeLineEnd)lastIndex=index;break;}if(value){if(typeof type==="string"){if((!rule||rule.merge!==false)&&token.type===type){token.value+=value;}else{if(token.type)tokens.push(token);token={type:type,value:value};}}else if(type){if(token.type)tokens.push(token);token={type:null,value:""};for(var i=0;i<type.length;i++){tokens.push(type[i]);}}}if(lastIndex==line.length)break;lastIndex=index;if(matchAttempts++>MAX_TOKEN_COUNT){if(matchAttempts>2*line.length){this.reportError("infinite loop with in ace tokenizer",{startState:startState,line:line});}while(lastIndex<line.length){if(token.type)tokens.push(token);token={value:line.substring(lastIndex,lastIndex+=500),type:"overflow"};}currentState="start";stack=[];break;}}if(token.type)tokens.push(token);if(stack.length>1){if(stack[0]!==currentState)stack.unshift("#tmp",currentState);}return{tokens:tokens,state:stack.length?stack:currentState};};this.reportError=config.reportError;}).call(Tokenizer.prototype);exports.Tokenizer=Tokenizer;});ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(require,exports,module){"use strict";var lang=require("../lib/lang");var TextHighlightRules=function TextHighlightRules(){this.$rules={"start":[{token:"empty_line",regex:'^$'},{defaultToken:"text"}]};};(function(){this.addRules=function(rules,prefix){if(!prefix){for(var key in rules){this.$rules[key]=rules[key];}return;}for(var key in rules){var state=rules[key];for(var i=0;i<state.length;i++){var rule=state[i];if(rule.next||rule.onMatch){if(typeof rule.next=="string"){if(rule.next.indexOf(prefix)!==0)rule.next=prefix+rule.next;}if(rule.nextState&&rule.nextState.indexOf(prefix)!==0)rule.nextState=prefix+rule.nextState;}}this.$rules[prefix+key]=state;}};this.getRules=function(){return this.$rules;};this.embedRules=function(HighlightRules,prefix,escapeRules,states,append){var embedRules=typeof HighlightRules=="function"?new HighlightRules().getRules():HighlightRules;if(states){for(var i=0;i<states.length;i++){states[i]=prefix+states[i];}}else{states=[];for(var key in embedRules){states.push(prefix+key);}}this.addRules(embedRules,prefix);if(escapeRules){var addRules=Array.prototype[append?"push":"unshift"];for(var i=0;i<states.length;i++){addRules.apply(this.$rules[states[i]],lang.deepCopy(escapeRules));}}if(!this.$embeds)this.$embeds=[];this.$embeds.push(prefix);};this.getEmbeds=function(){return this.$embeds;};var pushState=function pushState(currentState,stack){if(currentState!="start"||stack.length)stack.unshift(this.nextState,currentState);return this.nextState;};var popState=function popState(currentState,stack){stack.shift();return stack.shift()||"start";};this.normalizeRules=function(){var id=0;var rules=this.$rules;function processState(key){var state=rules[key];state.processed=true;for(var i=0;i<state.length;i++){var rule=state[i];var toInsert=null;if(Array.isArray(rule)){toInsert=rule;rule={};}if(!rule.regex&&rule.start){rule.regex=rule.start;if(!rule.next)rule.next=[];rule.next.push({defaultToken:rule.token},{token:rule.token+".end",regex:rule.end||rule.start,next:"pop"});rule.token=rule.token+".start";rule.push=true;}var next=rule.next||rule.push;if(next&&Array.isArray(next)){var stateName=rule.stateName;if(!stateName){stateName=rule.token;if(typeof stateName!="string")stateName=stateName[0]||"";if(rules[stateName])stateName+=id++;}rules[stateName]=next;rule.next=stateName;processState(stateName);}else if(next=="pop"){rule.next=popState;}if(rule.push){rule.nextState=rule.next||rule.push;rule.next=pushState;delete rule.push;}if(rule.rules){for(var r in rule.rules){if(rules[r]){if(rules[r].push)rules[r].push.apply(rules[r],rule.rules[r]);}else{rules[r]=rule.rules[r];}}}var includeName=typeof rule=="string"?rule:rule.include;if(includeName){if(Array.isArray(includeName))toInsert=includeName.map(function(x){return rules[x];});else toInsert=rules[includeName];}if(toInsert){var args=[i,1].concat(toInsert);if(rule.noEscape)args=args.filter(function(x){return!x.next;});state.splice.apply(state,args);i--;}if(rule.keywordMap){rule.token=this.createKeywordMapper(rule.keywordMap,rule.defaultToken||"text",rule.caseInsensitive);delete rule.defaultToken;}}}Object.keys(rules).forEach(processState,this);};this.createKeywordMapper=function(map,defaultToken,ignoreCase,splitChar){var keywords=Object.create(null);this.$keywordList=[];Object.keys(map).forEach(function(className){var a=map[className];var list=a.split(splitChar||"|");for(var i=list.length;i--;){var word=list[i];this.$keywordList.push(word);if(ignoreCase)word=word.toLowerCase();keywords[word]=className;}},this);map=null;return ignoreCase?function(value){return keywords[value.toLowerCase()]||defaultToken;}:function(value){return keywords[value]||defaultToken;};};this.getKeywords=function(){return this.$keywords;};}).call(TextHighlightRules.prototype);exports.TextHighlightRules=TextHighlightRules;});ace.define("ace/mode/behaviour",["require","exports","module"],function(require,exports,module){"use strict";var Behaviour=function Behaviour(){this.$behaviours={};};(function(){this.add=function(name,action,callback){switch(undefined){case this.$behaviours:this.$behaviours={};case this.$behaviours[name]:this.$behaviours[name]={};}this.$behaviours[name][action]=callback;};this.addBehaviours=function(behaviours){for(var key in behaviours){for(var action in behaviours[key]){this.add(key,action,behaviours[key][action]);}}};this.remove=function(name){if(this.$behaviours&&this.$behaviours[name]){delete this.$behaviours[name];}};this.inherit=function(mode,filter){if(typeof mode==="function"){var behaviours=new mode().getBehaviours(filter);}else{var behaviours=mode.getBehaviours(filter);}this.addBehaviours(behaviours);};this.getBehaviours=function(filter){if(!filter){return this.$behaviours;}else{var ret={};for(var i=0;i<filter.length;i++){if(this.$behaviours[filter[i]]){ret[filter[i]]=this.$behaviours[filter[i]];}}return ret;}};}).call(Behaviour.prototype);exports.Behaviour=Behaviour;});ace.define("ace/token_iterator",["require","exports","module","ace/range"],function(require,exports,module){"use strict";var Range=require("./range").Range;var TokenIterator=function TokenIterator(session,initialRow,initialColumn){this.$session=session;this.$row=initialRow;this.$rowTokens=session.getTokens(initialRow);var token=session.getTokenAt(initialRow,initialColumn);this.$tokenIndex=token?token.index:-1;};(function(){this.stepBackward=function(){this.$tokenIndex-=1;while(this.$tokenIndex<0){this.$row-=1;if(this.$row<0){this.$row=0;return null;}this.$rowTokens=this.$session.getTokens(this.$row);this.$tokenIndex=this.$rowTokens.length-1;}return this.$rowTokens[this.$tokenIndex];};this.stepForward=function(){this.$tokenIndex+=1;var rowCount;while(this.$tokenIndex>=this.$rowTokens.length){this.$row+=1;if(!rowCount)rowCount=this.$session.getLength();if(this.$row>=rowCount){this.$row=rowCount-1;return null;}this.$rowTokens=this.$session.getTokens(this.$row);this.$tokenIndex=0;}return this.$rowTokens[this.$tokenIndex];};this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex];};this.getCurrentTokenRow=function(){return this.$row;};this.getCurrentTokenColumn=function(){var rowTokens=this.$rowTokens;var tokenIndex=this.$tokenIndex;var column=rowTokens[tokenIndex].start;if(column!==undefined)return column;column=0;while(tokenIndex>0){tokenIndex-=1;column+=rowTokens[tokenIndex].value.length;}return column;};this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()};};this.getCurrentTokenRange=function(){var token=this.$rowTokens[this.$tokenIndex];var column=this.getCurrentTokenColumn();return new Range(this.$row,column,this.$row,column+token.value.length);};}).call(TokenIterator.prototype);exports.TokenIterator=TokenIterator;});ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(require,exports,module){"use strict";var oop=require("../../lib/oop");var Behaviour=require("../behaviour").Behaviour;var TokenIterator=require("../../token_iterator").TokenIterator;var lang=require("../../lib/lang");var SAFE_INSERT_IN_TOKENS=["text","paren.rparen","rparen","paren","punctuation.operator"];var SAFE_INSERT_BEFORE_TOKENS=["text","paren.rparen","rparen","paren","punctuation.operator","comment"];var context;var contextCache={};var defaultQuotes={'"':'"',"'":"'"};var initContext=function initContext(editor){var id=-1;if(editor.multiSelect){id=editor.selection.index;if(contextCache.rangeCount!=editor.multiSelect.rangeCount)contextCache={rangeCount:editor.multiSelect.rangeCount};}if(contextCache[id])return context=contextCache[id];context=contextCache[id]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""};};var getWrapped=function getWrapped(selection,selected,opening,closing){var rowDiff=selection.end.row-selection.start.row;return{text:opening+selected+closing,selection:[0,selection.start.column+1,rowDiff,selection.end.column+(rowDiff?0:1)]};};var CstyleBehaviour=function CstyleBehaviour(options){this.add("braces","insertion",function(state,action,editor,session,text){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(text=='{'){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&selected!=="{"&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'{','}');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){if(/[\]\}\)]/.test(line[cursor.column])||editor.inMultiSelectMode||options&&options.braces){CstyleBehaviour.recordAutoInsert(editor,session,"}");return{text:'{}',selection:[1,1]};}else{CstyleBehaviour.recordMaybeInsert(editor,session,"{");return{text:'{',selection:[1,1]};}}}else if(text=='}'){initContext(editor);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar=='}'){var matching=session.$findOpeningBracket('}',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}else if(text=="\n"||text=="\r\n"){initContext(editor);var closing="";if(CstyleBehaviour.isMaybeInsertedClosing(cursor,line)){closing=lang.stringRepeat("}",context.maybeInsertedBrackets);CstyleBehaviour.clearMaybeInsertedClosing();}var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==='}'){var openBracePos=session.findMatchingBracket({row:cursor.row,column:cursor.column+1},'}');if(!openBracePos)return null;var next_indent=this.$getIndent(session.getLine(openBracePos.row));}else if(closing){var next_indent=this.$getIndent(line);}else{CstyleBehaviour.clearMaybeInsertedClosing();return;}var indent=next_indent+session.getTabString();return{text:'\n'+indent+'\n'+next_indent+closing,selection:[1,indent.length,1,indent.length]};}else{CstyleBehaviour.clearMaybeInsertedClosing();}});this.add("braces","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='{'){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.end.column,range.end.column+1);if(rightChar=='}'){range.end.column++;return range;}else{context.maybeInsertedBrackets--;}}});this.add("parens","insertion",function(state,action,editor,session,text){if(text=='('){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'(',')');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,")");return{text:'()',selection:[1,1]};}}else if(text==')'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==')'){var matching=session.$findOpeningBracket(')',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("parens","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='('){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==')'){range.end.column++;return range;}}});this.add("brackets","insertion",function(state,action,editor,session,text){if(text=='['){initContext(editor);var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,'[',']');}else if(CstyleBehaviour.isSaneInsertion(editor,session)){CstyleBehaviour.recordAutoInsert(editor,session,"]");return{text:'[]',selection:[1,1]};}}else if(text==']'){initContext(editor);var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==']'){var matching=session.$findOpeningBracket(']',{column:cursor.column+1,row:cursor.row});if(matching!==null&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text)){CstyleBehaviour.popAutoInsertedClosing();return{text:'',selection:[1,1]};}}}});this.add("brackets","deletion",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&selected=='['){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==']'){range.end.column++;return range;}}});this.add("string_dquotes","insertion",function(state,action,editor,session,text){var quotes=session.$mode.$quotes||defaultQuotes;if(text.length==1&&quotes[text]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(text)!=-1)return;initContext(editor);var quote=text;var selection=editor.getSelectionRange();var selected=session.doc.getTextRange(selection);if(selected!==""&&(selected.length!=1||!quotes[selected])&&editor.getWrapBehavioursEnabled()){return getWrapped(selection,selected,quote,quote);}else if(!selected){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);var leftChar=line.substring(cursor.column-1,cursor.column);var rightChar=line.substring(cursor.column,cursor.column+1);var token=session.getTokenAt(cursor.row,cursor.column);var rightToken=session.getTokenAt(cursor.row,cursor.column+1);if(leftChar=="\\"&&token&&/escape/.test(token.type))return null;var stringBefore=token&&/string|escape/.test(token.type);var stringAfter=!rightToken||/string|escape/.test(rightToken.type);var pair;if(rightChar==quote){pair=stringBefore!==stringAfter;if(pair&&/string\.end/.test(rightToken.type))pair=false;}else{if(stringBefore&&!stringAfter)return null;// wrap string with different quote
if(stringBefore&&stringAfter)return null;// do not pair quotes inside strings
var wordRe=session.$mode.tokenRe;wordRe.lastIndex=0;var isWordBefore=wordRe.test(leftChar);wordRe.lastIndex=0;var isWordAfter=wordRe.test(leftChar);if(isWordBefore||isWordAfter)return null;// before or after alphanumeric
if(rightChar&&!/[\s;,.})\]\\]/.test(rightChar))return null;// there is rightChar and it isn't closing
var charBefore=line[cursor.column-2];if(leftChar==quote&&(charBefore==quote||wordRe.test(charBefore)))return null;pair=true;}return{text:pair?quote+quote:"",selection:[1,1]};}}});this.add("string_dquotes","deletion",function(state,action,editor,session,range){var quotes=session.$mode.$quotes||defaultQuotes;var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&quotes.hasOwnProperty(selected)){initContext(editor);var line=session.doc.getLine(range.start.row);var rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected){range.end.column++;return range;}}});};CstyleBehaviour.isSaneInsertion=function(editor,session){var cursor=editor.getCursorPosition();var iterator=new TokenIterator(session,cursor.row,cursor.column);if(!this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS)){if(/[)}\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))return true;var iterator2=new TokenIterator(session,cursor.row,cursor.column+1);if(!this.$matchTokenType(iterator2.getCurrentToken()||"text",SAFE_INSERT_IN_TOKENS))return false;}iterator.stepForward();return iterator.getCurrentTokenRow()!==cursor.row||this.$matchTokenType(iterator.getCurrentToken()||"text",SAFE_INSERT_BEFORE_TOKENS);};CstyleBehaviour.$matchTokenType=function(token,types){return types.indexOf(token.type||token)>-1;};CstyleBehaviour.recordAutoInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isAutoInsertedClosing(cursor,line,context.autoInsertedLineEnd[0]))context.autoInsertedBrackets=0;context.autoInsertedRow=cursor.row;context.autoInsertedLineEnd=bracket+line.substr(cursor.column);context.autoInsertedBrackets++;};CstyleBehaviour.recordMaybeInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition();var line=session.doc.getLine(cursor.row);if(!this.isMaybeInsertedClosing(cursor,line))context.maybeInsertedBrackets=0;context.maybeInsertedRow=cursor.row;context.maybeInsertedLineStart=line.substr(0,cursor.column)+bracket;context.maybeInsertedLineEnd=line.substr(cursor.column);context.maybeInsertedBrackets++;};CstyleBehaviour.isAutoInsertedClosing=function(cursor,line,bracket){return context.autoInsertedBrackets>0&&cursor.row===context.autoInsertedRow&&bracket===context.autoInsertedLineEnd[0]&&line.substr(cursor.column)===context.autoInsertedLineEnd;};CstyleBehaviour.isMaybeInsertedClosing=function(cursor,line){return context.maybeInsertedBrackets>0&&cursor.row===context.maybeInsertedRow&&line.substr(cursor.column)===context.maybeInsertedLineEnd&&line.substr(0,cursor.column)==context.maybeInsertedLineStart;};CstyleBehaviour.popAutoInsertedClosing=function(){context.autoInsertedLineEnd=context.autoInsertedLineEnd.substr(1);context.autoInsertedBrackets--;};CstyleBehaviour.clearMaybeInsertedClosing=function(){if(context){context.maybeInsertedBrackets=0;context.maybeInsertedRow=-1;}};oop.inherits(CstyleBehaviour,Behaviour);exports.CstyleBehaviour=CstyleBehaviour;});ace.define("ace/unicode",["require","exports","module"],function(require,exports,module){"use strict";var wordChars=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2];var code=0;var str=[];for(var i=0;i<wordChars.length;i+=2){str.push(code+=wordChars[i]);if(wordChars[i+1])str.push(45,code+=wordChars[i+1]);}exports.wordChars=String.fromCharCode.apply(null,str);});ace.define("ace/mode/text",["require","exports","module","ace/config","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(require,exports,module){"use strict";var config=require("../config");var Tokenizer=require("../tokenizer").Tokenizer;var TextHighlightRules=require("./text_highlight_rules").TextHighlightRules;var CstyleBehaviour=require("./behaviour/cstyle").CstyleBehaviour;var unicode=require("../unicode");var lang=require("../lib/lang");var TokenIterator=require("../token_iterator").TokenIterator;var Range=require("../range").Range;var Mode=function Mode(){this.HighlightRules=TextHighlightRules;};(function(){this.$defaultBehaviour=new CstyleBehaviour();this.tokenRe=new RegExp("^["+unicode.wordChars+"\\$_]+","g");this.nonTokenRe=new RegExp("^(?:[^"+unicode.wordChars+"\\$_]|\\s])+","g");this.getTokenizer=function(){if(!this.$tokenizer){this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig);this.$tokenizer=new Tokenizer(this.$highlightRules.getRules());}return this.$tokenizer;};this.lineCommentStart="";this.blockComment="";this.toggleCommentLines=function(state,session,startRow,endRow){var doc=session.doc;var ignoreBlankLines=true;var shouldRemove=true;var minIndent=Infinity;var tabSize=session.getTabSize();var insertAtTabStop=false;if(!this.lineCommentStart){if(!this.blockComment)return false;var lineCommentStart=this.blockComment.start;var lineCommentEnd=this.blockComment.end;var regexpStart=new RegExp("^(\\s*)(?:"+lang.escapeRegExp(lineCommentStart)+")");var regexpEnd=new RegExp("(?:"+lang.escapeRegExp(lineCommentEnd)+")\\s*$");var comment=function comment(line,i){if(testRemove(line,i))return;if(!ignoreBlankLines||/\S/.test(line)){doc.insertInLine({row:i,column:line.length},lineCommentEnd);doc.insertInLine({row:i,column:minIndent},lineCommentStart);}};var uncomment=function uncomment(line,i){var m;if(m=line.match(regexpEnd))doc.removeInLine(i,line.length-m[0].length,line.length);if(m=line.match(regexpStart))doc.removeInLine(i,m[1].length,m[0].length);};var testRemove=function testRemove(line,row){if(regexpStart.test(line))return true;var tokens=session.getTokens(row);for(var i=0;i<tokens.length;i++){if(tokens[i].type==="comment")return true;}};}else{if(Array.isArray(this.lineCommentStart)){var regexpStart=this.lineCommentStart.map(lang.escapeRegExp).join("|");var lineCommentStart=this.lineCommentStart[0];}else{var regexpStart=lang.escapeRegExp(this.lineCommentStart);var lineCommentStart=this.lineCommentStart;}regexpStart=new RegExp("^(\\s*)(?:"+regexpStart+") ?");insertAtTabStop=session.getUseSoftTabs();var uncomment=function uncomment(line,i){var m=line.match(regexpStart);if(!m)return;var start=m[1].length,end=m[0].length;if(!shouldInsertSpace(line,start,end)&&m[0][end-1]==" ")end--;doc.removeInLine(i,start,end);};var commentWithSpace=lineCommentStart+" ";var comment=function comment(line,i){if(!ignoreBlankLines||/\S/.test(line)){if(shouldInsertSpace(line,minIndent,minIndent))doc.insertInLine({row:i,column:minIndent},commentWithSpace);else doc.insertInLine({row:i,column:minIndent},lineCommentStart);}};var testRemove=function testRemove(line,i){return regexpStart.test(line);};var shouldInsertSpace=function shouldInsertSpace(line,before,after){var spaces=0;while(before--&&line.charAt(before)==" "){spaces++;}if(spaces%tabSize!=0)return false;var spaces=0;while(line.charAt(after++)==" "){spaces++;}if(tabSize>2)return spaces%tabSize!=tabSize-1;else return spaces%tabSize==0;};}function iter(fun){for(var i=startRow;i<=endRow;i++){fun(doc.getLine(i),i);}}var minEmptyLength=Infinity;iter(function(line,i){var indent=line.search(/\S/);if(indent!==-1){if(indent<minIndent)minIndent=indent;if(shouldRemove&&!testRemove(line,i))shouldRemove=false;}else if(minEmptyLength>line.length){minEmptyLength=line.length;}});if(minIndent==Infinity){minIndent=minEmptyLength;ignoreBlankLines=false;shouldRemove=false;}if(insertAtTabStop&&minIndent%tabSize!=0)minIndent=Math.floor(minIndent/tabSize)*tabSize;iter(shouldRemove?uncomment:comment);};this.toggleBlockComment=function(state,session,range,cursor){var comment=this.blockComment;if(!comment)return;if(!comment.start&&comment[0])comment=comment[0];var iterator=new TokenIterator(session,cursor.row,cursor.column);var token=iterator.getCurrentToken();var sel=session.selection;var initialRange=session.selection.toOrientedRange();var startRow,colDiff;if(token&&/comment/.test(token.type)){var startRange,endRange;while(token&&/comment/.test(token.type)){var i=token.value.indexOf(comment.start);if(i!=-1){var row=iterator.getCurrentTokenRow();var column=iterator.getCurrentTokenColumn()+i;startRange=new Range(row,column,row,column+comment.start.length);break;}token=iterator.stepBackward();}var iterator=new TokenIterator(session,cursor.row,cursor.column);var token=iterator.getCurrentToken();while(token&&/comment/.test(token.type)){var i=token.value.indexOf(comment.end);if(i!=-1){var row=iterator.getCurrentTokenRow();var column=iterator.getCurrentTokenColumn()+i;endRange=new Range(row,column,row,column+comment.end.length);break;}token=iterator.stepForward();}if(endRange)session.remove(endRange);if(startRange){session.remove(startRange);startRow=startRange.start.row;colDiff=-comment.start.length;}}else{colDiff=comment.start.length;startRow=range.start.row;session.insert(range.end,comment.end);session.insert(range.start,comment.start);}if(initialRange.start.row==startRow)initialRange.start.column+=colDiff;if(initialRange.end.row==startRow)initialRange.end.column+=colDiff;session.selection.fromOrientedRange(initialRange);};this.getNextLineIndent=function(state,line,tab){return this.$getIndent(line);};this.checkOutdent=function(state,line,input){return false;};this.autoOutdent=function(state,doc,row){};this.$getIndent=function(line){return line.match(/^\s*/)[0];};this.createWorker=function(session){return null;};this.createModeDelegates=function(mapping){this.$embeds=[];this.$modes={};for(var i in mapping){if(mapping[i]){var Mode=mapping[i];var id=Mode.prototype.$id;var mode=config.$modes[id];if(!mode)config.$modes[id]=mode=new Mode();if(!config.$modes[i])config.$modes[i]=mode;this.$embeds.push(i);this.$modes[i]=mode;}}var delegations=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var i=0;i<delegations.length;i++){(function(scope){var functionName=delegations[i];var defaultHandler=scope[functionName];scope[delegations[i]]=function(){return this.$delegator(functionName,arguments,defaultHandler);};})(this);}};this.$delegator=function(method,args,defaultHandler){var state=args[0]||"start";if(typeof state!="string"){if(Array.isArray(state[2])){var language=state[2][state[2].length-1];var mode=this.$modes[language];if(mode)return mode[method].apply(mode,[state[1]].concat([].slice.call(args,1)));}state=state[0]||"start";}for(var i=0;i<this.$embeds.length;i++){if(!this.$modes[this.$embeds[i]])continue;var split=state.split(this.$embeds[i]);if(!split[0]&&split[1]){args[0]=split[1];var mode=this.$modes[this.$embeds[i]];return mode[method].apply(mode,args);}}var ret=defaultHandler.apply(this,args);return defaultHandler?ret:undefined;};this.transformAction=function(state,action,editor,session,param){if(this.$behaviour){var behaviours=this.$behaviour.getBehaviours();for(var key in behaviours){if(behaviours[key][action]){var ret=behaviours[key][action].apply(this,arguments);if(ret){return ret;}}}}};this.getKeywords=function(append){if(!this.completionKeywords){var rules=this.$tokenizer.rules;var completionKeywords=[];for(var rule in rules){var ruleItr=rules[rule];for(var r=0,l=ruleItr.length;r<l;r++){if(typeof ruleItr[r].token==="string"){if(/keyword|support|storage/.test(ruleItr[r].token))completionKeywords.push(ruleItr[r].regex);}else if(_typeof(ruleItr[r].token)==="object"){for(var a=0,aLength=ruleItr[r].token.length;a<aLength;a++){if(/keyword|support|storage/.test(ruleItr[r].token[a])){var rule=ruleItr[r].regex.match(/\(.+?\)/g)[a];completionKeywords.push(rule.substr(1,rule.length-2));}}}}}this.completionKeywords=completionKeywords;}if(!append)return this.$keywordList;return completionKeywords.concat(this.$keywordList||[]);};this.$createKeywordList=function(){if(!this.$highlightRules)this.getTokenizer();return this.$keywordList=this.$highlightRules.$keywordList||[];};this.getCompletions=function(state,session,pos,prefix){var keywords=this.$keywordList||this.$createKeywordList();return keywords.map(function(word){return{name:word,value:word,score:0,meta:"keyword"};});};this.$id="ace/mode/text";}).call(Mode.prototype);exports.Mode=Mode;});ace.define("ace/apply_delta",["require","exports","module"],function(require,exports,module){"use strict";function throwDeltaError(delta,errorText){console.log("Invalid Delta:",delta);throw"Invalid Delta: "+errorText;}function positionInDocument(docLines,position){return position.row>=0&&position.row<docLines.length&&position.column>=0&&position.column<=docLines[position.row].length;}function validateDelta(docLines,delta){if(delta.action!="insert"&&delta.action!="remove")throwDeltaError(delta,"delta.action must be 'insert' or 'remove'");if(!(delta.lines instanceof Array))throwDeltaError(delta,"delta.lines must be an Array");if(!delta.start||!delta.end)throwDeltaError(delta,"delta.start/end must be an present");var start=delta.start;if(!positionInDocument(docLines,delta.start))throwDeltaError(delta,"delta.start must be contained in document");var end=delta.end;if(delta.action=="remove"&&!positionInDocument(docLines,end))throwDeltaError(delta,"delta.end must contained in document for 'remove' actions");var numRangeRows=end.row-start.row;var numRangeLastLineChars=end.column-(numRangeRows==0?start.column:0);if(numRangeRows!=delta.lines.length-1||delta.lines[numRangeRows].length!=numRangeLastLineChars)throwDeltaError(delta,"delta.range must match delta lines");}exports.applyDelta=function(docLines,delta,doNotValidate){var row=delta.start.row;var startColumn=delta.start.column;var line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(lines.length===1){docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);}else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args);docLines[row]=line.substring(0,startColumn)+docLines[row];docLines[row+delta.lines.length-1]+=line.substring(startColumn);}break;case"remove":var endColumn=delta.end.column;var endRow=delta.end.row;if(row===endRow){docLines[row]=line.substring(0,startColumn)+line.substring(endColumn);}else{docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn));}break;}};});ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var EventEmitter=require("./lib/event_emitter").EventEmitter;var Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this);this.attach(doc);if(typeof column=="undefined")this.setPosition(row.row,row.column);else this.setPosition(row,column);};(function(){oop.implement(this,EventEmitter);this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column);};this.getDocument=function(){return this.document;};this.$insertRight=false;this.onChange=function(delta){if(delta.start.row==delta.end.row&&delta.start.row!=this.row)return;if(delta.start.row>this.row)return;var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,true);};function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.column<point2.column;return point1.row<point2.row||point1.row==point2.row&&bColIsAfter;}function $getTransformedPoint(delta,point,moveIfEqual){var deltaIsInsert=delta.action=="insert";var deltaRowShift=(deltaIsInsert?1:-1)*(delta.end.row-delta.start.row);var deltaColShift=(deltaIsInsert?1:-1)*(delta.end.column-delta.start.column);var deltaStart=delta.start;var deltaEnd=deltaIsInsert?deltaStart:delta.end;// Collapse insert range.
if($pointsInOrder(point,deltaStart,moveIfEqual)){return{row:point.row,column:point.column};}if($pointsInOrder(deltaEnd,point,!moveIfEqual)){return{row:point.row+deltaRowShift,column:point.column+(point.row==deltaEnd.row?deltaColShift:0)};}return{row:deltaStart.row,column:deltaStart.column};}this.setPosition=function(row,column,noClip){var pos;if(noClip){pos={row:row,column:column};}else{pos=this.$clipPositionToDocument(row,column);}if(this.row==pos.row&&this.column==pos.column)return;var old={row:this.row,column:this.column};this.row=pos.row;this.column=pos.column;this._signal("change",{old:old,value:pos});};this.detach=function(){this.document.off("change",this.$onChange);};this.attach=function(doc){this.document=doc||this.document;this.document.on("change",this.$onChange);};this.$clipPositionToDocument=function(row,column){var pos={};if(row>=this.document.getLength()){pos.row=Math.max(0,this.document.getLength()-1);pos.column=this.document.getLine(pos.row).length;}else if(row<0){pos.row=0;pos.column=0;}else{pos.row=row;pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column));}if(column<0)pos.column=0;return pos;};}).call(Anchor.prototype);});ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var applyDelta=require("./apply_delta").applyDelta;var EventEmitter=require("./lib/event_emitter").EventEmitter;var Range=require("./range").Range;var Anchor=require("./anchor").Anchor;var Document=function Document(textOrLines){this.$lines=[""];if(textOrLines.length===0){this.$lines=[""];}else if(Array.isArray(textOrLines)){this.insertMergedLines({row:0,column:0},textOrLines);}else{this.insert({row:0,column:0},textOrLines);}};(function(){oop.implement(this,EventEmitter);this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length));this.insert({row:0,column:0},text);};this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter());};this.createAnchor=function(row,column){return new Anchor(this,row,column);};if("aaa".split(/a/).length===0){this.$split=function(text){return text.replace(/\r\n|\r/g,"\n").split("\n");};}else{this.$split=function(text){return text.split(/\r\n|\r|\n/);};}this.$detectNewLine=function(text){var match=text.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=match?match[1]:"\n";this._signal("changeNewLineMode");};this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n";}};this.$autoNewLine="";this.$newLineMode="auto";this.setNewLineMode=function(newLineMode){if(this.$newLineMode===newLineMode)return;this.$newLineMode=newLineMode;this._signal("changeNewLineMode");};this.getNewLineMode=function(){return this.$newLineMode;};this.isNewLine=function(text){return text=="\r\n"||text=="\r"||text=="\n";};this.getLine=function(row){return this.$lines[row]||"";};this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1);};this.getAllLines=function(){return this.getLines(0,this.getLength());};this.getLength=function(){return this.$lines.length;};this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter());};this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row){lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];}else{lines=this.getLines(range.start.row,range.end.row);lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;if(range.end.row-range.start.row==l)lines[l]=lines[l].substring(0,range.end.column);}return lines;};this.insertLines=function(row,lines){console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead.");return this.insertFullLines(row,lines);};this.removeLines=function(firstRow,lastRow){console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead.");return this.removeFullLines(firstRow,lastRow);};this.insertNewLine=function(position){console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.");return this.insertMergedLines(position,["",""]);};this.insert=function(position,text){if(this.getLength()<=1)this.$detectNewLine(text);return this.insertMergedLines(position,this.$split(text));};this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column);var end=this.pos(position.row,position.column+text.length);this.applyDelta({start:start,end:end,action:"insert",lines:[text]},true);return this.clonePos(end);};this.clippedPos=function(row,column){var length=this.getLength();if(row===undefined){row=length;}else if(row<0){row=0;}else if(row>=length){row=length-1;column=undefined;}var line=this.getLine(row);if(column==undefined)column=line.length;column=Math.min(Math.max(column,0),line.length);return{row:row,column:column};};this.clonePos=function(pos){return{row:pos.row,column:pos.column};};this.pos=function(row,column){return{row:row,column:column};};this.$clipPosition=function(position){var length=this.getLength();if(position.row>=length){position.row=Math.max(0,length-1);position.column=this.getLine(length-1).length;}else{position.row=Math.max(0,position.row);position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length);}return position;};this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;if(row<this.getLength()){lines=lines.concat([""]);column=0;}else{lines=[""].concat(lines);row--;column=this.$lines[row].length;}this.insertMergedLines({row:row,column:column},lines);};this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column);var end={row:start.row+lines.length-1,column:(lines.length==1?start.column:0)+lines[lines.length-1].length};this.applyDelta({start:start,end:end,action:"insert",lines:lines});return this.clonePos(end);};this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column);var end=this.clippedPos(range.end.row,range.end.column);this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})});return this.clonePos(start);};this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn);var end=this.clippedPos(row,endColumn);this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},true);return this.clonePos(start);};this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1);lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0;var deleteLastNewLine=lastRow<this.getLength()-1;var startRow=deleteFirstNewLine?firstRow-1:firstRow;var startCol=deleteFirstNewLine?this.getLine(startRow).length:0;var endRow=deleteLastNewLine?lastRow+1:lastRow;var endCol=deleteLastNewLine?0:this.getLine(endRow).length;var range=new Range(startRow,startCol,endRow,endCol);var deletedLines=this.$lines.slice(firstRow,lastRow+1);this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)});return deletedLines;};this.removeNewLine=function(row){if(row<this.getLength()-1&&row>=0){this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]});}};this.replace=function(range,text){if(!(range instanceof Range))range=Range.fromPoints(range.start,range.end);if(text.length===0&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;if(text){end=this.insert(range.start,text);}else{end=range.start;}return end;};this.applyDeltas=function(deltas){for(var i=0;i<deltas.length;i++){this.applyDelta(deltas[i]);}};this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){this.revertDelta(deltas[i]);}};this.applyDelta=function(delta,doNotValidate){var isInsert=delta.action=="insert";if(isInsert?delta.lines.length<=1&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end)){return;}if(isInsert&&delta.lines.length>20000){this.$splitAndapplyLargeDelta(delta,20000);}else{applyDelta(this.$lines,delta,doNotValidate);this._signal("change",delta);}};this.$safeApplyDelta=function(delta){var docLength=this.$lines.length;if(delta.action=="remove"&&delta.start.row<docLength&&delta.end.row<docLength||delta.action=="insert"&&delta.start.row<=docLength){this.applyDelta(delta);}};this.$splitAndapplyLargeDelta=function(delta,MAX){var lines=delta.lines;var l=lines.length-MAX+1;var row=delta.start.row;var column=delta.start.column;for(var from=0,to=0;from<l;from=to){to+=MAX-1;var chunk=lines.slice(from,to);chunk.push("");this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},true);}delta.lines=lines.slice(from);delta.start.row=row+from;delta.start.column=column;this.applyDelta(delta,true);};this.revertDelta=function(delta){this.$safeApplyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:delta.action=="insert"?"remove":"insert",lines:delta.lines.slice()});};this.indexToPosition=function(index,startRow){var lines=this.$lines||this.getAllLines();var newlineLength=this.getNewLineCharacter().length;for(var i=startRow||0,l=lines.length;i<l;i++){index-=lines[i].length+newlineLength;if(index<0)return{row:i,column:index+lines[i].length+newlineLength};}return{row:l-1,column:index+lines[l-1].length+newlineLength};};this.positionToIndex=function(pos,startRow){var lines=this.$lines||this.getAllLines();var newlineLength=this.getNewLineCharacter().length;var index=0;var row=Math.min(pos.row,lines.length);for(var i=startRow||0;i<row;++i){index+=lines[i].length+newlineLength;}return index+pos.column;};}).call(Document.prototype);exports.Document=Document;});ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var EventEmitter=require("./lib/event_emitter").EventEmitter;var BackgroundTokenizer=function BackgroundTokenizer(tokenizer,editor){this.running=false;this.lines=[];this.states=[];this.currentLine=0;this.tokenizer=tokenizer;var self=this;this.$worker=function(){if(!self.running){return;}var workerStart=new Date();var currentLine=self.currentLine;var endLine=-1;var doc=self.doc;var startLine=currentLine;while(self.lines[currentLine]){currentLine++;}var len=doc.getLength();var processedLines=0;self.running=false;while(currentLine<len){self.$tokenizeRow(currentLine);endLine=currentLine;do{currentLine++;}while(self.lines[currentLine]);processedLines++;if(processedLines%5===0&&new Date()-workerStart>20){self.running=setTimeout(self.$worker,20);break;}}self.currentLine=currentLine;if(endLine==-1)endLine=currentLine;if(startLine<=endLine)self.fireUpdateEvent(startLine,endLine);};};(function(){oop.implement(this,EventEmitter);this.setTokenizer=function(tokenizer){this.tokenizer=tokenizer;this.lines=[];this.states=[];this.start(0);};this.setDocument=function(doc){this.doc=doc;this.lines=[];this.states=[];this.stop();};this.fireUpdateEvent=function(firstRow,lastRow){var data={first:firstRow,last:lastRow};this._signal("update",{data:data});};this.start=function(startRow){this.currentLine=Math.min(startRow||0,this.currentLine,this.doc.getLength());this.lines.splice(this.currentLine,this.lines.length);this.states.splice(this.currentLine,this.states.length);this.stop();this.running=setTimeout(this.$worker,700);};this.scheduleStart=function(){if(!this.running)this.running=setTimeout(this.$worker,700);};this.$updateOnChange=function(delta){var startRow=delta.start.row;var len=delta.end.row-startRow;if(len===0){this.lines[startRow]=null;}else if(delta.action=="remove"){this.lines.splice(startRow,len+1,null);this.states.splice(startRow,len+1,null);}else{var args=Array(len+1);args.unshift(startRow,1);this.lines.splice.apply(this.lines,args);this.states.splice.apply(this.states,args);}this.currentLine=Math.min(startRow,this.currentLine,this.doc.getLength());this.stop();};this.stop=function(){if(this.running)clearTimeout(this.running);this.running=false;};this.getTokens=function(row){return this.lines[row]||this.$tokenizeRow(row);};this.getState=function(row){if(this.currentLine==row)this.$tokenizeRow(row);return this.states[row]||"start";};this.$tokenizeRow=function(row){var line=this.doc.getLine(row);var state=this.states[row-1];var data=this.tokenizer.getLineTokens(line,state,row);if(this.states[row]+""!==data.state+""){this.states[row]=data.state;this.lines[row+1]=null;if(this.currentLine>row+1)this.currentLine=row+1;}else if(this.currentLine==row){this.currentLine=row+1;}return this.lines[row]=data.tokens;};}).call(BackgroundTokenizer.prototype);exports.BackgroundTokenizer=BackgroundTokenizer;});ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(require,exports,module){"use strict";var lang=require("./lib/lang");var oop=require("./lib/oop");var Range=require("./range").Range;var SearchHighlight=function SearchHighlight(regExp,clazz,type){this.setRegexp(regExp);this.clazz=clazz;this.type=type||"text";};(function(){this.MAX_RANGES=500;this.setRegexp=function(regExp){if(this.regExp+""==regExp+"")return;this.regExp=regExp;this.cache=[];};this.update=function(html,markerLayer,session,config){if(!this.regExp)return;var start=config.firstRow,end=config.lastRow;for(var i=start;i<=end;i++){var ranges=this.cache[i];if(ranges==null){ranges=lang.getMatchOffsets(session.getLine(i),this.regExp);if(ranges.length>this.MAX_RANGES)ranges=ranges.slice(0,this.MAX_RANGES);ranges=ranges.map(function(match){return new Range(i,match.offset,i,match.offset+match.length);});this.cache[i]=ranges.length?ranges:"";}for(var j=ranges.length;j--;){markerLayer.drawSingleLineMarker(html,ranges[j].toScreenRange(session),this.clazz,config);}}};}).call(SearchHighlight.prototype);exports.SearchHighlight=SearchHighlight;});ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(require,exports,module){"use strict";var Range=require("../range").Range;function FoldLine(foldData,folds){this.foldData=foldData;if(Array.isArray(folds)){this.folds=folds;}else{folds=this.folds=[folds];}var last=folds[folds.length-1];this.range=new Range(folds[0].start.row,folds[0].start.column,last.end.row,last.end.column);this.start=this.range.start;this.end=this.range.end;this.folds.forEach(function(fold){fold.setFoldLine(this);},this);}(function(){this.shiftRow=function(shift){this.start.row+=shift;this.end.row+=shift;this.folds.forEach(function(fold){fold.start.row+=shift;fold.end.row+=shift;});};this.addFold=function(fold){if(fold.sameRow){if(fold.start.row<this.startRow||fold.endRow>this.endRow){throw new Error("Can't add a fold to this FoldLine as it has no connection");}this.folds.push(fold);this.folds.sort(function(a,b){return-a.range.compareEnd(b.start.row,b.start.column);});if(this.range.compareEnd(fold.start.row,fold.start.column)>0){this.end.row=fold.end.row;this.end.column=fold.end.column;}else if(this.range.compareStart(fold.end.row,fold.end.column)<0){this.start.row=fold.start.row;this.start.column=fold.start.column;}}else if(fold.start.row==this.end.row){this.folds.push(fold);this.end.row=fold.end.row;this.end.column=fold.end.column;}else if(fold.end.row==this.start.row){this.folds.unshift(fold);this.start.row=fold.start.row;this.start.column=fold.start.column;}else{throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");}fold.foldLine=this;};this.containsRow=function(row){return row>=this.start.row&&row<=this.end.row;};this.walk=function(callback,endRow,endColumn){var lastEnd=0,folds=this.folds,fold,cmp,stop,isNewRow=true;if(endRow==null){endRow=this.end.row;endColumn=this.end.column;}for(var i=0;i<folds.length;i++){fold=folds[i];cmp=fold.range.compareStart(endRow,endColumn);if(cmp==-1){callback(null,endRow,endColumn,lastEnd,isNewRow);return;}stop=callback(null,fold.start.row,fold.start.column,lastEnd,isNewRow);stop=!stop&&callback(fold.placeholder,fold.start.row,fold.start.column,lastEnd);if(stop||cmp===0){return;}isNewRow=!fold.sameRow;lastEnd=fold.end.column;}callback(null,endRow,endColumn,lastEnd,isNewRow);};this.getNextFoldTo=function(row,column){var fold,cmp;for(var i=0;i<this.folds.length;i++){fold=this.folds[i];cmp=fold.range.compareEnd(row,column);if(cmp==-1){return{fold:fold,kind:"after"};}else if(cmp===0){return{fold:fold,kind:"inside"};}}return null;};this.addRemoveChars=function(row,column,len){var ret=this.getNextFoldTo(row,column),fold,folds;if(ret){fold=ret.fold;if(ret.kind=="inside"&&fold.start.column!=column&&fold.start.row!=row){window.console&&window.console.log(row,column,fold);}else if(fold.start.row==row){folds=this.folds;var i=folds.indexOf(fold);if(i===0){this.start.column+=len;}for(i;i<folds.length;i++){fold=folds[i];fold.start.column+=len;if(!fold.sameRow){return;}fold.end.column+=len;}this.end.column+=len;}}};this.split=function(row,column){var pos=this.getNextFoldTo(row,column);if(!pos||pos.kind=="inside")return null;var fold=pos.fold;var folds=this.folds;var foldData=this.foldData;var i=folds.indexOf(fold);var foldBefore=folds[i-1];this.end.row=foldBefore.end.row;this.end.column=foldBefore.end.column;folds=folds.splice(i,folds.length-i);var newFoldLine=new FoldLine(foldData,folds);foldData.splice(foldData.indexOf(this)+1,0,newFoldLine);return newFoldLine;};this.merge=function(foldLineNext){var folds=foldLineNext.folds;for(var i=0;i<folds.length;i++){this.addFold(folds[i]);}var foldData=this.foldData;foldData.splice(foldData.indexOf(foldLineNext),1);};this.toString=function(){var ret=[this.range.toString()+": ["];this.folds.forEach(function(fold){ret.push("  "+fold.toString());});ret.push("]");return ret.join("\n");};this.idxToPosition=function(idx){var lastFoldEndColumn=0;for(var i=0;i<this.folds.length;i++){var fold=this.folds[i];idx-=fold.start.column-lastFoldEndColumn;if(idx<0){return{row:fold.start.row,column:fold.start.column+idx};}idx-=fold.placeholder.length;if(idx<0){return fold.start;}lastFoldEndColumn=fold.end.column;}return{row:this.end.row,column:this.end.column+idx};};}).call(FoldLine.prototype);exports.FoldLine=FoldLine;});ace.define("ace/range_list",["require","exports","module","ace/range"],function(require,exports,module){"use strict";var Range=require("./range").Range;var comparePoints=Range.comparePoints;var RangeList=function RangeList(){this.ranges=[];this.$bias=1;};(function(){this.comparePoints=comparePoints;this.pointIndex=function(pos,excludeEdges,startIndex){var list=this.ranges;for(var i=startIndex||0;i<list.length;i++){var range=list[i];var cmpEnd=comparePoints(pos,range.end);if(cmpEnd>0)continue;var cmpStart=comparePoints(pos,range.start);if(cmpEnd===0)return excludeEdges&&cmpStart!==0?-i-2:i;if(cmpStart>0||cmpStart===0&&!excludeEdges)return i;return-i-1;}return-i-1;};this.add=function(range){var excludeEdges=!range.isEmpty();var startIndex=this.pointIndex(range.start,excludeEdges);if(startIndex<0)startIndex=-startIndex-1;var endIndex=this.pointIndex(range.end,excludeEdges,startIndex);if(endIndex<0)endIndex=-endIndex-1;else endIndex++;return this.ranges.splice(startIndex,endIndex-startIndex,range);};this.addList=function(list){var removed=[];for(var i=list.length;i--;){removed.push.apply(removed,this.add(list[i]));}return removed;};this.substractPoint=function(pos){var i=this.pointIndex(pos);if(i>=0)return this.ranges.splice(i,1);};this.merge=function(){var removed=[];var list=this.ranges;list=list.sort(function(a,b){return comparePoints(a.start,b.start);});var next=list[0],range;for(var i=1;i<list.length;i++){range=next;next=list[i];var cmp=comparePoints(range.end,next.start);if(cmp<0)continue;if(cmp==0&&!range.isEmpty()&&!next.isEmpty())continue;if(comparePoints(range.end,next.end)<0){range.end.row=next.end.row;range.end.column=next.end.column;}list.splice(i,1);removed.push(next);next=range;i--;}this.ranges=list;return removed;};this.contains=function(row,column){return this.pointIndex({row:row,column:column})>=0;};this.containsPoint=function(pos){return this.pointIndex(pos)>=0;};this.rangeAtPoint=function(pos){var i=this.pointIndex(pos);if(i>=0)return this.ranges[i];};this.clipRows=function(startRow,endRow){var list=this.ranges;if(list[0].start.row>endRow||list[list.length-1].start.row<startRow)return[];var startIndex=this.pointIndex({row:startRow,column:0});if(startIndex<0)startIndex=-startIndex-1;var endIndex=this.pointIndex({row:endRow,column:0},startIndex);if(endIndex<0)endIndex=-endIndex-1;var clipped=[];for(var i=startIndex;i<endIndex;i++){clipped.push(list[i]);}return clipped;};this.removeAll=function(){return this.ranges.splice(0,this.ranges.length);};this.attach=function(session){if(this.session)this.detach();this.session=session;this.onChange=this.$onChange.bind(this);this.session.on('change',this.onChange);};this.detach=function(){if(!this.session)return;this.session.removeListener('change',this.onChange);this.session=null;};this.$onChange=function(delta){var start=delta.start;var end=delta.end;var startRow=start.row;var endRow=end.row;var ranges=this.ranges;for(var i=0,n=ranges.length;i<n;i++){var r=ranges[i];if(r.end.row>=startRow)break;}if(delta.action=="insert"){var lineDif=endRow-startRow;var colDiff=-start.column+end.column;for(;i<n;i++){var r=ranges[i];if(r.start.row>startRow)break;if(r.start.row==startRow&&r.start.column>=start.column){if(r.start.column==start.column&&this.$bias<=0){}else{r.start.column+=colDiff;r.start.row+=lineDif;}}if(r.end.row==startRow&&r.end.column>=start.column){if(r.end.column==start.column&&this.$bias<0){continue;}if(r.end.column==start.column&&colDiff>0&&i<n-1){if(r.end.column>r.start.column&&r.end.column==ranges[i+1].start.column)r.end.column-=colDiff;}r.end.column+=colDiff;r.end.row+=lineDif;}}}else{var lineDif=startRow-endRow;var colDiff=start.column-end.column;for(;i<n;i++){var r=ranges[i];if(r.start.row>endRow)break;if(r.end.row<endRow&&(startRow<r.end.row||startRow==r.end.row&&start.column<r.end.column)){r.end.row=startRow;r.end.column=start.column;}else if(r.end.row==endRow){if(r.end.column<=end.column){if(lineDif||r.end.column>start.column){r.end.column=start.column;r.end.row=start.row;}}else{r.end.column+=colDiff;r.end.row+=lineDif;}}else if(r.end.row>endRow){r.end.row+=lineDif;}if(r.start.row<endRow&&(startRow<r.start.row||startRow==r.start.row&&start.column<r.start.column)){r.start.row=startRow;r.start.column=start.column;}else if(r.start.row==endRow){if(r.start.column<=end.column){if(lineDif||r.start.column>start.column){r.start.column=start.column;r.start.row=start.row;}}else{r.start.column+=colDiff;r.start.row+=lineDif;}}else if(r.start.row>endRow){r.start.row+=lineDif;}}}if(lineDif!=0&&i<n){for(;i<n;i++){var r=ranges[i];r.start.row+=lineDif;r.end.row+=lineDif;}}};}).call(RangeList.prototype);exports.RangeList=RangeList;});ace.define("ace/edit_session/fold",["require","exports","module","ace/range_list","ace/lib/oop"],function(require,exports,module){"use strict";var RangeList=require("../range_list").RangeList;var oop=require("../lib/oop");var Fold=exports.Fold=function(range,placeholder){this.foldLine=null;this.placeholder=placeholder;this.range=range;this.start=range.start;this.end=range.end;this.sameRow=range.start.row==range.end.row;this.subFolds=this.ranges=[];};oop.inherits(Fold,RangeList);(function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString();};this.setFoldLine=function(foldLine){this.foldLine=foldLine;this.subFolds.forEach(function(fold){fold.setFoldLine(foldLine);});};this.clone=function(){var range=this.range.clone();var fold=new Fold(range,this.placeholder);this.subFolds.forEach(function(subFold){fold.subFolds.push(subFold.clone());});fold.collapseChildren=this.collapseChildren;return fold;};this.addSubFold=function(fold){if(this.range.isEqual(fold))return;consumeRange(fold,this.start);var row=fold.start.row,column=fold.start.column;for(var i=0,cmp=-1;i<this.subFolds.length;i++){cmp=this.subFolds[i].range.compare(row,column);if(cmp!=1)break;}var afterStart=this.subFolds[i];var firstConsumed=0;if(cmp==0){if(afterStart.range.containsRange(fold))return afterStart.addSubFold(fold);else firstConsumed=1;}var row=fold.range.end.row,column=fold.range.end.column;for(var j=i,cmp=-1;j<this.subFolds.length;j++){cmp=this.subFolds[j].range.compare(row,column);if(cmp!=1)break;}if(cmp==0)j++;var consumedFolds=this.subFolds.splice(i,j-i,fold);var last=cmp==0?consumedFolds.length-1:consumedFolds.length;for(var k=firstConsumed;k<last;k++){fold.addSubFold(consumedFolds[k]);}fold.setFoldLine(this.foldLine);return fold;};this.restoreRange=function(range){return restoreRange(range,this.start);};}).call(Fold.prototype);function consumePoint(point,anchor){point.row-=anchor.row;if(point.row==0)point.column-=anchor.column;}function consumeRange(range,anchor){consumePoint(range.start,anchor);consumePoint(range.end,anchor);}function restorePoint(point,anchor){if(point.row==0)point.column+=anchor.column;point.row+=anchor.row;}function restoreRange(range,anchor){restorePoint(range.start,anchor);restorePoint(range.end,anchor);}});ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(require,exports,module){"use strict";var Range=require("../range").Range;var FoldLine=require("./fold_line").FoldLine;var Fold=require("./fold").Fold;var TokenIterator=require("../token_iterator").TokenIterator;function Folding(){this.getFoldAt=function(row,column,side){var foldLine=this.getFoldLine(row);if(!foldLine)return null;var folds=foldLine.folds;for(var i=0;i<folds.length;i++){var range=folds[i].range;if(range.contains(row,column)){if(side==1&&range.isEnd(row,column)&&!range.isEmpty()){continue;}else if(side==-1&&range.isStart(row,column)&&!range.isEmpty()){continue;}return folds[i];}}};this.getFoldsInRange=function(range){var start=range.start;var end=range.end;var foldLines=this.$foldData;var foundFolds=[];start.column+=1;end.column-=1;for(var i=0;i<foldLines.length;i++){var cmp=foldLines[i].range.compareRange(range);if(cmp==2){continue;}else if(cmp==-2){break;}var folds=foldLines[i].folds;for(var j=0;j<folds.length;j++){var fold=folds[j];cmp=fold.range.compareRange(range);if(cmp==-2){break;}else if(cmp==2){continue;}else if(cmp==42){break;}foundFolds.push(fold);}}start.column-=1;end.column+=1;return foundFolds;};this.getFoldsInRangeList=function(ranges){if(Array.isArray(ranges)){var folds=[];ranges.forEach(function(range){folds=folds.concat(this.getFoldsInRange(range));},this);}else{var folds=this.getFoldsInRange(ranges);}return folds;};this.getAllFolds=function(){var folds=[];var foldLines=this.$foldData;for(var i=0;i<foldLines.length;i++){for(var j=0;j<foldLines[i].folds.length;j++){folds.push(foldLines[i].folds[j]);}}return folds;};this.getFoldStringAt=function(row,column,trim,foldLine){foldLine=foldLine||this.getFoldLine(row);if(!foldLine)return null;var lastFold={end:{column:0}};var str,fold;for(var i=0;i<foldLine.folds.length;i++){fold=foldLine.folds[i];var cmp=fold.range.compareEnd(row,column);if(cmp==-1){str=this.getLine(fold.start.row).substring(lastFold.end.column,fold.start.column);break;}else if(cmp===0){return null;}lastFold=fold;}if(!str)str=this.getLine(fold.start.row).substring(lastFold.end.column);if(trim==-1)return str.substring(0,column-lastFold.end.column);else if(trim==1)return str.substring(column-lastFold.end.column);else return str;};this.getFoldLine=function(docRow,startFoldLine){var foldData=this.$foldData;var i=0;if(startFoldLine)i=foldData.indexOf(startFoldLine);if(i==-1)i=0;for(i;i<foldData.length;i++){var foldLine=foldData[i];if(foldLine.start.row<=docRow&&foldLine.end.row>=docRow){return foldLine;}else if(foldLine.end.row>docRow){return null;}}return null;};this.getNextFoldLine=function(docRow,startFoldLine){var foldData=this.$foldData;var i=0;if(startFoldLine)i=foldData.indexOf(startFoldLine);if(i==-1)i=0;for(i;i<foldData.length;i++){var foldLine=foldData[i];if(foldLine.end.row>=docRow){return foldLine;}}return null;};this.getFoldedRowCount=function(first,last){var foldData=this.$foldData,rowCount=last-first+1;for(var i=0;i<foldData.length;i++){var foldLine=foldData[i],end=foldLine.end.row,start=foldLine.start.row;if(end>=last){if(start<last){if(start>=first)rowCount-=last-start;else rowCount=0;// in one fold
}break;}else if(end>=first){if(start>=first)// fold inside range
rowCount-=end-start;else rowCount-=end-first+1;}}return rowCount;};this.$addFoldLine=function(foldLine){this.$foldData.push(foldLine);this.$foldData.sort(function(a,b){return a.start.row-b.start.row;});return foldLine;};this.addFold=function(placeholder,range){var foldData=this.$foldData;var added=false;var fold;if(placeholder instanceof Fold)fold=placeholder;else{fold=new Fold(range,placeholder);fold.collapseChildren=range.collapseChildren;}this.$clipRangeToDocument(fold.range);var startRow=fold.start.row;var startColumn=fold.start.column;var endRow=fold.end.row;var endColumn=fold.end.column;var startFold=this.getFoldAt(startRow,startColumn,1);var endFold=this.getFoldAt(endRow,endColumn,-1);if(startFold&&endFold==startFold)return startFold.addSubFold(fold);if(startFold&&!startFold.range.isStart(startRow,startColumn))this.removeFold(startFold);if(endFold&&!endFold.range.isEnd(endRow,endColumn))this.removeFold(endFold);var folds=this.getFoldsInRange(fold.range);if(folds.length>0){this.removeFolds(folds);if(!fold.collapseChildren){folds.forEach(function(subFold){fold.addSubFold(subFold);});}}for(var i=0;i<foldData.length;i++){var foldLine=foldData[i];if(endRow==foldLine.start.row){foldLine.addFold(fold);added=true;break;}else if(startRow==foldLine.end.row){foldLine.addFold(fold);added=true;if(!fold.sameRow){var foldLineNext=foldData[i+1];if(foldLineNext&&foldLineNext.start.row==endRow){foldLine.merge(foldLineNext);break;}}break;}else if(endRow<=foldLine.start.row){break;}}if(!added)foldLine=this.$addFoldLine(new FoldLine(this.$foldData,fold));if(this.$useWrapMode)this.$updateWrapData(foldLine.start.row,foldLine.start.row);else this.$updateRowLengthCache(foldLine.start.row,foldLine.start.row);this.$modified=true;this._signal("changeFold",{data:fold,action:"add"});return fold;};this.addFolds=function(folds){folds.forEach(function(fold){this.addFold(fold);},this);};this.removeFold=function(fold){var foldLine=fold.foldLine;var startRow=foldLine.start.row;var endRow=foldLine.end.row;var foldLines=this.$foldData;var folds=foldLine.folds;if(folds.length==1){foldLines.splice(foldLines.indexOf(foldLine),1);}else if(foldLine.range.isEnd(fold.end.row,fold.end.column)){folds.pop();foldLine.end.row=folds[folds.length-1].end.row;foldLine.end.column=folds[folds.length-1].end.column;}else if(foldLine.range.isStart(fold.start.row,fold.start.column)){folds.shift();foldLine.start.row=folds[0].start.row;foldLine.start.column=folds[0].start.column;}else if(fold.sameRow){folds.splice(folds.indexOf(fold),1);}else{var newFoldLine=foldLine.split(fold.start.row,fold.start.column);folds=newFoldLine.folds;folds.shift();newFoldLine.start.row=folds[0].start.row;newFoldLine.start.column=folds[0].start.column;}if(!this.$updating){if(this.$useWrapMode)this.$updateWrapData(startRow,endRow);else this.$updateRowLengthCache(startRow,endRow);}this.$modified=true;this._signal("changeFold",{data:fold,action:"remove"});};this.removeFolds=function(folds){var cloneFolds=[];for(var i=0;i<folds.length;i++){cloneFolds.push(folds[i]);}cloneFolds.forEach(function(fold){this.removeFold(fold);},this);this.$modified=true;};this.expandFold=function(fold){this.removeFold(fold);fold.subFolds.forEach(function(subFold){fold.restoreRange(subFold);this.addFold(subFold);},this);if(fold.collapseChildren>0){this.foldAll(fold.start.row+1,fold.end.row,fold.collapseChildren-1);}fold.subFolds=[];};this.expandFolds=function(folds){folds.forEach(function(fold){this.expandFold(fold);},this);};this.unfold=function(location,expandInner){var range,folds;if(location==null){range=new Range(0,0,this.getLength(),0);if(expandInner==null)expandInner=true;}else if(typeof location=="number")range=new Range(location,0,location,this.getLine(location).length);else if("row"in location)range=Range.fromPoints(location,location);else range=location;folds=this.getFoldsInRangeList(range);if(expandInner!=false){this.removeFolds(folds);}else{this.expandFolds(folds);}if(folds.length)return folds;};this.isRowFolded=function(docRow,startFoldRow){return!!this.getFoldLine(docRow,startFoldRow);};this.getRowFoldEnd=function(docRow,startFoldRow){var foldLine=this.getFoldLine(docRow,startFoldRow);return foldLine?foldLine.end.row:docRow;};this.getRowFoldStart=function(docRow,startFoldRow){var foldLine=this.getFoldLine(docRow,startFoldRow);return foldLine?foldLine.start.row:docRow;};this.getFoldDisplayLine=function(foldLine,endRow,endColumn,startRow,startColumn){if(startRow==null)startRow=foldLine.start.row;if(startColumn==null)startColumn=0;if(endRow==null)endRow=foldLine.end.row;if(endColumn==null)endColumn=this.getLine(endRow).length;var doc=this.doc;var textLine="";foldLine.walk(function(placeholder,row,column,lastColumn){if(row<startRow)return;if(row==startRow){if(column<startColumn)return;lastColumn=Math.max(startColumn,lastColumn);}if(placeholder!=null){textLine+=placeholder;}else{textLine+=doc.getLine(row).substring(lastColumn,column);}},endRow,endColumn);return textLine;};this.getDisplayLine=function(row,endColumn,startRow,startColumn){var foldLine=this.getFoldLine(row);if(!foldLine){var line;line=this.doc.getLine(row);return line.substring(startColumn||0,endColumn||line.length);}else{return this.getFoldDisplayLine(foldLine,row,endColumn,startRow,startColumn);}};this.$cloneFoldData=function(){var fd=[];fd=this.$foldData.map(function(foldLine){var folds=foldLine.folds.map(function(fold){return fold.clone();});return new FoldLine(fd,folds);});return fd;};this.toggleFold=function(tryToUnfold){var selection=this.selection;var range=selection.getRange();var fold;var bracketPos;if(range.isEmpty()){var cursor=range.start;fold=this.getFoldAt(cursor.row,cursor.column);if(fold){this.expandFold(fold);return;}else if(bracketPos=this.findMatchingBracket(cursor)){if(range.comparePoint(bracketPos)==1){range.end=bracketPos;}else{range.start=bracketPos;range.start.column++;range.end.column--;}}else if(bracketPos=this.findMatchingBracket({row:cursor.row,column:cursor.column+1})){if(range.comparePoint(bracketPos)==1)range.end=bracketPos;else range.start=bracketPos;range.start.column++;}else{range=this.getCommentFoldRange(cursor.row,cursor.column)||range;}}else{var folds=this.getFoldsInRange(range);if(tryToUnfold&&folds.length){this.expandFolds(folds);return;}else if(folds.length==1){fold=folds[0];}}if(!fold)fold=this.getFoldAt(range.start.row,range.start.column);if(fold&&fold.range.toString()==range.toString()){this.expandFold(fold);return;}var placeholder="...";if(!range.isMultiLine()){placeholder=this.getTextRange(range);if(placeholder.length<4)return;placeholder=placeholder.trim().substring(0,2)+"..";}this.addFold(placeholder,range);};this.getCommentFoldRange=function(row,column,dir){var iterator=new TokenIterator(this,row,column);var token=iterator.getCurrentToken();var type=token&&token.type;if(token&&/^comment|string/.test(type)){type=type.match(/comment|string/)[0];if(type=="comment")type+="|doc-start";var re=new RegExp(type);var range=new Range();if(dir!=1){do{token=iterator.stepBackward();}while(token&&re.test(token.type));iterator.stepForward();}range.start.row=iterator.getCurrentTokenRow();range.start.column=iterator.getCurrentTokenColumn()+2;iterator=new TokenIterator(this,row,column);if(dir!=-1){var lastRow=-1;do{token=iterator.stepForward();if(lastRow==-1){var state=this.getState(iterator.$row);if(!re.test(state))lastRow=iterator.$row;}else if(iterator.$row>lastRow){break;}}while(token&&re.test(token.type));token=iterator.stepBackward();}else token=iterator.getCurrentToken();range.end.row=iterator.getCurrentTokenRow();range.end.column=iterator.getCurrentTokenColumn()+token.value.length-2;return range;}};this.foldAll=function(startRow,endRow,depth,test){if(depth==undefined)depth=100000;// JSON.stringify doesn't hanle Infinity
var foldWidgets=this.foldWidgets;if(!foldWidgets)return;// mode doesn't support folding
endRow=endRow||this.getLength();startRow=startRow||0;for(var row=startRow;row<endRow;row++){if(foldWidgets[row]==null)foldWidgets[row]=this.getFoldWidget(row);if(foldWidgets[row]!="start")continue;if(test&&!test(row))continue;var range=this.getFoldWidgetRange(row);if(range&&range.isMultiLine()&&range.end.row<=endRow&&range.start.row>=startRow){row=range.end.row;range.collapseChildren=depth;this.addFold("...",range);}}};this.foldToLevel=function(level){this.foldAll();while(level-->0){this.unfold(null,false);}};this.foldAllComments=function(){var session=this;this.foldAll(null,null,null,function(row){var tokens=session.getTokens(row);for(var i=0;i<tokens.length;i++){var token=tokens[i];if(token.type=="text"&&/^\s+$/.test(token.value))continue;if(/comment/.test(token.type))return true;return false;}});};this.$foldStyles={"manual":1,"markbegin":1,"markbeginend":1};this.$foldStyle="markbegin";this.setFoldStyle=function(style){if(!this.$foldStyles[style])throw new Error("invalid fold style: "+style+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==style)return;this.$foldStyle=style;if(style=="manual")this.unfold();var mode=this.$foldMode;this.$setFolding(null);this.$setFolding(mode);};this.$setFolding=function(foldMode){if(this.$foldMode==foldMode)return;this.$foldMode=foldMode;this.off('change',this.$updateFoldWidgets);this.off('tokenizerUpdate',this.$tokenizerUpdateFoldWidgets);this._signal("changeAnnotation");if(!foldMode||this.$foldStyle=="manual"){this.foldWidgets=null;return;}this.foldWidgets=[];this.getFoldWidget=foldMode.getFoldWidget.bind(foldMode,this,this.$foldStyle);this.getFoldWidgetRange=foldMode.getFoldWidgetRange.bind(foldMode,this,this.$foldStyle);this.$updateFoldWidgets=this.updateFoldWidgets.bind(this);this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this);this.on('change',this.$updateFoldWidgets);this.on('tokenizerUpdate',this.$tokenizerUpdateFoldWidgets);};this.getParentFoldRangeData=function(row,ignoreCurrent){var fw=this.foldWidgets;if(!fw||ignoreCurrent&&fw[row])return{};var i=row-1,firstRange;while(i>=0){var c=fw[i];if(c==null)c=fw[i]=this.getFoldWidget(i);if(c=="start"){var range=this.getFoldWidgetRange(i);if(!firstRange)firstRange=range;if(range&&range.end.row>=row)break;}i--;}return{range:i!==-1&&range,firstRange:firstRange};};this.onFoldWidgetClick=function(row,e){e=e.domEvent;var options={children:e.shiftKey,all:e.ctrlKey||e.metaKey,siblings:e.altKey};var range=this.$toggleFoldWidget(row,options);if(!range){var el=e.target||e.srcElement;if(el&&/ace_fold-widget/.test(el.className))el.className+=" ace_invalid";}};this.$toggleFoldWidget=function(row,options){if(!this.getFoldWidget)return;var type=this.getFoldWidget(row);var line=this.getLine(row);var dir=type==="end"?-1:1;var fold=this.getFoldAt(row,dir===-1?0:line.length,dir);if(fold){if(options.children||options.all)this.removeFold(fold);else this.expandFold(fold);return fold;}var range=this.getFoldWidgetRange(row,true);if(range&&!range.isMultiLine()){fold=this.getFoldAt(range.start.row,range.start.column,1);if(fold&&range.isEqual(fold.range)){this.removeFold(fold);return fold;}}if(options.siblings){var data=this.getParentFoldRangeData(row);if(data.range){var startRow=data.range.start.row+1;var endRow=data.range.end.row;}this.foldAll(startRow,endRow,options.all?10000:0);}else if(options.children){endRow=range?range.end.row:this.getLength();this.foldAll(row+1,endRow,options.all?10000:0);}else if(range){if(options.all)range.collapseChildren=10000;this.addFold("...",range);}return range;};this.toggleFoldWidget=function(toggleParent){var row=this.selection.getCursor().row;row=this.getRowFoldStart(row);var range=this.$toggleFoldWidget(row,{});if(range)return;var data=this.getParentFoldRangeData(row,true);range=data.range||data.firstRange;if(range){row=range.start.row;var fold=this.getFoldAt(row,this.getLine(row).length,1);if(fold){this.removeFold(fold);}else{this.addFold("...",range);}}};this.updateFoldWidgets=function(delta){var firstRow=delta.start.row;var len=delta.end.row-firstRow;if(len===0){this.foldWidgets[firstRow]=null;}else if(delta.action=='remove'){this.foldWidgets.splice(firstRow,len+1,null);}else{var args=Array(len+1);args.unshift(firstRow,1);this.foldWidgets.splice.apply(this.foldWidgets,args);}};this.tokenizerUpdateFoldWidgets=function(e){var rows=e.data;if(rows.first!=rows.last){if(this.foldWidgets.length>rows.first)this.foldWidgets.splice(rows.first,this.foldWidgets.length);}};}exports.Folding=Folding;});ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(require,exports,module){"use strict";var TokenIterator=require("../token_iterator").TokenIterator;var Range=require("../range").Range;function BracketMatch(){this.findMatchingBracket=function(position,chr){if(position.column==0)return null;var charBeforeCursor=chr||this.getLine(position.row).charAt(position.column-1);if(charBeforeCursor=="")return null;var match=charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/);if(!match)return null;if(match[1])return this.$findClosingBracket(match[1],position);else return this.$findOpeningBracket(match[2],position);};this.getBracketRange=function(pos){var line=this.getLine(pos.row);var before=true,range;var chr=line.charAt(pos.column-1);var match=chr&&chr.match(/([\(\[\{])|([\)\]\}])/);if(!match){chr=line.charAt(pos.column);pos={row:pos.row,column:pos.column+1};match=chr&&chr.match(/([\(\[\{])|([\)\]\}])/);before=false;}if(!match)return null;if(match[1]){var bracketPos=this.$findClosingBracket(match[1],pos);if(!bracketPos)return null;range=Range.fromPoints(pos,bracketPos);if(!before){range.end.column++;range.start.column--;}range.cursor=range.end;}else{var bracketPos=this.$findOpeningBracket(match[2],pos);if(!bracketPos)return null;range=Range.fromPoints(bracketPos,pos);if(!before){range.start.column++;range.end.column--;}range.cursor=range.start;}return range;};this.getMatchingBracketRanges=function(pos){var line=this.getLine(pos.row);var chr=line.charAt(pos.column-1);var match=chr&&chr.match(/([\(\[\{])|([\)\]\}])/);if(!match){chr=line.charAt(pos.column);pos={row:pos.row,column:pos.column+1};match=chr&&chr.match(/([\(\[\{])|([\)\]\}])/);}if(!match)return null;var startRange=new Range(pos.row,pos.column-1,pos.row,pos.column);var bracketPos=match[1]?this.$findClosingBracket(match[1],pos):this.$findOpeningBracket(match[2],pos);if(!bracketPos)return[startRange];var endRange=new Range(bracketPos.row,bracketPos.column,bracketPos.row,bracketPos.column+1);return[startRange,endRange];};this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"};this.$findOpeningBracket=function(bracket,position,typeRe){var openBracket=this.$brackets[bracket];var depth=1;var iterator=new TokenIterator(this,position.row,position.column);var token=iterator.getCurrentToken();if(!token)token=iterator.stepForward();if(!token)return;if(!typeRe){typeRe=new RegExp("(\\.?"+token.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+");}var valueIndex=position.column-iterator.getCurrentTokenColumn()-2;var value=token.value;while(true){while(valueIndex>=0){var chr=value.charAt(valueIndex);if(chr==openBracket){depth-=1;if(depth==0){return{row:iterator.getCurrentTokenRow(),column:valueIndex+iterator.getCurrentTokenColumn()};}}else if(chr==bracket){depth+=1;}valueIndex-=1;}do{token=iterator.stepBackward();}while(token&&!typeRe.test(token.type));if(token==null)break;value=token.value;valueIndex=value.length-1;}return null;};this.$findClosingBracket=function(bracket,position,typeRe){var closingBracket=this.$brackets[bracket];var depth=1;var iterator=new TokenIterator(this,position.row,position.column);var token=iterator.getCurrentToken();if(!token)token=iterator.stepForward();if(!token)return;if(!typeRe){typeRe=new RegExp("(\\.?"+token.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+");}var valueIndex=position.column-iterator.getCurrentTokenColumn();while(true){var value=token.value;var valueLength=value.length;while(valueIndex<valueLength){var chr=value.charAt(valueIndex);if(chr==closingBracket){depth-=1;if(depth==0){return{row:iterator.getCurrentTokenRow(),column:valueIndex+iterator.getCurrentTokenColumn()};}}else if(chr==bracket){depth+=1;}valueIndex+=1;}do{token=iterator.stepForward();}while(token&&!typeRe.test(token.type));if(token==null)break;valueIndex=0;}return null;};}exports.BracketMatch=BracketMatch;});ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/bidihandler","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var lang=require("./lib/lang");var BidiHandler=require("./bidihandler").BidiHandler;var config=require("./config");var EventEmitter=require("./lib/event_emitter").EventEmitter;var Selection=require("./selection").Selection;var TextMode=require("./mode/text").Mode;var Range=require("./range").Range;var Document=require("./document").Document;var BackgroundTokenizer=require("./background_tokenizer").BackgroundTokenizer;var SearchHighlight=require("./search_highlight").SearchHighlight;var EditSession=function EditSession(text,mode){this.$breakpoints=[];this.$decorations=[];this.$frontMarkers={};this.$backMarkers={};this.$markerId=1;this.$undoSelect=true;this.$foldData=[];this.id="session"+ ++EditSession.$uid;this.$foldData.toString=function(){return this.join("\n");};this.on("changeFold",this.onChangeFold.bind(this));this.$onChange=this.onChange.bind(this);if(_typeof(text)!="object"||!text.getLine)text=new Document(text);this.setDocument(text);this.selection=new Selection(this);this.$bidiHandler=new BidiHandler(this);config.resetOptions(this);this.setMode(mode);config._signal("session",this);};EditSession.$uid=0;(function(){oop.implement(this,EventEmitter);this.setDocument=function(doc){if(this.doc)this.doc.removeListener("change",this.$onChange);this.doc=doc;doc.on("change",this.$onChange);if(this.bgTokenizer)this.bgTokenizer.setDocument(this.getDocument());this.resetCaches();};this.getDocument=function(){return this.doc;};this.$resetRowCache=function(docRow){if(!docRow){this.$docRowCache=[];this.$screenRowCache=[];return;}var l=this.$docRowCache.length;var i=this.$getRowCacheIndex(this.$docRowCache,docRow)+1;if(l>i){this.$docRowCache.splice(i,l);this.$screenRowCache.splice(i,l);}};this.$getRowCacheIndex=function(cacheArray,val){var low=0;var hi=cacheArray.length-1;while(low<=hi){var mid=low+hi>>1;var c=cacheArray[mid];if(val>c)low=mid+1;else if(val<c)hi=mid-1;else return mid;}return low-1;};this.resetCaches=function(){this.$modified=true;this.$wrapData=[];this.$rowLengthCache=[];this.$resetRowCache(0);if(this.bgTokenizer)this.bgTokenizer.start(0);};this.onChangeFold=function(e){var fold=e.data;this.$resetRowCache(fold.start.row);};this.onChange=function(delta){this.$modified=true;this.$bidiHandler.onChange(delta);this.$resetRowCache(delta.start.row);var removedFolds=this.$updateInternalDataOnChange(delta);if(!this.$fromUndo&&this.$undoManager){if(removedFolds&&removedFolds.length){this.$undoManager.add({action:"removeFolds",folds:removedFolds},this.mergeUndoDeltas);this.mergeUndoDeltas=true;}this.$undoManager.add(delta,this.mergeUndoDeltas);this.mergeUndoDeltas=true;this.$informUndoManager.schedule();}this.bgTokenizer&&this.bgTokenizer.$updateOnChange(delta);this._signal("change",delta);};this.setValue=function(text){this.doc.setValue(text);this.selection.moveTo(0,0);this.$resetRowCache(0);this.setUndoManager(this.$undoManager);this.getUndoManager().reset();};this.getValue=this.toString=function(){return this.doc.getValue();};this.getSelection=function(){return this.selection;};this.getState=function(row){return this.bgTokenizer.getState(row);};this.getTokens=function(row){return this.bgTokenizer.getTokens(row);};this.getTokenAt=function(row,column){var tokens=this.bgTokenizer.getTokens(row);var token,c=0;if(column==null){var i=tokens.length-1;c=this.getLine(row).length;}else{for(var i=0;i<tokens.length;i++){c+=tokens[i].value.length;if(c>=column)break;}}token=tokens[i];if(!token)return null;token.index=i;token.start=c-token.value.length;return token;};this.setUndoManager=function(undoManager){this.$undoManager=undoManager;if(this.$informUndoManager)this.$informUndoManager.cancel();if(undoManager){var self=this;undoManager.addSession(this);this.$syncInformUndoManager=function(){self.$informUndoManager.cancel();self.mergeUndoDeltas=false;};this.$informUndoManager=lang.delayedCall(this.$syncInformUndoManager);}else{this.$syncInformUndoManager=function(){};}};this.markUndoGroup=function(){if(this.$syncInformUndoManager)this.$syncInformUndoManager();};this.$defaultUndoManager={undo:function undo(){},redo:function redo(){},hasUndo:function hasUndo(){},hasRedo:function hasRedo(){},reset:function reset(){},add:function add(){},addSelection:function addSelection(){},startNewGroup:function startNewGroup(){},addSession:function addSession(){}};this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager;};this.getTabString=function(){if(this.getUseSoftTabs()){return lang.stringRepeat(" ",this.getTabSize());}else{return"\t";}};this.setUseSoftTabs=function(val){this.setOption("useSoftTabs",val);};this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs;};this.setTabSize=function(tabSize){this.setOption("tabSize",tabSize);};this.getTabSize=function(){return this.$tabSize;};this.isTabStop=function(position){return this.$useSoftTabs&&position.column%this.$tabSize===0;};this.setNavigateWithinSoftTabs=function(navigateWithinSoftTabs){this.setOption("navigateWithinSoftTabs",navigateWithinSoftTabs);};this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs;};this.$overwrite=false;this.setOverwrite=function(overwrite){this.setOption("overwrite",overwrite);};this.getOverwrite=function(){return this.$overwrite;};this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite);};this.addGutterDecoration=function(row,className){if(!this.$decorations[row])this.$decorations[row]="";this.$decorations[row]+=" "+className;this._signal("changeBreakpoint",{});};this.removeGutterDecoration=function(row,className){this.$decorations[row]=(this.$decorations[row]||"").replace(" "+className,"");this._signal("changeBreakpoint",{});};this.getBreakpoints=function(){return this.$breakpoints;};this.setBreakpoints=function(rows){this.$breakpoints=[];for(var i=0;i<rows.length;i++){this.$breakpoints[rows[i]]="ace_breakpoint";}this._signal("changeBreakpoint",{});};this.clearBreakpoints=function(){this.$breakpoints=[];this._signal("changeBreakpoint",{});};this.setBreakpoint=function(row,className){if(className===undefined)className="ace_breakpoint";if(className)this.$breakpoints[row]=className;else delete this.$breakpoints[row];this._signal("changeBreakpoint",{});};this.clearBreakpoint=function(row){delete this.$breakpoints[row];this._signal("changeBreakpoint",{});};this.addMarker=function(range,clazz,type,inFront){var id=this.$markerId++;var marker={range:range,type:type||"line",renderer:typeof type=="function"?type:null,clazz:clazz,inFront:!!inFront,id:id};if(inFront){this.$frontMarkers[id]=marker;this._signal("changeFrontMarker");}else{this.$backMarkers[id]=marker;this._signal("changeBackMarker");}return id;};this.addDynamicMarker=function(marker,inFront){if(!marker.update)return;var id=this.$markerId++;marker.id=id;marker.inFront=!!inFront;if(inFront){this.$frontMarkers[id]=marker;this._signal("changeFrontMarker");}else{this.$backMarkers[id]=marker;this._signal("changeBackMarker");}return marker;};this.removeMarker=function(markerId){var marker=this.$frontMarkers[markerId]||this.$backMarkers[markerId];if(!marker)return;var markers=marker.inFront?this.$frontMarkers:this.$backMarkers;delete markers[markerId];this._signal(marker.inFront?"changeFrontMarker":"changeBackMarker");};this.getMarkers=function(inFront){return inFront?this.$frontMarkers:this.$backMarkers;};this.highlight=function(re){if(!this.$searchHighlight){var highlight=new SearchHighlight(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(highlight);}this.$searchHighlight.setRegexp(re);};this.highlightLines=function(startRow,endRow,clazz,inFront){if(typeof endRow!="number"){clazz=endRow;endRow=startRow;}if(!clazz)clazz="ace_step";var range=new Range(startRow,0,endRow,Infinity);range.id=this.addMarker(range,clazz,"fullLine",inFront);return range;};this.setAnnotations=function(annotations){this.$annotations=annotations;this._signal("changeAnnotation",{});};this.getAnnotations=function(){return this.$annotations||[];};this.clearAnnotations=function(){this.setAnnotations([]);};this.$detectNewLine=function(text){var match=text.match(/^.*?(\r?\n)/m);if(match){this.$autoNewLine=match[1];}else{this.$autoNewLine="\n";}};this.getWordRange=function(row,column){var line=this.getLine(row);var inToken=false;if(column>0)inToken=!!line.charAt(column-1).match(this.tokenRe);if(!inToken)inToken=!!line.charAt(column).match(this.tokenRe);if(inToken)var re=this.tokenRe;else if(/^\s+$/.test(line.slice(column-1,column+1)))var re=/\s/;else var re=this.nonTokenRe;var start=column;if(start>0){do{start--;}while(start>=0&&line.charAt(start).match(re));start++;}var end=column;while(end<line.length&&line.charAt(end).match(re)){end++;}return new Range(row,start,row,end);};this.getAWordRange=function(row,column){var wordRange=this.getWordRange(row,column);var line=this.getLine(wordRange.end.row);while(line.charAt(wordRange.end.column).match(/[ \t]/)){wordRange.end.column+=1;}return wordRange;};this.setNewLineMode=function(newLineMode){this.doc.setNewLineMode(newLineMode);};this.getNewLineMode=function(){return this.doc.getNewLineMode();};this.setUseWorker=function(useWorker){this.setOption("useWorker",useWorker);};this.getUseWorker=function(){return this.$useWorker;};this.onReloadTokenizer=function(e){var rows=e.data;this.bgTokenizer.start(rows.first);this._signal("tokenizerUpdate",e);};this.$modes=config.$modes;this.$mode=null;this.$modeId=null;this.setMode=function(mode,cb){if(mode&&_typeof(mode)==="object"){if(mode.getTokenizer)return this.$onChangeMode(mode);var options=mode;var path=options.path;}else{path=mode||"ace/mode/text";}if(!this.$modes["ace/mode/text"])this.$modes["ace/mode/text"]=new TextMode();if(this.$modes[path]&&!options){this.$onChangeMode(this.$modes[path]);cb&&cb();return;}this.$modeId=path;config.loadModule(["mode",path],function(m){if(this.$modeId!==path)return cb&&cb();if(this.$modes[path]&&!options){this.$onChangeMode(this.$modes[path]);}else if(m&&m.Mode){m=new m.Mode(options);if(!options){this.$modes[path]=m;m.$id=path;}this.$onChangeMode(m);}cb&&cb();}.bind(this));if(!this.$mode)this.$onChangeMode(this.$modes["ace/mode/text"],true);};this.$onChangeMode=function(mode,$isPlaceholder){if(!$isPlaceholder)this.$modeId=mode.$id;if(this.$mode===mode)return;var oldMode=this.$mode;this.$mode=mode;this.$stopWorker();if(this.$useWorker)this.$startWorker();var tokenizer=mode.getTokenizer();if(tokenizer.on!==undefined){var onReloadTokenizer=this.onReloadTokenizer.bind(this);tokenizer.on("update",onReloadTokenizer);}if(!this.bgTokenizer){this.bgTokenizer=new BackgroundTokenizer(tokenizer);var _self=this;this.bgTokenizer.on("update",function(e){_self._signal("tokenizerUpdate",e);});}else{this.bgTokenizer.setTokenizer(tokenizer);}this.bgTokenizer.setDocument(this.getDocument());this.tokenRe=mode.tokenRe;this.nonTokenRe=mode.nonTokenRe;if(!$isPlaceholder){if(mode.attachToSession)mode.attachToSession(this);this.$options.wrapMethod.set.call(this,this.$wrapMethod);this.$setFolding(mode.foldingRules);this.bgTokenizer.start(0);this._emit("changeMode",{oldMode:oldMode,mode:mode});}};this.$stopWorker=function(){if(this.$worker){this.$worker.terminate();this.$worker=null;}};this.$startWorker=function(){try{this.$worker=this.$mode.createWorker(this);}catch(e){config.warn("Could not load worker",e);this.$worker=null;}};this.getMode=function(){return this.$mode;};this.$scrollTop=0;this.setScrollTop=function(scrollTop){if(this.$scrollTop===scrollTop||isNaN(scrollTop))return;this.$scrollTop=scrollTop;this._signal("changeScrollTop",scrollTop);};this.getScrollTop=function(){return this.$scrollTop;};this.$scrollLeft=0;this.setScrollLeft=function(scrollLeft){if(this.$scrollLeft===scrollLeft||isNaN(scrollLeft))return;this.$scrollLeft=scrollLeft;this._signal("changeScrollLeft",scrollLeft);};this.getScrollLeft=function(){return this.$scrollLeft;};this.getScreenWidth=function(){this.$computeWidth();if(this.lineWidgets)return Math.max(this.getLineWidgetMaxWidth(),this.screenWidth);return this.screenWidth;};this.getLineWidgetMaxWidth=function(){if(this.lineWidgetsWidth!=null)return this.lineWidgetsWidth;var width=0;this.lineWidgets.forEach(function(w){if(w&&w.screenWidth>width)width=w.screenWidth;});return this.lineWidgetWidth=width;};this.$computeWidth=function(force){if(this.$modified||force){this.$modified=false;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var lines=this.doc.getAllLines();var cache=this.$rowLengthCache;var longestScreenLine=0;var foldIndex=0;var foldLine=this.$foldData[foldIndex];var foldStart=foldLine?foldLine.start.row:Infinity;var len=lines.length;for(var i=0;i<len;i++){if(i>foldStart){i=foldLine.end.row+1;if(i>=len)break;foldLine=this.$foldData[foldIndex++];foldStart=foldLine?foldLine.start.row:Infinity;}if(cache[i]==null)cache[i]=this.$getStringScreenWidth(lines[i])[0];if(cache[i]>longestScreenLine)longestScreenLine=cache[i];}this.screenWidth=longestScreenLine;}};this.getLine=function(row){return this.doc.getLine(row);};this.getLines=function(firstRow,lastRow){return this.doc.getLines(firstRow,lastRow);};this.getLength=function(){return this.doc.getLength();};this.getTextRange=function(range){return this.doc.getTextRange(range||this.selection.getRange());};this.insert=function(position,text){return this.doc.insert(position,text);};this.remove=function(range){return this.doc.remove(range);};this.removeFullLines=function(firstRow,lastRow){return this.doc.removeFullLines(firstRow,lastRow);};this.undoChanges=function(deltas,dontSelect){if(!deltas.length)return;this.$fromUndo=true;for(var i=deltas.length-1;i!=-1;i--){var delta=deltas[i];if(delta.action=="insert"||delta.action=="remove"){this.doc.revertDelta(delta);}else if(delta.folds){this.addFolds(delta.folds);}}if(!dontSelect&&this.$undoSelect){if(deltas.selectionBefore)this.selection.fromJSON(deltas.selectionBefore);else this.selection.setRange(this.$getUndoSelection(deltas,true));}this.$fromUndo=false;};this.redoChanges=function(deltas,dontSelect){if(!deltas.length)return;this.$fromUndo=true;for(var i=0;i<deltas.length;i++){var delta=deltas[i];if(delta.action=="insert"||delta.action=="remove"){this.doc.$safeApplyDelta(delta);}}if(!dontSelect&&this.$undoSelect){if(deltas.selectionAfter)this.selection.fromJSON(deltas.selectionAfter);else this.selection.setRange(this.$getUndoSelection(deltas,false));}this.$fromUndo=false;};this.setUndoSelect=function(enable){this.$undoSelect=enable;};this.$getUndoSelection=function(deltas,isUndo){function isInsert(delta){return isUndo?delta.action!=="insert":delta.action==="insert";}var range,point;for(var i=0;i<deltas.length;i++){var delta=deltas[i];if(!delta.start)continue;// skip folds
if(!range){if(isInsert(delta)){range=Range.fromPoints(delta.start,delta.end);}else{range=Range.fromPoints(delta.start,delta.start);}continue;}if(isInsert(delta)){point=delta.start;if(range.compare(point.row,point.column)==-1){range.setStart(point);}point=delta.end;if(range.compare(point.row,point.column)==1){range.setEnd(point);}}else{point=delta.start;if(range.compare(point.row,point.column)==-1){range=Range.fromPoints(delta.start,delta.start);}}}return range;};this.replace=function(range,text){return this.doc.replace(range,text);};this.moveText=function(fromRange,toPosition,copy){var text=this.getTextRange(fromRange);var folds=this.getFoldsInRange(fromRange);var toRange=Range.fromPoints(toPosition,toPosition);if(!copy){this.remove(fromRange);var rowDiff=fromRange.start.row-fromRange.end.row;var collDiff=rowDiff?-fromRange.end.column:fromRange.start.column-fromRange.end.column;if(collDiff){if(toRange.start.row==fromRange.end.row&&toRange.start.column>fromRange.end.column)toRange.start.column+=collDiff;if(toRange.end.row==fromRange.end.row&&toRange.end.column>fromRange.end.column)toRange.end.column+=collDiff;}if(rowDiff&&toRange.start.row>=fromRange.end.row){toRange.start.row+=rowDiff;toRange.end.row+=rowDiff;}}toRange.end=this.insert(toRange.start,text);if(folds.length){var oldStart=fromRange.start;var newStart=toRange.start;var rowDiff=newStart.row-oldStart.row;var collDiff=newStart.column-oldStart.column;this.addFolds(folds.map(function(x){x=x.clone();if(x.start.row==oldStart.row)x.start.column+=collDiff;if(x.end.row==oldStart.row)x.end.column+=collDiff;x.start.row+=rowDiff;x.end.row+=rowDiff;return x;}));}return toRange;};this.indentRows=function(startRow,endRow,indentString){indentString=indentString.replace(/\t/g,this.getTabString());for(var row=startRow;row<=endRow;row++){this.doc.insertInLine({row:row,column:0},indentString);}};this.outdentRows=function(range){var rowRange=range.collapseRows();var deleteRange=new Range(0,0,0,0);var size=this.getTabSize();for(var i=rowRange.start.row;i<=rowRange.end.row;++i){var line=this.getLine(i);deleteRange.start.row=i;deleteRange.end.row=i;for(var j=0;j<size;++j){if(line.charAt(j)!=' ')break;}if(j<size&&line.charAt(j)=='\t'){deleteRange.start.column=j;deleteRange.end.column=j+1;}else{deleteRange.start.column=0;deleteRange.end.column=j;}this.remove(deleteRange);}};this.$moveLines=function(firstRow,lastRow,dir){firstRow=this.getRowFoldStart(firstRow);lastRow=this.getRowFoldEnd(lastRow);if(dir<0){var row=this.getRowFoldStart(firstRow+dir);if(row<0)return 0;var diff=row-firstRow;}else if(dir>0){var row=this.getRowFoldEnd(lastRow+dir);if(row>this.doc.getLength()-1)return 0;var diff=row-lastRow;}else{firstRow=this.$clipRowToDocument(firstRow);lastRow=this.$clipRowToDocument(lastRow);var diff=lastRow-firstRow+1;}var range=new Range(firstRow,0,lastRow,Number.MAX_VALUE);var folds=this.getFoldsInRange(range).map(function(x){x=x.clone();x.start.row+=diff;x.end.row+=diff;return x;});var lines=dir==0?this.doc.getLines(firstRow,lastRow):this.doc.removeFullLines(firstRow,lastRow);this.doc.insertFullLines(firstRow+diff,lines);folds.length&&this.addFolds(folds);return diff;};this.moveLinesUp=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,-1);};this.moveLinesDown=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,1);};this.duplicateLines=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,0);};this.$clipRowToDocument=function(row){return Math.max(0,Math.min(row,this.doc.getLength()-1));};this.$clipColumnToRow=function(row,column){if(column<0)return 0;return Math.min(this.doc.getLine(row).length,column);};this.$clipPositionToDocument=function(row,column){column=Math.max(0,column);if(row<0){row=0;column=0;}else{var len=this.doc.getLength();if(row>=len){row=len-1;column=this.doc.getLine(len-1).length;}else{column=Math.min(this.doc.getLine(row).length,column);}}return{row:row,column:column};};this.$clipRangeToDocument=function(range){if(range.start.row<0){range.start.row=0;range.start.column=0;}else{range.start.column=this.$clipColumnToRow(range.start.row,range.start.column);}var len=this.doc.getLength()-1;if(range.end.row>len){range.end.row=len;range.end.column=this.doc.getLine(len).length;}else{range.end.column=this.$clipColumnToRow(range.end.row,range.end.column);}return range;};this.$wrapLimit=80;this.$useWrapMode=false;this.$wrapLimitRange={min:null,max:null};this.setUseWrapMode=function(useWrapMode){if(useWrapMode!=this.$useWrapMode){this.$useWrapMode=useWrapMode;this.$modified=true;this.$resetRowCache(0);if(useWrapMode){var len=this.getLength();this.$wrapData=Array(len);this.$updateWrapData(0,len-1);}this._signal("changeWrapMode");}};this.getUseWrapMode=function(){return this.$useWrapMode;};this.setWrapLimitRange=function(min,max){if(this.$wrapLimitRange.min!==min||this.$wrapLimitRange.max!==max){this.$wrapLimitRange={min:min,max:max};this.$modified=true;this.$bidiHandler.markAsDirty();if(this.$useWrapMode)this._signal("changeWrapMode");}};this.adjustWrapLimit=function(desiredLimit,$printMargin){var limits=this.$wrapLimitRange;if(limits.max<0)limits={min:$printMargin,max:$printMargin};var wrapLimit=this.$constrainWrapLimit(desiredLimit,limits.min,limits.max);if(wrapLimit!=this.$wrapLimit&&wrapLimit>1){this.$wrapLimit=wrapLimit;this.$modified=true;if(this.$useWrapMode){this.$updateWrapData(0,this.getLength()-1);this.$resetRowCache(0);this._signal("changeWrapLimit");}return true;}return false;};this.$constrainWrapLimit=function(wrapLimit,min,max){if(min)wrapLimit=Math.max(min,wrapLimit);if(max)wrapLimit=Math.min(max,wrapLimit);return wrapLimit;};this.getWrapLimit=function(){return this.$wrapLimit;};this.setWrapLimit=function(limit){this.setWrapLimitRange(limit,limit);};this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max};};this.$updateInternalDataOnChange=function(delta){var useWrapMode=this.$useWrapMode;var action=delta.action;var start=delta.start;var end=delta.end;var firstRow=start.row;var lastRow=end.row;var len=lastRow-firstRow;var removedFolds=null;this.$updating=true;if(len!=0){if(action==="remove"){this[useWrapMode?"$wrapData":"$rowLengthCache"].splice(firstRow,len);var foldLines=this.$foldData;removedFolds=this.getFoldsInRange(delta);this.removeFolds(removedFolds);var foldLine=this.getFoldLine(end.row);var idx=0;if(foldLine){foldLine.addRemoveChars(end.row,end.column,start.column-end.column);foldLine.shiftRow(-len);var foldLineBefore=this.getFoldLine(firstRow);if(foldLineBefore&&foldLineBefore!==foldLine){foldLineBefore.merge(foldLine);foldLine=foldLineBefore;}idx=foldLines.indexOf(foldLine)+1;}for(idx;idx<foldLines.length;idx++){var foldLine=foldLines[idx];if(foldLine.start.row>=end.row){foldLine.shiftRow(-len);}}lastRow=firstRow;}else{var args=Array(len);args.unshift(firstRow,0);var arr=useWrapMode?this.$wrapData:this.$rowLengthCache;arr.splice.apply(arr,args);var foldLines=this.$foldData;var foldLine=this.getFoldLine(firstRow);var idx=0;if(foldLine){var cmp=foldLine.range.compareInside(start.row,start.column);if(cmp==0){foldLine=foldLine.split(start.row,start.column);if(foldLine){foldLine.shiftRow(len);foldLine.addRemoveChars(lastRow,0,end.column-start.column);}}else if(cmp==-1){foldLine.addRemoveChars(firstRow,0,end.column-start.column);foldLine.shiftRow(len);}idx=foldLines.indexOf(foldLine)+1;}for(idx;idx<foldLines.length;idx++){var foldLine=foldLines[idx];if(foldLine.start.row>=firstRow){foldLine.shiftRow(len);}}}}else{len=Math.abs(delta.start.column-delta.end.column);if(action==="remove"){removedFolds=this.getFoldsInRange(delta);this.removeFolds(removedFolds);len=-len;}var foldLine=this.getFoldLine(firstRow);if(foldLine){foldLine.addRemoveChars(firstRow,start.column,len);}}if(useWrapMode&&this.$wrapData.length!=this.doc.getLength()){console.error("doc.getLength() and $wrapData.length have to be the same!");}this.$updating=false;if(useWrapMode)this.$updateWrapData(firstRow,lastRow);else this.$updateRowLengthCache(firstRow,lastRow);return removedFolds;};this.$updateRowLengthCache=function(firstRow,lastRow,b){this.$rowLengthCache[firstRow]=null;this.$rowLengthCache[lastRow]=null;};this.$updateWrapData=function(firstRow,lastRow){var lines=this.doc.getAllLines();var tabSize=this.getTabSize();var wrapData=this.$wrapData;var wrapLimit=this.$wrapLimit;var tokens;var foldLine;var row=firstRow;lastRow=Math.min(lastRow,lines.length-1);while(row<=lastRow){foldLine=this.getFoldLine(row,foldLine);if(!foldLine){tokens=this.$getDisplayTokens(lines[row]);wrapData[row]=this.$computeWrapSplits(tokens,wrapLimit,tabSize);row++;}else{tokens=[];foldLine.walk(function(placeholder,row,column,lastColumn){var walkTokens;if(placeholder!=null){walkTokens=this.$getDisplayTokens(placeholder,tokens.length);walkTokens[0]=PLACEHOLDER_START;for(var i=1;i<walkTokens.length;i++){walkTokens[i]=PLACEHOLDER_BODY;}}else{walkTokens=this.$getDisplayTokens(lines[row].substring(lastColumn,column),tokens.length);}tokens=tokens.concat(walkTokens);}.bind(this),foldLine.end.row,lines[foldLine.end.row].length+1);wrapData[foldLine.start.row]=this.$computeWrapSplits(tokens,wrapLimit,tabSize);row=foldLine.end.row+1;}}};var CHAR=1,CHAR_EXT=2,PLACEHOLDER_START=3,PLACEHOLDER_BODY=4,PUNCTUATION=9,SPACE=10,TAB=11,TAB_SPACE=12;this.$computeWrapSplits=function(tokens,wrapLimit,tabSize){if(tokens.length==0){return[];}var splits=[];var displayLength=tokens.length;var lastSplit=0,lastDocSplit=0;var isCode=this.$wrapAsCode;var indentedSoftWrap=this.$indentedSoftWrap;var maxIndent=wrapLimit<=Math.max(2*tabSize,8)||indentedSoftWrap===false?0:Math.floor(wrapLimit/2);function getWrapIndent(){var indentation=0;if(maxIndent===0)return indentation;if(indentedSoftWrap){for(var i=0;i<tokens.length;i++){var token=tokens[i];if(token==SPACE)indentation+=1;else if(token==TAB)indentation+=tabSize;else if(token==TAB_SPACE)continue;else break;}}if(isCode&&indentedSoftWrap!==false)indentation+=tabSize;return Math.min(indentation,maxIndent);}function addSplit(screenPos){var len=screenPos-lastSplit;for(var i=lastSplit;i<screenPos;i++){var ch=tokens[i];if(ch===12||ch===2)len-=1;}if(!splits.length){indent=getWrapIndent();splits.indent=indent;}lastDocSplit+=len;splits.push(lastDocSplit);lastSplit=screenPos;}var indent=0;while(displayLength-lastSplit>wrapLimit-indent){var split=lastSplit+wrapLimit-indent;if(tokens[split-1]>=SPACE&&tokens[split]>=SPACE){addSplit(split);continue;}if(tokens[split]==PLACEHOLDER_START||tokens[split]==PLACEHOLDER_BODY){for(split;split!=lastSplit-1;split--){if(tokens[split]==PLACEHOLDER_START){break;}}if(split>lastSplit){addSplit(split);continue;}split=lastSplit+wrapLimit;for(split;split<tokens.length;split++){if(tokens[split]!=PLACEHOLDER_BODY){break;}}if(split==tokens.length){break;// Breaks the while-loop.
}addSplit(split);continue;}var minSplit=Math.max(split-(wrapLimit-(wrapLimit>>2)),lastSplit-1);while(split>minSplit&&tokens[split]<PLACEHOLDER_START){split--;}if(isCode){while(split>minSplit&&tokens[split]<PLACEHOLDER_START){split--;}while(split>minSplit&&tokens[split]==PUNCTUATION){split--;}}else{while(split>minSplit&&tokens[split]<SPACE){split--;}}if(split>minSplit){addSplit(++split);continue;}split=lastSplit+wrapLimit;if(tokens[split]==CHAR_EXT)split--;addSplit(split-indent);}return splits;};this.$getDisplayTokens=function(str,offset){var arr=[];var tabSize;offset=offset||0;for(var i=0;i<str.length;i++){var c=str.charCodeAt(i);if(c==9){tabSize=this.getScreenTabSize(arr.length+offset);arr.push(TAB);for(var n=1;n<tabSize;n++){arr.push(TAB_SPACE);}}else if(c==32){arr.push(SPACE);}else if(c>39&&c<48||c>57&&c<64){arr.push(PUNCTUATION);}else if(c>=0x1100&&isFullWidth(c)){arr.push(CHAR,CHAR_EXT);}else{arr.push(CHAR);}}return arr;};this.$getStringScreenWidth=function(str,maxScreenColumn,screenColumn){if(maxScreenColumn==0)return[0,0];if(maxScreenColumn==null)maxScreenColumn=Infinity;screenColumn=screenColumn||0;var c,column;for(column=0;column<str.length;column++){c=str.charCodeAt(column);if(c==9){screenColumn+=this.getScreenTabSize(screenColumn);}else if(c>=0x1100&&isFullWidth(c)){screenColumn+=2;}else{screenColumn+=1;}if(screenColumn>maxScreenColumn){break;}}return[screenColumn,column];};this.lineWidgets=null;this.getRowLength=function(row){var h=1;if(this.lineWidgets)h+=this.lineWidgets[row]&&this.lineWidgets[row].rowCount||0;if(!this.$useWrapMode||!this.$wrapData[row])return h;else return this.$wrapData[row].length+h;};this.getRowLineCount=function(row){if(!this.$useWrapMode||!this.$wrapData[row]){return 1;}else{return this.$wrapData[row].length+1;}};this.getRowWrapIndent=function(screenRow){if(this.$useWrapMode){var pos=this.screenToDocumentPosition(screenRow,Number.MAX_VALUE);var splits=this.$wrapData[pos.row];return splits.length&&splits[0]<pos.column?splits.indent:0;}else{return 0;}};this.getScreenLastRowColumn=function(screenRow){var pos=this.screenToDocumentPosition(screenRow,Number.MAX_VALUE);return this.documentToScreenColumn(pos.row,pos.column);};this.getDocumentLastRowColumn=function(docRow,docColumn){var screenRow=this.documentToScreenRow(docRow,docColumn);return this.getScreenLastRowColumn(screenRow);};this.getDocumentLastRowColumnPosition=function(docRow,docColumn){var screenRow=this.documentToScreenRow(docRow,docColumn);return this.screenToDocumentPosition(screenRow,Number.MAX_VALUE/10);};this.getRowSplitData=function(row){if(!this.$useWrapMode){return undefined;}else{return this.$wrapData[row];}};this.getScreenTabSize=function(screenColumn){return this.$tabSize-(screenColumn%this.$tabSize|0);};this.screenToDocumentRow=function(screenRow,screenColumn){return this.screenToDocumentPosition(screenRow,screenColumn).row;};this.screenToDocumentColumn=function(screenRow,screenColumn){return this.screenToDocumentPosition(screenRow,screenColumn).column;};this.screenToDocumentPosition=function(screenRow,screenColumn,offsetX){if(screenRow<0)return{row:0,column:0};var line;var docRow=0;var docColumn=0;var column;var row=0;var rowLength=0;var rowCache=this.$screenRowCache;var i=this.$getRowCacheIndex(rowCache,screenRow);var l=rowCache.length;if(l&&i>=0){var row=rowCache[i];var docRow=this.$docRowCache[i];var doCache=screenRow>rowCache[l-1];}else{var doCache=!l;}var maxRow=this.getLength()-1;var foldLine=this.getNextFoldLine(docRow);var foldStart=foldLine?foldLine.start.row:Infinity;while(row<=screenRow){rowLength=this.getRowLength(docRow);if(row+rowLength>screenRow||docRow>=maxRow){break;}else{row+=rowLength;docRow++;if(docRow>foldStart){docRow=foldLine.end.row+1;foldLine=this.getNextFoldLine(docRow,foldLine);foldStart=foldLine?foldLine.start.row:Infinity;}}if(doCache){this.$docRowCache.push(docRow);this.$screenRowCache.push(row);}}if(foldLine&&foldLine.start.row<=docRow){line=this.getFoldDisplayLine(foldLine);docRow=foldLine.start.row;}else if(row+rowLength<=screenRow||docRow>maxRow){return{row:maxRow,column:this.getLine(maxRow).length};}else{line=this.getLine(docRow);foldLine=null;}var wrapIndent=0,splitIndex=Math.floor(screenRow-row);if(this.$useWrapMode){var splits=this.$wrapData[docRow];if(splits){column=splits[splitIndex];if(splitIndex>0&&splits.length){wrapIndent=splits.indent;docColumn=splits[splitIndex-1]||splits[splits.length-1];line=line.substring(docColumn);}}}if(offsetX!==undefined&&this.$bidiHandler.isBidiRow(row+splitIndex,docRow,splitIndex))screenColumn=this.$bidiHandler.offsetToCol(offsetX);docColumn+=this.$getStringScreenWidth(line,screenColumn-wrapIndent)[1];if(this.$useWrapMode&&docColumn>=column)docColumn=column-1;if(foldLine)return foldLine.idxToPosition(docColumn);return{row:docRow,column:docColumn};};this.documentToScreenPosition=function(docRow,docColumn){if(typeof docColumn==="undefined")var pos=this.$clipPositionToDocument(docRow.row,docRow.column);else pos=this.$clipPositionToDocument(docRow,docColumn);docRow=pos.row;docColumn=pos.column;var screenRow=0;var foldStartRow=null;var fold=null;fold=this.getFoldAt(docRow,docColumn,1);if(fold){docRow=fold.start.row;docColumn=fold.start.column;}var rowEnd,row=0;var rowCache=this.$docRowCache;var i=this.$getRowCacheIndex(rowCache,docRow);var l=rowCache.length;if(l&&i>=0){var row=rowCache[i];var screenRow=this.$screenRowCache[i];var doCache=docRow>rowCache[l-1];}else{var doCache=!l;}var foldLine=this.getNextFoldLine(row);var foldStart=foldLine?foldLine.start.row:Infinity;while(row<docRow){if(row>=foldStart){rowEnd=foldLine.end.row+1;if(rowEnd>docRow)break;foldLine=this.getNextFoldLine(rowEnd,foldLine);foldStart=foldLine?foldLine.start.row:Infinity;}else{rowEnd=row+1;}screenRow+=this.getRowLength(row);row=rowEnd;if(doCache){this.$docRowCache.push(row);this.$screenRowCache.push(screenRow);}}var textLine="";if(foldLine&&row>=foldStart){textLine=this.getFoldDisplayLine(foldLine,docRow,docColumn);foldStartRow=foldLine.start.row;}else{textLine=this.getLine(docRow).substring(0,docColumn);foldStartRow=docRow;}var wrapIndent=0;if(this.$useWrapMode){var wrapRow=this.$wrapData[foldStartRow];if(wrapRow){var screenRowOffset=0;while(textLine.length>=wrapRow[screenRowOffset]){screenRow++;screenRowOffset++;}textLine=textLine.substring(wrapRow[screenRowOffset-1]||0,textLine.length);wrapIndent=screenRowOffset>0?wrapRow.indent:0;}}if(this.lineWidgets&&this.lineWidgets[row]&&this.lineWidgets[row].rowsAbove)screenRow+=this.lineWidgets[row].rowsAbove;return{row:screenRow,column:wrapIndent+this.$getStringScreenWidth(textLine)[0]};};this.documentToScreenColumn=function(row,docColumn){return this.documentToScreenPosition(row,docColumn).column;};this.documentToScreenRow=function(docRow,docColumn){return this.documentToScreenPosition(docRow,docColumn).row;};this.getScreenLength=function(){var screenRows=0;var fold=null;if(!this.$useWrapMode){screenRows=this.getLength();var foldData=this.$foldData;for(var i=0;i<foldData.length;i++){fold=foldData[i];screenRows-=fold.end.row-fold.start.row;}}else{var lastRow=this.$wrapData.length;var row=0,i=0;var fold=this.$foldData[i++];var foldStart=fold?fold.start.row:Infinity;while(row<lastRow){var splits=this.$wrapData[row];screenRows+=splits?splits.length+1:1;row++;if(row>foldStart){row=fold.end.row+1;fold=this.$foldData[i++];foldStart=fold?fold.start.row:Infinity;}}}if(this.lineWidgets)screenRows+=this.$getWidgetScreenLength();return screenRows;};this.$setFontMetrics=function(fm){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(str,maxScreenColumn,screenColumn){if(maxScreenColumn===0)return[0,0];if(!maxScreenColumn)maxScreenColumn=Infinity;screenColumn=screenColumn||0;var c,column;for(column=0;column<str.length;column++){c=str.charAt(column);if(c==="\t"){screenColumn+=this.getScreenTabSize(screenColumn);}else{screenColumn+=fm.getCharacterWidth(c);}if(screenColumn>maxScreenColumn){break;}}return[screenColumn,column];};};this.destroy=function(){if(this.bgTokenizer){this.bgTokenizer.setDocument(null);this.bgTokenizer=null;}this.$stopWorker();this.removeAllListeners();this.selection.detach();};this.isFullWidth=isFullWidth;function isFullWidth(c){if(c<0x1100)return false;return c>=0x1100&&c<=0x115F||c>=0x11A3&&c<=0x11A7||c>=0x11FA&&c<=0x11FF||c>=0x2329&&c<=0x232A||c>=0x2E80&&c<=0x2E99||c>=0x2E9B&&c<=0x2EF3||c>=0x2F00&&c<=0x2FD5||c>=0x2FF0&&c<=0x2FFB||c>=0x3000&&c<=0x303E||c>=0x3041&&c<=0x3096||c>=0x3099&&c<=0x30FF||c>=0x3105&&c<=0x312D||c>=0x3131&&c<=0x318E||c>=0x3190&&c<=0x31BA||c>=0x31C0&&c<=0x31E3||c>=0x31F0&&c<=0x321E||c>=0x3220&&c<=0x3247||c>=0x3250&&c<=0x32FE||c>=0x3300&&c<=0x4DBF||c>=0x4E00&&c<=0xA48C||c>=0xA490&&c<=0xA4C6||c>=0xA960&&c<=0xA97C||c>=0xAC00&&c<=0xD7A3||c>=0xD7B0&&c<=0xD7C6||c>=0xD7CB&&c<=0xD7FB||c>=0xF900&&c<=0xFAFF||c>=0xFE10&&c<=0xFE19||c>=0xFE30&&c<=0xFE52||c>=0xFE54&&c<=0xFE66||c>=0xFE68&&c<=0xFE6B||c>=0xFF01&&c<=0xFF60||c>=0xFFE0&&c<=0xFFE6;}}).call(EditSession.prototype);require("./edit_session/folding").Folding.call(EditSession.prototype);require("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype);config.defineOptions(EditSession.prototype,"session",{wrap:{set:function set(value){if(!value||value=="off")value=false;else if(value=="free")value=true;else if(value=="printMargin")value=-1;else if(typeof value=="string")value=parseInt(value,10)||false;if(this.$wrap==value)return;this.$wrap=value;if(!value){this.setUseWrapMode(false);}else{var col=typeof value=="number"?value:null;this.setWrapLimitRange(col,col);this.setUseWrapMode(true);}},get:function get(){if(this.getUseWrapMode()){if(this.$wrap==-1)return"printMargin";if(!this.getWrapLimitRange().min)return"free";return this.$wrap;}return"off";},handlesSet:true},wrapMethod:{set:function set(val){val=val=="auto"?this.$mode.type!="text":val!="text";if(val!=this.$wrapAsCode){this.$wrapAsCode=val;if(this.$useWrapMode){this.$useWrapMode=false;this.setUseWrapMode(true);}}},initialValue:"auto"},indentedSoftWrap:{set:function set(){if(this.$useWrapMode){this.$useWrapMode=false;this.setUseWrapMode(true);}},initialValue:true},firstLineNumber:{set:function set(){this._signal("changeBreakpoint");},initialValue:1},useWorker:{set:function set(useWorker){this.$useWorker=useWorker;this.$stopWorker();if(useWorker)this.$startWorker();},initialValue:true},useSoftTabs:{initialValue:true},tabSize:{set:function set(tabSize){tabSize=parseInt(tabSize);if(tabSize>0&&this.$tabSize!==tabSize){this.$modified=true;this.$rowLengthCache=[];this.$tabSize=tabSize;this._signal("changeTabSize");}},initialValue:4,handlesSet:true},navigateWithinSoftTabs:{initialValue:false},foldStyle:{set:function set(val){this.setFoldStyle(val);},handlesSet:true},overwrite:{set:function set(val){this._signal("changeOverwrite");},initialValue:false},newLineMode:{set:function set(val){this.doc.setNewLineMode(val);},get:function get(){return this.doc.getNewLineMode();},handlesSet:true},mode:{set:function set(val){this.setMode(val);},get:function get(){return this.$modeId;},handlesSet:true}});exports.EditSession=EditSession;});ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(require,exports,module){"use strict";var lang=require("./lib/lang");var oop=require("./lib/oop");var Range=require("./range").Range;var Search=function Search(){this.$options={};};(function(){this.set=function(options){oop.mixin(this.$options,options);return this;};this.getOptions=function(){return lang.copyObject(this.$options);};this.setOptions=function(options){this.$options=options;};this.find=function(session){var options=this.$options;var iterator=this.$matchIterator(session,options);if(!iterator)return false;var firstRange=null;iterator.forEach(function(sr,sc,er,ec){firstRange=new Range(sr,sc,er,ec);if(sc==ec&&options.start&&options.start.start&&options.skipCurrent!=false&&firstRange.isEqual(options.start)){firstRange=null;return false;}return true;});return firstRange;};this.findAll=function(session){var options=this.$options;if(!options.needle)return[];this.$assembleRegExp(options);var range=options.range;var lines=range?session.getLines(range.start.row,range.end.row):session.doc.getAllLines();var ranges=[];var re=options.re;if(options.$isMultiLine){var len=re.length;var maxRow=lines.length-len;var prevRange;outer:for(var row=re.offset||0;row<=maxRow;row++){for(var j=0;j<len;j++){if(lines[row+j].search(re[j])==-1)continue outer;}var startLine=lines[row];var line=lines[row+len-1];var startIndex=startLine.length-startLine.match(re[0])[0].length;var endIndex=line.match(re[len-1])[0].length;if(prevRange&&prevRange.end.row===row&&prevRange.end.column>startIndex){continue;}ranges.push(prevRange=new Range(row,startIndex,row+len-1,endIndex));if(len>2)row=row+len-2;}}else{for(var i=0;i<lines.length;i++){var matches=lang.getMatchOffsets(lines[i],re);for(var j=0;j<matches.length;j++){var match=matches[j];ranges.push(new Range(i,match.offset,i,match.offset+match.length));}}}if(range){var startColumn=range.start.column;var endColumn=range.start.column;var i=0,j=ranges.length-1;while(i<j&&ranges[i].start.column<startColumn&&ranges[i].start.row==range.start.row){i++;}while(i<j&&ranges[j].end.column>endColumn&&ranges[j].end.row==range.end.row){j--;}ranges=ranges.slice(i,j+1);for(i=0,j=ranges.length;i<j;i++){ranges[i].start.row+=range.start.row;ranges[i].end.row+=range.start.row;}}return ranges;};this.replace=function(input,replacement){var options=this.$options;var re=this.$assembleRegExp(options);if(options.$isMultiLine)return replacement;if(!re)return;var match=re.exec(input);if(!match||match[0].length!=input.length)return null;replacement=input.replace(re,replacement);if(options.preserveCase){replacement=replacement.split("");for(var i=Math.min(input.length,input.length);i--;){var ch=input[i];if(ch&&ch.toLowerCase()!=ch)replacement[i]=replacement[i].toUpperCase();else replacement[i]=replacement[i].toLowerCase();}replacement=replacement.join("");}return replacement;};this.$assembleRegExp=function(options,$disableFakeMultiline){if(options.needle instanceof RegExp)return options.re=options.needle;var needle=options.needle;if(!options.needle)return options.re=false;if(!options.regExp)needle=lang.escapeRegExp(needle);if(options.wholeWord)needle=addWordBoundary(needle,options);var modifier=options.caseSensitive?"gm":"gmi";options.$isMultiLine=!$disableFakeMultiline&&/[\n\r]/.test(needle);if(options.$isMultiLine)return options.re=this.$assembleMultilineRegExp(needle,modifier);try{var re=new RegExp(needle,modifier);}catch(e){re=false;}return options.re=re;};this.$assembleMultilineRegExp=function(needle,modifier){var parts=needle.replace(/\r\n|\r|\n/g,"$\n^").split("\n");var re=[];for(var i=0;i<parts.length;i++){try{re.push(new RegExp(parts[i],modifier));}catch(e){return false;}}return re;};this.$matchIterator=function(session,options){var re=this.$assembleRegExp(options);if(!re)return false;var backwards=options.backwards==true;var skipCurrent=options.skipCurrent!=false;var range=options.range;var start=options.start;if(!start)start=range?range[backwards?"end":"start"]:session.selection.getRange();if(start.start)start=start[skipCurrent!=backwards?"end":"start"];var firstRow=range?range.start.row:0;var lastRow=range?range.end.row:session.getLength()-1;if(backwards){var forEach=function forEach(callback){var row=start.row;if(forEachInLine(row,start.column,callback))return;for(row--;row>=firstRow;row--){if(forEachInLine(row,Number.MAX_VALUE,callback))return;}if(options.wrap==false)return;for(row=lastRow,firstRow=start.row;row>=firstRow;row--){if(forEachInLine(row,Number.MAX_VALUE,callback))return;}};}else{var forEach=function forEach(callback){var row=start.row;if(forEachInLine(row,start.column,callback))return;for(row=row+1;row<=lastRow;row++){if(forEachInLine(row,0,callback))return;}if(options.wrap==false)return;for(row=firstRow,lastRow=start.row;row<=lastRow;row++){if(forEachInLine(row,0,callback))return;}};}if(options.$isMultiLine){var len=re.length;var forEachInLine=function forEachInLine(row,offset,callback){var startRow=backwards?row-len+1:row;if(startRow<0)return;var line=session.getLine(startRow);var startIndex=line.search(re[0]);if(!backwards&&startIndex<offset||startIndex===-1)return;for(var i=1;i<len;i++){line=session.getLine(startRow+i);if(line.search(re[i])==-1)return;}var endIndex=line.match(re[len-1])[0].length;if(backwards&&endIndex>offset)return;if(callback(startRow,startIndex,startRow+len-1,endIndex))return true;};}else if(backwards){var forEachInLine=function forEachInLine(row,endIndex,callback){var line=session.getLine(row);var matches=[];var m,last=0;re.lastIndex=0;while(m=re.exec(line)){var length=m[0].length;last=m.index;if(!length){if(last>=line.length)break;re.lastIndex=last+=1;}if(m.index+length>endIndex)break;matches.push(m.index,length);}for(var i=matches.length-1;i>=0;i-=2){var column=matches[i-1];var length=matches[i];if(callback(row,column,row,column+length))return true;}};}else{var forEachInLine=function forEachInLine(row,startIndex,callback){var line=session.getLine(row);var last;var m;re.lastIndex=startIndex;while(m=re.exec(line)){var length=m[0].length;last=m.index;if(callback(row,last,row,last+length))return true;if(!length){re.lastIndex=last+=1;if(last>=line.length)return false;}}};}return{forEach:forEach};};}).call(Search.prototype);function addWordBoundary(needle,options){function wordBoundary(c){if(/\w/.test(c)||options.regExp)return"\\b";return"";}return wordBoundary(needle[0])+needle+wordBoundary(needle[needle.length-1]);}exports.Search=Search;});ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(require,exports,module){"use strict";var keyUtil=require("../lib/keys");var useragent=require("../lib/useragent");var KEY_MODS=keyUtil.KEY_MODS;function HashHandler(config,platform){this.platform=platform||(useragent.isMac?"mac":"win");this.commands={};this.commandKeyBinding={};this.addCommands(config);this.$singleCommand=true;}function MultiHashHandler(config,platform){HashHandler.call(this,config,platform);this.$singleCommand=false;}MultiHashHandler.prototype=HashHandler.prototype;(function(){this.addCommand=function(command){if(this.commands[command.name])this.removeCommand(command);this.commands[command.name]=command;if(command.bindKey)this._buildKeyHash(command);};this.removeCommand=function(command,keepCommand){var name=command&&(typeof command==='string'?command:command.name);command=this.commands[name];if(!keepCommand)delete this.commands[name];var ckb=this.commandKeyBinding;for(var keyId in ckb){var cmdGroup=ckb[keyId];if(cmdGroup==command){delete ckb[keyId];}else if(Array.isArray(cmdGroup)){var i=cmdGroup.indexOf(command);if(i!=-1){cmdGroup.splice(i,1);if(cmdGroup.length==1)ckb[keyId]=cmdGroup[0];}}}};this.bindKey=function(key,command,position){if(_typeof(key)=="object"&&key){if(position==undefined)position=key.position;key=key[this.platform];}if(!key)return;if(typeof command=="function")return this.addCommand({exec:command,bindKey:key,name:command.name||key});key.split("|").forEach(function(keyPart){var chain="";if(keyPart.indexOf(" ")!=-1){var parts=keyPart.split(/\s+/);keyPart=parts.pop();parts.forEach(function(keyPart){var binding=this.parseKeys(keyPart);var id=KEY_MODS[binding.hashId]+binding.key;chain+=(chain?" ":"")+id;this._addCommandToBinding(chain,"chainKeys");},this);chain+=" ";}var binding=this.parseKeys(keyPart);var id=KEY_MODS[binding.hashId]+binding.key;this._addCommandToBinding(chain+id,command,position);},this);};function getPosition(command){return _typeof(command)=="object"&&command.bindKey&&command.bindKey.position||(command.isDefault?-100:0);}this._addCommandToBinding=function(keyId,command,position){var ckb=this.commandKeyBinding,i;if(!command){delete ckb[keyId];}else if(!ckb[keyId]||this.$singleCommand){ckb[keyId]=command;}else{if(!Array.isArray(ckb[keyId])){ckb[keyId]=[ckb[keyId]];}else if((i=ckb[keyId].indexOf(command))!=-1){ckb[keyId].splice(i,1);}if(typeof position!="number"){position=getPosition(command);}var commands=ckb[keyId];for(i=0;i<commands.length;i++){var other=commands[i];var otherPos=getPosition(other);if(otherPos>position)break;}commands.splice(i,0,command);}};this.addCommands=function(commands){commands&&Object.keys(commands).forEach(function(name){var command=commands[name];if(!command)return;if(typeof command==="string")return this.bindKey(command,name);if(typeof command==="function")command={exec:command};if(_typeof(command)!=="object")return;if(!command.name)command.name=name;this.addCommand(command);},this);};this.removeCommands=function(commands){Object.keys(commands).forEach(function(name){this.removeCommand(commands[name]);},this);};this.bindKeys=function(keyList){Object.keys(keyList).forEach(function(key){this.bindKey(key,keyList[key]);},this);};this._buildKeyHash=function(command){this.bindKey(command.bindKey,command);};this.parseKeys=function(keys){var parts=keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(x){return x;});var key=parts.pop();var keyCode=keyUtil[key];if(keyUtil.FUNCTION_KEYS[keyCode])key=keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();else if(!parts.length)return{key:key,hashId:-1};else if(parts.length==1&&parts[0]=="shift")return{key:key.toUpperCase(),hashId:-1};var hashId=0;for(var i=parts.length;i--;){var modifier=keyUtil.KEY_MODS[parts[i]];if(modifier==null){if(typeof console!="undefined")console.error("invalid modifier "+parts[i]+" in "+keys);return false;}hashId|=modifier;}return{key:key,hashId:hashId};};this.findKeyCommand=function findKeyCommand(hashId,keyString){var key=KEY_MODS[hashId]+keyString;return this.commandKeyBinding[key];};this.handleKeyboard=function(data,hashId,keyString,keyCode){if(keyCode<0)return;var key=KEY_MODS[hashId]+keyString;var command=this.commandKeyBinding[key];if(data.$keyChain){data.$keyChain+=" "+key;command=this.commandKeyBinding[data.$keyChain]||command;}if(command){if(command=="chainKeys"||command[command.length-1]=="chainKeys"){data.$keyChain=data.$keyChain||key;return{command:"null"};}}if(data.$keyChain){if((!hashId||hashId==4)&&keyString.length==1)data.$keyChain=data.$keyChain.slice(0,-key.length-1);// wait for input
else if(hashId==-1||keyCode>0)data.$keyChain="";// reset keyChain
}return{command:command};};this.getStatusText=function(editor,data){return data.$keyChain||"";};}).call(HashHandler.prototype);exports.HashHandler=HashHandler;exports.MultiHashHandler=MultiHashHandler;});ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var MultiHashHandler=require("../keyboard/hash_handler").MultiHashHandler;var EventEmitter=require("../lib/event_emitter").EventEmitter;var CommandManager=function CommandManager(platform,commands){MultiHashHandler.call(this,commands,platform);this.byName=this.commands;this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{});});};oop.inherits(CommandManager,MultiHashHandler);(function(){oop.implement(this,EventEmitter);this.exec=function(command,editor,args){if(Array.isArray(command)){for(var i=command.length;i--;){if(this.exec(command[i],editor,args))return true;}return false;}if(typeof command==="string")command=this.commands[command];if(!command)return false;if(editor&&editor.$readOnly&&!command.readOnly)return false;if(this.$checkCommandState!=false&&command.isAvailable&&!command.isAvailable(editor))return false;var e={editor:editor,command:command,args:args};e.returnValue=this._emit("exec",e);this._signal("afterExec",e);return e.returnValue===false?false:true;};this.toggleRecording=function(editor){if(this.$inReplay)return;editor&&editor._emit("changeStatus");if(this.recording){this.macro.pop();this.off("exec",this.$addCommandToMacro);if(!this.macro.length)this.macro=this.oldMacro;return this.recording=false;}if(!this.$addCommandToMacro){this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args]);}.bind(this);}this.oldMacro=this.macro;this.macro=[];this.on("exec",this.$addCommandToMacro);return this.recording=true;};this.replay=function(editor){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(editor);try{this.$inReplay=true;this.macro.forEach(function(x){if(typeof x=="string")this.exec(x,editor);else this.exec(x[0],editor,x[1]);},this);}finally{this.$inReplay=false;}};this.trimMacro=function(m){return m.map(function(x){if(typeof x[0]!="string")x[0]=x[0].name;if(!x[1])x=x[0];return x;});};}).call(CommandManager.prototype);exports.CommandManager=CommandManager;});ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(require,exports,module){"use strict";var lang=require("../lib/lang");var config=require("../config");var Range=require("../range").Range;function bindKey(win,mac){return{win:win,mac:mac};}exports.commands=[{name:"showSettingsMenu",bindKey:bindKey("Ctrl-,","Command-,"),exec:function exec(editor){config.loadModule("ace/ext/settings_menu",function(module){module.init(editor);editor.showSettingsMenu();});},readOnly:true},{name:"goToNextError",bindKey:bindKey("Alt-E","F4"),exec:function exec(editor){config.loadModule("./ext/error_marker",function(module){module.showErrorMarker(editor,1);});},scrollIntoView:"animate",readOnly:true},{name:"goToPreviousError",bindKey:bindKey("Alt-Shift-E","Shift-F4"),exec:function exec(editor){config.loadModule("./ext/error_marker",function(module){module.showErrorMarker(editor,-1);});},scrollIntoView:"animate",readOnly:true},{name:"selectall",description:"Select all",bindKey:bindKey("Ctrl-A","Command-A"),exec:function exec(editor){editor.selectAll();},readOnly:true},{name:"centerselection",description:"Center selection",bindKey:bindKey(null,"Ctrl-L"),exec:function exec(editor){editor.centerSelection();},readOnly:true},{name:"gotoline",description:"Go to line...",bindKey:bindKey("Ctrl-L","Command-L"),exec:function exec(editor,line){if(typeof line==="number"&&!isNaN(line))editor.gotoLine(line);editor.prompt({$type:"gotoLine"});},readOnly:true},{name:"fold",bindKey:bindKey("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function exec(editor){editor.session.toggleFold(false);},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"unfold",bindKey:bindKey("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function exec(editor){editor.session.toggleFold(true);},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"toggleFoldWidget",bindKey:bindKey("F2","F2"),exec:function exec(editor){editor.session.toggleFoldWidget();},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"toggleParentFoldWidget",bindKey:bindKey("Alt-F2","Alt-F2"),exec:function exec(editor){editor.session.toggleFoldWidget(true);},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"foldall",description:"Fold all",bindKey:bindKey(null,"Ctrl-Command-Option-0"),exec:function exec(editor){editor.session.foldAll();},scrollIntoView:"center",readOnly:true},{name:"foldAllComments",description:"Fold all comments",bindKey:bindKey(null,"Ctrl-Command-Option-0"),exec:function exec(editor){editor.session.foldAllComments();},scrollIntoView:"center",readOnly:true},{name:"foldOther",description:"Fold other",bindKey:bindKey("Alt-0","Command-Option-0"),exec:function exec(editor){editor.session.foldAll();editor.session.unfold(editor.selection.getAllRanges());},scrollIntoView:"center",readOnly:true},{name:"unfoldall",description:"Unfold all",bindKey:bindKey("Alt-Shift-0","Command-Option-Shift-0"),exec:function exec(editor){editor.session.unfold();},scrollIntoView:"center",readOnly:true},{name:"findnext",description:"Find next",bindKey:bindKey("Ctrl-K","Command-G"),exec:function exec(editor){editor.findNext();},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"findprevious",description:"Find previous",bindKey:bindKey("Ctrl-Shift-K","Command-Shift-G"),exec:function exec(editor){editor.findPrevious();},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"selectOrFindNext",description:"Select or find next",bindKey:bindKey("Alt-K","Ctrl-G"),exec:function exec(editor){if(editor.selection.isEmpty())editor.selection.selectWord();else editor.findNext();},readOnly:true},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:bindKey("Alt-Shift-K","Ctrl-Shift-G"),exec:function exec(editor){if(editor.selection.isEmpty())editor.selection.selectWord();else editor.findPrevious();},readOnly:true},{name:"find",description:"Find",bindKey:bindKey("Ctrl-F","Command-F"),exec:function exec(editor){config.loadModule("ace/ext/searchbox",function(e){e.Search(editor);});},readOnly:true},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function exec(editor){editor.toggleOverwrite();},readOnly:true},{name:"selecttostart",description:"Select to start",bindKey:bindKey("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function exec(editor){editor.getSelection().selectFileStart();},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:bindKey("Ctrl-Home","Command-Home|Command-Up"),exec:function exec(editor){editor.navigateFileStart();},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:bindKey("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function exec(editor){editor.getSelection().selectUp();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"golineup",description:"Go line up",bindKey:bindKey("Up","Up|Ctrl-P"),exec:function exec(editor,args){editor.navigateUp(args.times);},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selecttoend",description:"Select to end",bindKey:bindKey("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function exec(editor){editor.getSelection().selectFileEnd();},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:bindKey("Ctrl-End","Command-End|Command-Down"),exec:function exec(editor){editor.navigateFileEnd();},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:bindKey("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function exec(editor){editor.getSelection().selectDown();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"golinedown",description:"Go line down",bindKey:bindKey("Down","Down|Ctrl-N"),exec:function exec(editor,args){editor.navigateDown(args.times);},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectwordleft",description:"Select word left",bindKey:bindKey("Ctrl-Shift-Left","Option-Shift-Left"),exec:function exec(editor){editor.getSelection().selectWordLeft();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotowordleft",description:"Go to word left",bindKey:bindKey("Ctrl-Left","Option-Left"),exec:function exec(editor){editor.navigateWordLeft();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selecttolinestart",description:"Select to line start",bindKey:bindKey("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function exec(editor){editor.getSelection().selectLineStart();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotolinestart",description:"Go to line start",bindKey:bindKey("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function exec(editor){editor.navigateLineStart();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectleft",description:"Select left",bindKey:bindKey("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function exec(editor){editor.getSelection().selectLeft();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotoleft",description:"Go to left",bindKey:bindKey("Left","Left|Ctrl-B"),exec:function exec(editor,args){editor.navigateLeft(args.times);},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectwordright",description:"Select word right",bindKey:bindKey("Ctrl-Shift-Right","Option-Shift-Right"),exec:function exec(editor){editor.getSelection().selectWordRight();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotowordright",description:"Go to word right",bindKey:bindKey("Ctrl-Right","Option-Right"),exec:function exec(editor){editor.navigateWordRight();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selecttolineend",description:"Select to line end",bindKey:bindKey("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function exec(editor){editor.getSelection().selectLineEnd();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotolineend",description:"Go to line end",bindKey:bindKey("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function exec(editor){editor.navigateLineEnd();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectright",description:"Select right",bindKey:bindKey("Shift-Right","Shift-Right"),exec:function exec(editor){editor.getSelection().selectRight();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotoright",description:"Go to right",bindKey:bindKey("Right","Right|Ctrl-F"),exec:function exec(editor,args){editor.navigateRight(args.times);},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function exec(editor){editor.selectPageDown();},readOnly:true},{name:"pagedown",description:"Page down",bindKey:bindKey(null,"Option-PageDown"),exec:function exec(editor){editor.scrollPageDown();},readOnly:true},{name:"gotopagedown",description:"Go to page down",bindKey:bindKey("PageDown","PageDown|Ctrl-V"),exec:function exec(editor){editor.gotoPageDown();},readOnly:true},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function exec(editor){editor.selectPageUp();},readOnly:true},{name:"pageup",description:"Page up",bindKey:bindKey(null,"Option-PageUp"),exec:function exec(editor){editor.scrollPageUp();},readOnly:true},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function exec(editor){editor.gotoPageUp();},readOnly:true},{name:"scrollup",description:"Scroll up",bindKey:bindKey("Ctrl-Up",null),exec:function exec(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight);},readOnly:true},{name:"scrolldown",description:"Scroll down",bindKey:bindKey("Ctrl-Down",null),exec:function exec(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight);},readOnly:true},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function exec(editor){editor.getSelection().selectLineStart();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function exec(editor){editor.getSelection().selectLineEnd();},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"togglerecording",description:"Toggle recording",bindKey:bindKey("Ctrl-Alt-E","Command-Option-E"),exec:function exec(editor){editor.commands.toggleRecording(editor);},readOnly:true},{name:"replaymacro",description:"Replay macro",bindKey:bindKey("Ctrl-Shift-E","Command-Shift-E"),exec:function exec(editor){editor.commands.replay(editor);},readOnly:true},{name:"jumptomatching",description:"Jump to matching",bindKey:bindKey("Ctrl-\\|Ctrl-P","Command-\\"),exec:function exec(editor){editor.jumpToMatching();},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:true},{name:"selecttomatching",description:"Select to matching",bindKey:bindKey("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function exec(editor){editor.jumpToMatching(true);},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:true},{name:"expandToMatching",description:"Expand to matching",bindKey:bindKey("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function exec(editor){editor.jumpToMatching(true,true);},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:true},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:bindKey(null,null),exec:function exec(){},passEvent:true,readOnly:true},{name:"copy",description:"Copy",exec:function exec(editor){},readOnly:true},{name:"cut",description:"Cut",exec:function exec(editor){var cutLine=editor.$copyWithEmptySelection&&editor.selection.isEmpty();var range=cutLine?editor.selection.getLineRange():editor.selection.getRange();editor._emit("cut",range);if(!range.isEmpty())editor.session.remove(range);editor.clearSelection();},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function exec(editor,args){editor.$handlePaste(args);},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:bindKey("Ctrl-D","Command-D"),exec:function exec(editor){editor.removeLines();},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:bindKey("Ctrl-Shift-D","Command-Shift-D"),exec:function exec(editor){editor.duplicateSelection();},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:bindKey("Ctrl-Alt-S","Command-Alt-S"),exec:function exec(editor){editor.sortLines();},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:bindKey("Ctrl-/","Command-/"),exec:function exec(editor){editor.toggleCommentLines();},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:bindKey("Ctrl-Shift-/","Command-Shift-/"),exec:function exec(editor){editor.toggleBlockComment();},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:bindKey("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function exec(editor){editor.modifyNumber(1);},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:bindKey("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function exec(editor){editor.modifyNumber(-1);},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:bindKey("Ctrl-H","Command-Option-F"),exec:function exec(editor){config.loadModule("ace/ext/searchbox",function(e){e.Search(editor,true);});}},{name:"undo",description:"Undo",bindKey:bindKey("Ctrl-Z","Command-Z"),exec:function exec(editor){editor.undo();}},{name:"redo",description:"Redo",bindKey:bindKey("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function exec(editor){editor.redo();}},{name:"copylinesup",description:"Copy lines up",bindKey:bindKey("Alt-Shift-Up","Command-Option-Up"),exec:function exec(editor){editor.copyLinesUp();},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:bindKey("Alt-Up","Option-Up"),exec:function exec(editor){editor.moveLinesUp();},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:bindKey("Alt-Shift-Down","Command-Option-Down"),exec:function exec(editor){editor.copyLinesDown();},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:bindKey("Alt-Down","Option-Down"),exec:function exec(editor){editor.moveLinesDown();},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:bindKey("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function exec(editor){editor.remove("right");},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:bindKey("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function exec(editor){editor.remove("left");},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:bindKey("Shift-Delete",null),exec:function exec(editor){if(editor.selection.isEmpty()){editor.remove("left");}else{return false;}},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:bindKey("Alt-Backspace","Command-Backspace"),exec:function exec(editor){editor.removeToLineStart();},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:bindKey("Alt-Delete","Ctrl-K|Command-Delete"),exec:function exec(editor){editor.removeToLineEnd();},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:bindKey("Ctrl-Shift-Backspace",null),exec:function exec(editor){var range=editor.selection.getRange();range.start.column=0;editor.session.remove(range);},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:bindKey("Ctrl-Shift-Delete",null),exec:function exec(editor){var range=editor.selection.getRange();range.end.column=Number.MAX_VALUE;editor.session.remove(range);},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:bindKey("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function exec(editor){editor.removeWordLeft();},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:bindKey("Ctrl-Delete","Alt-Delete"),exec:function exec(editor){editor.removeWordRight();},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:bindKey("Shift-Tab","Shift-Tab"),exec:function exec(editor){editor.blockOutdent();},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:bindKey("Tab","Tab"),exec:function exec(editor){editor.indent();},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:bindKey("Ctrl-[","Ctrl-["),exec:function exec(editor){editor.blockOutdent();},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:bindKey("Ctrl-]","Ctrl-]"),exec:function exec(editor){editor.blockIndent();},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function exec(editor,str){editor.insert(str);},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function exec(editor,args){editor.insert(lang.stringRepeat(args.text||"",args.times||1));},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:bindKey(null,"Ctrl-O"),exec:function exec(editor){editor.splitLine();},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:bindKey("Alt-Shift-X","Ctrl-T"),exec:function exec(editor){editor.transposeLetters();},multiSelectAction:function multiSelectAction(editor){editor.transposeSelections(1);},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:bindKey("Ctrl-U","Ctrl-U"),exec:function exec(editor){editor.toUpperCase();},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:bindKey("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function exec(editor){editor.toLowerCase();},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:bindKey(null,null),exec:function exec(editor){editor.autoIndent();},multiSelectAction:"forEachLine",scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:bindKey("Ctrl-Shift-L","Command-Shift-L"),exec:function exec(editor){var range=editor.selection.getRange();range.start.column=range.end.column=0;range.end.row++;editor.selection.setRange(range,false);},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"joinlines",description:"Join lines",bindKey:bindKey(null,null),exec:function exec(editor){var isBackwards=editor.selection.isBackwards();var selectionStart=isBackwards?editor.selection.getSelectionLead():editor.selection.getSelectionAnchor();var selectionEnd=isBackwards?editor.selection.getSelectionAnchor():editor.selection.getSelectionLead();var firstLineEndCol=editor.session.doc.getLine(selectionStart.row).length;var selectedText=editor.session.doc.getTextRange(editor.selection.getRange());var selectedCount=selectedText.replace(/\n\s*/," ").length;var insertLine=editor.session.doc.getLine(selectionStart.row);for(var i=selectionStart.row+1;i<=selectionEnd.row+1;i++){var curLine=lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));if(curLine.length!==0){curLine=" "+curLine;}insertLine+=curLine;}if(selectionEnd.row+1<editor.session.doc.getLength()-1){insertLine+=editor.session.doc.getNewLineCharacter();}editor.clearSelection();editor.session.doc.replace(new Range(selectionStart.row,0,selectionEnd.row+2,0),insertLine);if(selectedCount>0){editor.selection.moveCursorTo(selectionStart.row,selectionStart.column);editor.selection.selectTo(selectionStart.row,selectionStart.column+selectedCount);}else{firstLineEndCol=editor.session.doc.getLine(selectionStart.row).length>firstLineEndCol?firstLineEndCol+1:firstLineEndCol;editor.selection.moveCursorTo(selectionStart.row,firstLineEndCol);}},multiSelectAction:"forEach",readOnly:true},{name:"invertSelection",description:"Invert selection",bindKey:bindKey(null,null),exec:function exec(editor){var endRow=editor.session.doc.getLength()-1;var endCol=editor.session.doc.getLine(endRow).length;var ranges=editor.selection.rangeList.ranges;var newRanges=[];if(ranges.length<1){ranges=[editor.selection.getRange()];}for(var i=0;i<ranges.length;i++){if(i==ranges.length-1){if(!(ranges[i].end.row===endRow&&ranges[i].end.column===endCol)){newRanges.push(new Range(ranges[i].end.row,ranges[i].end.column,endRow,endCol));}}if(i===0){if(!(ranges[i].start.row===0&&ranges[i].start.column===0)){newRanges.push(new Range(0,0,ranges[i].start.row,ranges[i].start.column));}}else{newRanges.push(new Range(ranges[i-1].end.row,ranges[i-1].end.column,ranges[i].start.row,ranges[i].start.column));}}editor.exitMultiSelectMode();editor.clearSelection();for(var i=0;i<newRanges.length;i++){editor.selection.addRange(newRanges[i],false);}},readOnly:true,scrollIntoView:"none"},{name:"addLineAfter",exec:function exec(editor){editor.selection.clearSelection();editor.navigateLineEnd();editor.insert("\n");},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"addLineBefore",exec:function exec(editor){editor.selection.clearSelection();var cursor=editor.getCursorPosition();editor.selection.moveTo(cursor.row-1,Number.MAX_VALUE);editor.insert("\n");if(cursor.row===0)editor.navigateUp();},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"openCommandPallete",description:"Open command pallete",bindKey:bindKey("F1","F1"),exec:function exec(editor){editor.prompt({$type:"commands"});},readOnly:true},{name:"modeSelect",description:"Change language mode...",bindKey:bindKey(null,null),exec:function exec(editor){editor.prompt({$type:"modes"});},readOnly:true}];for(var i=1;i<9;i++){exports.commands.push({name:"foldToLevel"+i,description:"Fold To Level "+i,level:i,exec:function exec(editor){editor.session.foldToLevel(this.level);},scrollIntoView:"center",readOnly:true});}});ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator","ace/clipboard"],function(require,exports,module){"use strict";require("./lib/fixoldbrowsers");var oop=require("./lib/oop");var dom=require("./lib/dom");var lang=require("./lib/lang");var useragent=require("./lib/useragent");var TextInput=require("./keyboard/textinput").TextInput;var MouseHandler=require("./mouse/mouse_handler").MouseHandler;var FoldHandler=require("./mouse/fold_handler").FoldHandler;var KeyBinding=require("./keyboard/keybinding").KeyBinding;var EditSession=require("./edit_session").EditSession;var Search=require("./search").Search;var Range=require("./range").Range;var EventEmitter=require("./lib/event_emitter").EventEmitter;var CommandManager=require("./commands/command_manager").CommandManager;var defaultCommands=require("./commands/default_commands").commands;var config=require("./config");var TokenIterator=require("./token_iterator").TokenIterator;var clipboard=require("./clipboard");var Editor=function Editor(renderer,session,options){this.$toDestroy=[];var container=renderer.getContainerElement();this.container=container;this.renderer=renderer;this.id="editor"+ ++Editor.$uid;this.commands=new CommandManager(useragent.isMac?"mac":"win",defaultCommands);if((typeof document==="undefined"?"undefined":_typeof(document))=="object"){this.textInput=new TextInput(renderer.getTextAreaContainer(),this);this.renderer.textarea=this.textInput.getElement();this.$mouseHandler=new MouseHandler(this);new FoldHandler(this);}this.keyBinding=new KeyBinding(this);this.$search=new Search().set({wrap:true});this.$historyTracker=this.$historyTracker.bind(this);this.commands.on("exec",this.$historyTracker);this.$initOperationListeners();this._$emitInputEvent=lang.delayedCall(function(){this._signal("input",{});if(this.session&&this.session.bgTokenizer)this.session.bgTokenizer.scheduleStart();}.bind(this));this.on("change",function(_,_self){_self._$emitInputEvent.schedule(31);});this.setSession(session||options&&options.session||new EditSession(""));config.resetOptions(this);if(options)this.setOptions(options);config._signal("editor",this);};Editor.$uid=0;(function(){oop.implement(this,EventEmitter);this.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),true);this.commands.on("afterExec",this.endOperation.bind(this),true);this.$opResetTimer=lang.delayedCall(this.endOperation.bind(this,true));this.on("change",function(){if(!this.curOp){this.startOperation();this.curOp.selectionBefore=this.$lastSel;}this.curOp.docChanged=true;}.bind(this),true);this.on("changeSelection",function(){if(!this.curOp){this.startOperation();this.curOp.selectionBefore=this.$lastSel;}this.curOp.selectionChanged=true;}.bind(this),true);};this.curOp=null;this.prevOp={};this.startOperation=function(commandEvent){if(this.curOp){if(!commandEvent||this.curOp.command)return;this.prevOp=this.curOp;}if(!commandEvent){this.previousCommand=null;commandEvent={};}this.$opResetTimer.schedule();this.curOp=this.session.curOp={command:commandEvent.command||{},args:commandEvent.args,scrollTop:this.renderer.scrollTop};this.curOp.selectionBefore=this.selection.toJSON();};this.endOperation=function(e){if(this.curOp&&this.session){if(e&&e.returnValue===false||!this.session)return this.curOp=null;if(e==true&&this.curOp.command&&this.curOp.command.name=="mouse")return;this._signal("beforeEndOperation");if(!this.curOp)return;var command=this.curOp.command;var scrollIntoView=command&&command.scrollIntoView;if(scrollIntoView){switch(scrollIntoView){case"center-animate":scrollIntoView="animate";case"center":this.renderer.scrollCursorIntoView(null,0.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var range=this.selection.getRange();var config=this.renderer.layerConfig;if(range.start.row>=config.lastRow||range.end.row<=config.firstRow){this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);}break;default:break;}if(scrollIntoView=="animate")this.renderer.animateScrolling(this.curOp.scrollTop);}var sel=this.selection.toJSON();this.curOp.selectionAfter=sel;this.$lastSel=this.selection.toJSON();this.session.getUndoManager().addSelection(sel);this.prevOp=this.curOp;this.curOp=null;}};this.$mergeableCommands=["backspace","del","insertstring"];this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var prev=this.prevOp;var mergeableCommands=this.$mergeableCommands;var shouldMerge=prev.command&&e.command.name==prev.command.name;if(e.command.name=="insertstring"){var text=e.args;if(this.mergeNextCommand===undefined)this.mergeNextCommand=true;shouldMerge=shouldMerge&&this.mergeNextCommand// previous command allows to coalesce with
&&(!/\s/.test(text)||/\s/.test(prev.args));// previous insertion was of same type
this.mergeNextCommand=true;}else{shouldMerge=shouldMerge&&mergeableCommands.indexOf(e.command.name)!==-1;// the command is mergeable
}if(this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2000){shouldMerge=false;// the sequence is too long
}if(shouldMerge)this.session.mergeUndoDeltas=true;else if(mergeableCommands.indexOf(e.command.name)!==-1)this.sequenceStartTime=Date.now();};this.setKeyboardHandler=function(keyboardHandler,cb){if(keyboardHandler&&typeof keyboardHandler==="string"&&keyboardHandler!="ace"){this.$keybindingId=keyboardHandler;var _self=this;config.loadModule(["keybinding",keyboardHandler],function(module){if(_self.$keybindingId==keyboardHandler)_self.keyBinding.setKeyboardHandler(module&&module.handler);cb&&cb();});}else{this.$keybindingId=null;this.keyBinding.setKeyboardHandler(keyboardHandler);cb&&cb();}};this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler();};this.setSession=function(session){if(this.session==session)return;if(this.curOp)this.endOperation();this.curOp={};var oldSession=this.session;if(oldSession){this.session.off("change",this.$onDocumentChange);this.session.off("changeMode",this.$onChangeMode);this.session.off("tokenizerUpdate",this.$onTokenizerUpdate);this.session.off("changeTabSize",this.$onChangeTabSize);this.session.off("changeWrapLimit",this.$onChangeWrapLimit);this.session.off("changeWrapMode",this.$onChangeWrapMode);this.session.off("changeFold",this.$onChangeFold);this.session.off("changeFrontMarker",this.$onChangeFrontMarker);this.session.off("changeBackMarker",this.$onChangeBackMarker);this.session.off("changeBreakpoint",this.$onChangeBreakpoint);this.session.off("changeAnnotation",this.$onChangeAnnotation);this.session.off("changeOverwrite",this.$onCursorChange);this.session.off("changeScrollTop",this.$onScrollTopChange);this.session.off("changeScrollLeft",this.$onScrollLeftChange);var selection=this.session.getSelection();selection.off("changeCursor",this.$onCursorChange);selection.off("changeSelection",this.$onSelectionChange);}this.session=session;if(session){this.$onDocumentChange=this.onDocumentChange.bind(this);session.on("change",this.$onDocumentChange);this.renderer.setSession(session);this.$onChangeMode=this.onChangeMode.bind(this);session.on("changeMode",this.$onChangeMode);this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this);session.on("tokenizerUpdate",this.$onTokenizerUpdate);this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer);session.on("changeTabSize",this.$onChangeTabSize);this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this);session.on("changeWrapLimit",this.$onChangeWrapLimit);this.$onChangeWrapMode=this.onChangeWrapMode.bind(this);session.on("changeWrapMode",this.$onChangeWrapMode);this.$onChangeFold=this.onChangeFold.bind(this);session.on("changeFold",this.$onChangeFold);this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this);this.session.on("changeFrontMarker",this.$onChangeFrontMarker);this.$onChangeBackMarker=this.onChangeBackMarker.bind(this);this.session.on("changeBackMarker",this.$onChangeBackMarker);this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this);this.session.on("changeBreakpoint",this.$onChangeBreakpoint);this.$onChangeAnnotation=this.onChangeAnnotation.bind(this);this.session.on("changeAnnotation",this.$onChangeAnnotation);this.$onCursorChange=this.onCursorChange.bind(this);this.session.on("changeOverwrite",this.$onCursorChange);this.$onScrollTopChange=this.onScrollTopChange.bind(this);this.session.on("changeScrollTop",this.$onScrollTopChange);this.$onScrollLeftChange=this.onScrollLeftChange.bind(this);this.session.on("changeScrollLeft",this.$onScrollLeftChange);this.selection=session.getSelection();this.selection.on("changeCursor",this.$onCursorChange);this.$onSelectionChange=this.onSelectionChange.bind(this);this.selection.on("changeSelection",this.$onSelectionChange);this.onChangeMode();this.onCursorChange();this.onScrollTopChange();this.onScrollLeftChange();this.onSelectionChange();this.onChangeFrontMarker();this.onChangeBackMarker();this.onChangeBreakpoint();this.onChangeAnnotation();this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit();this.renderer.updateFull();}else{this.selection=null;this.renderer.setSession(session);}this._signal("changeSession",{session:session,oldSession:oldSession});this.curOp=null;oldSession&&oldSession._signal("changeEditor",{oldEditor:this});session&&session._signal("changeEditor",{editor:this});if(session&&session.bgTokenizer)session.bgTokenizer.scheduleStart();};this.getSession=function(){return this.session;};this.setValue=function(val,cursorPos){this.session.doc.setValue(val);if(!cursorPos)this.selectAll();else if(cursorPos==1)this.navigateFileEnd();else if(cursorPos==-1)this.navigateFileStart();return val;};this.getValue=function(){return this.session.getValue();};this.getSelection=function(){return this.selection;};this.resize=function(force){this.renderer.onResize(force);};this.setTheme=function(theme,cb){this.renderer.setTheme(theme,cb);};this.getTheme=function(){return this.renderer.getTheme();};this.setStyle=function(style){this.renderer.setStyle(style);};this.unsetStyle=function(style){this.renderer.unsetStyle(style);};this.getFontSize=function(){return this.getOption("fontSize")||dom.computedStyle(this.container).fontSize;};this.setFontSize=function(size){this.setOption("fontSize",size);};this.$highlightBrackets=function(){if(this.$highlightPending){return;}var self=this;this.$highlightPending=true;setTimeout(function(){self.$highlightPending=false;var session=self.session;if(!session||!session.bgTokenizer)return;if(session.$bracketHighlight){session.$bracketHighlight.markerIds.forEach(function(id){session.removeMarker(id);});session.$bracketHighlight=null;}var ranges=session.getMatchingBracketRanges(self.getCursorPosition());if(!ranges&&session.$mode.getMatching)ranges=session.$mode.getMatching(self.session);if(!ranges)return;var markerType="ace_bracket";if(!Array.isArray(ranges)){ranges=[ranges];}else if(ranges.length==1){markerType="ace_error_bracket";}if(ranges.length==2){if(Range.comparePoints(ranges[0].end,ranges[1].start)==0)ranges=[Range.fromPoints(ranges[0].start,ranges[1].end)];else if(Range.comparePoints(ranges[0].start,ranges[1].end)==0)ranges=[Range.fromPoints(ranges[1].start,ranges[0].end)];}session.$bracketHighlight={ranges:ranges,markerIds:ranges.map(function(range){return session.addMarker(range,markerType,"text");})};},50);};this.$highlightTags=function(){if(this.$highlightTagPending)return;var self=this;this.$highlightTagPending=true;setTimeout(function(){self.$highlightTagPending=false;var session=self.session;if(!session||!session.bgTokenizer)return;var pos=self.getCursorPosition();var iterator=new TokenIterator(self.session,pos.row,pos.column);var token=iterator.getCurrentToken();if(!token||!/\b(?:tag-open|tag-name)/.test(token.type)){session.removeMarker(session.$tagHighlight);session.$tagHighlight=null;return;}if(token.type.indexOf("tag-open")!==-1){token=iterator.stepForward();if(!token)return;}var tag=token.value;var currentTag=token.value;var depth=0;var prevToken=iterator.stepBackward();if(prevToken.value==='<'){do{prevToken=token;token=iterator.stepForward();if(token){if(token.type.indexOf('tag-name')!==-1){currentTag=token.value;if(tag===currentTag){if(prevToken.value==='<'){depth++;}else if(prevToken.value==='</'){depth--;}}}else if(tag===currentTag&&token.value==='/>'){// self closing tag
depth--;}}}while(token&&depth>=0);}else{do{token=prevToken;prevToken=iterator.stepBackward();if(token){if(token.type.indexOf('tag-name')!==-1){if(tag===token.value){if(prevToken.value==='<'){depth++;}else if(prevToken.value==='</'){depth--;}}}else if(token.value==='/>'){// self closing tag
var stepCount=0;var tmpToken=prevToken;while(tmpToken){if(tmpToken.type.indexOf('tag-name')!==-1&&tmpToken.value===tag){depth--;break;}else if(tmpToken.value==='<'){break;}tmpToken=iterator.stepBackward();stepCount++;}for(var i=0;i<stepCount;i++){iterator.stepForward();}}}}while(prevToken&&depth<=0);iterator.stepForward();}if(!token){session.removeMarker(session.$tagHighlight);session.$tagHighlight=null;return;}var row=iterator.getCurrentTokenRow();var column=iterator.getCurrentTokenColumn();var range=new Range(row,column,row,column+token.value.length);var sbm=session.$backMarkers[session.$tagHighlight];if(session.$tagHighlight&&sbm!=undefined&&range.compareRange(sbm.range)!==0){session.removeMarker(session.$tagHighlight);session.$tagHighlight=null;}if(!session.$tagHighlight)session.$tagHighlight=session.addMarker(range,"ace_bracket","text");},50);};this.focus=function(){var _self=this;setTimeout(function(){if(!_self.isFocused())_self.textInput.focus();});this.textInput.focus();};this.isFocused=function(){return this.textInput.isFocused();};this.blur=function(){this.textInput.blur();};this.onFocus=function(e){if(this.$isFocused)return;this.$isFocused=true;this.renderer.showCursor();this.renderer.visualizeFocus();this._emit("focus",e);};this.onBlur=function(e){if(!this.$isFocused)return;this.$isFocused=false;this.renderer.hideCursor();this.renderer.visualizeBlur();this._emit("blur",e);};this.$cursorChange=function(){this.renderer.updateCursor();this.$highlightBrackets();this.$highlightTags();this.$updateHighlightActiveLine();};this.onDocumentChange=function(delta){var wrap=this.session.$useWrapMode;var lastRow=delta.start.row==delta.end.row?delta.end.row:Infinity;this.renderer.updateLines(delta.start.row,lastRow,wrap);this._signal("change",delta);this.$cursorChange();};this.onTokenizerUpdate=function(e){var rows=e.data;this.renderer.updateLines(rows.first,rows.last);};this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop());};this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft());};this.onCursorChange=function(){this.$cursorChange();this._signal("changeSelection");};this.$updateHighlightActiveLine=function(){var session=this.getSession();var highlight;if(this.$highlightActiveLine){if(this.$selectionStyle!="line"||!this.selection.isMultiLine())highlight=this.getCursorPosition();if(this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty())highlight=false;if(this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1))highlight=false;}if(session.$highlightLineMarker&&!highlight){session.removeMarker(session.$highlightLineMarker.id);session.$highlightLineMarker=null;}else if(!session.$highlightLineMarker&&highlight){var range=new Range(highlight.row,highlight.column,highlight.row,Infinity);range.id=session.addMarker(range,"ace_active-line","screenLine");session.$highlightLineMarker=range;}else if(highlight){session.$highlightLineMarker.start.row=highlight.row;session.$highlightLineMarker.end.row=highlight.row;session.$highlightLineMarker.start.column=highlight.column;session._signal("changeBackMarker");}};this.onSelectionChange=function(e){var session=this.session;if(session.$selectionMarker){session.removeMarker(session.$selectionMarker);}session.$selectionMarker=null;if(!this.selection.isEmpty()){var range=this.selection.getRange();var style=this.getSelectionStyle();session.$selectionMarker=session.addMarker(range,"ace_selection",style);}else{this.$updateHighlightActiveLine();}var re=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(re);this._signal("changeSelection");};this.$getSelectionHighLightRegexp=function(){var session=this.session;var selection=this.getSelectionRange();if(selection.isEmpty()||selection.isMultiLine())return;var startColumn=selection.start.column;var endColumn=selection.end.column;var line=session.getLine(selection.start.row);var needle=line.substring(startColumn,endColumn);if(needle.length>5000||!/[\w\d]/.test(needle))return;var re=this.$search.$assembleRegExp({wholeWord:true,caseSensitive:true,needle:needle});var wordWithBoundary=line.substring(startColumn-1,endColumn+1);if(!re.test(wordWithBoundary))return;return re;};this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers();};this.onChangeBackMarker=function(){this.renderer.updateBackMarkers();};this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints();};this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations());};this.onChangeMode=function(e){this.renderer.updateText();this._emit("changeMode",e);};this.onChangeWrapLimit=function(){this.renderer.updateFull();};this.onChangeWrapMode=function(){this.renderer.onResize(true);};this.onChangeFold=function(){this.$updateHighlightActiveLine();this.renderer.updateFull();};this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange());};this.getCopyText=function(){var text=this.getSelectedText();var nl=this.session.doc.getNewLineCharacter();var copyLine=false;if(!text&&this.$copyWithEmptySelection){copyLine=true;var ranges=this.selection.getAllRanges();for(var i=0;i<ranges.length;i++){var range=ranges[i];if(i&&ranges[i-1].start.row==range.start.row)continue;text+=this.session.getLine(range.start.row)+nl;}}var e={text:text};this._signal("copy",e);clipboard.lineMode=copyLine?e.text:"";return e.text;};this.onCopy=function(){this.commands.exec("copy",this);};this.onCut=function(){this.commands.exec("cut",this);};this.onPaste=function(text,event){var e={text:text,event:event};this.commands.exec("paste",this,e);};this.$handlePaste=function(e){if(typeof e=="string")e={text:e};this._signal("paste",e);var text=e.text;var lineMode=text==clipboard.lineMode;var session=this.session;if(!this.inMultiSelectMode||this.inVirtualSelectionMode){if(lineMode)session.insert({row:this.selection.lead.row,column:0},text);else this.insert(text);}else if(lineMode){this.selection.rangeList.ranges.forEach(function(range){session.insert({row:range.start.row,column:0},text);});}else{var lines=text.split(/\r\n|\r|\n/);var ranges=this.selection.rangeList.ranges;var isFullLine=lines.length==2&&(!lines[0]||!lines[1]);if(lines.length!=ranges.length||isFullLine)return this.commands.exec("insertstring",this,text);for(var i=ranges.length;i--;){var range=ranges[i];if(!range.isEmpty())session.remove(range);session.insert(range.start,lines[i]);}}};this.execCommand=function(command,args){return this.commands.exec(command,this,args);};this.insert=function(text,pasted){var session=this.session;var mode=session.getMode();var cursor=this.getCursorPosition();if(this.getBehavioursEnabled()&&!pasted){var transform=mode.transformAction(session.getState(cursor.row),'insertion',this,session,text);if(transform){if(text!==transform.text){if(!this.inVirtualSelectionMode){this.session.mergeUndoDeltas=false;this.mergeNextCommand=false;}}text=transform.text;}}if(text=="\t")text=this.session.getTabString();if(!this.selection.isEmpty()){var range=this.getSelectionRange();cursor=this.session.remove(range);this.clearSelection();}else if(this.session.getOverwrite()&&text.indexOf("\n")==-1){var range=new Range.fromPoints(cursor,cursor);range.end.column+=text.length;this.session.remove(range);}if(text=="\n"||text=="\r\n"){var line=session.getLine(cursor.row);if(cursor.column>line.search(/\S|$/)){var d=line.substr(cursor.column).search(/\S|$/);session.doc.removeInLine(cursor.row,cursor.column,cursor.column+d);}}this.clearSelection();var start=cursor.column;var lineState=session.getState(cursor.row);var line=session.getLine(cursor.row);var shouldOutdent=mode.checkOutdent(lineState,line,text);session.insert(cursor,text);if(transform&&transform.selection){if(transform.selection.length==2){// Transform relative to the current column
this.selection.setSelectionRange(new Range(cursor.row,start+transform.selection[0],cursor.row,start+transform.selection[1]));}else{// Transform relative to the current row.
this.selection.setSelectionRange(new Range(cursor.row+transform.selection[0],transform.selection[1],cursor.row+transform.selection[2],transform.selection[3]));}}if(this.$enableAutoIndent){if(session.getDocument().isNewLine(text)){var lineIndent=mode.getNextLineIndent(lineState,line.slice(0,cursor.column),session.getTabString());session.insert({row:cursor.row+1,column:0},lineIndent);}if(shouldOutdent)mode.autoOutdent(lineState,session,cursor.row);}};this.autoIndent=function(){var session=this.session;var mode=session.getMode();var startRow,endRow;if(this.selection.isEmpty()){startRow=0;endRow=session.doc.getLength()-1;}else{var selectedRange=this.getSelectionRange();startRow=selectedRange.start.row;endRow=selectedRange.end.row;}var prevLineState="";var prevLine="";var lineIndent="";var line,currIndent,range;var tab=session.getTabString();for(var row=startRow;row<=endRow;row++){if(row>0){prevLineState=session.getState(row-1);prevLine=session.getLine(row-1);lineIndent=mode.getNextLineIndent(prevLineState,prevLine,tab);}line=session.getLine(row);currIndent=mode.$getIndent(line);if(lineIndent!==currIndent){if(currIndent.length>0){range=new Range(row,0,row,currIndent.length);session.remove(range);}if(lineIndent.length>0){session.insert({row:row,column:0},lineIndent);}}mode.autoOutdent(prevLineState,session,row);}};this.onTextInput=function(text,composition){if(!composition)return this.keyBinding.onTextInput(text);this.startOperation({command:{name:"insertstring"}});var applyComposition=this.applyComposition.bind(this,text,composition);if(this.selection.rangeCount)this.forEachSelection(applyComposition);else applyComposition();this.endOperation();};this.applyComposition=function(text,composition){if(composition.extendLeft||composition.extendRight){var r=this.selection.getRange();r.start.column-=composition.extendLeft;r.end.column+=composition.extendRight;if(r.start.column<0){r.start.row--;r.start.column+=this.session.getLine(r.start.row).length+1;}this.selection.setRange(r);if(!text&&!r.isEmpty())this.remove();}if(text||!this.selection.isEmpty())this.insert(text,true);if(composition.restoreStart||composition.restoreEnd){var r=this.selection.getRange();r.start.column-=composition.restoreStart;r.end.column-=composition.restoreEnd;this.selection.setRange(r);}};this.onCommandKey=function(e,hashId,keyCode){return this.keyBinding.onCommandKey(e,hashId,keyCode);};this.setOverwrite=function(overwrite){this.session.setOverwrite(overwrite);};this.getOverwrite=function(){return this.session.getOverwrite();};this.toggleOverwrite=function(){this.session.toggleOverwrite();};this.setScrollSpeed=function(speed){this.setOption("scrollSpeed",speed);};this.getScrollSpeed=function(){return this.getOption("scrollSpeed");};this.setDragDelay=function(dragDelay){this.setOption("dragDelay",dragDelay);};this.getDragDelay=function(){return this.getOption("dragDelay");};this.setSelectionStyle=function(val){this.setOption("selectionStyle",val);};this.getSelectionStyle=function(){return this.getOption("selectionStyle");};this.setHighlightActiveLine=function(shouldHighlight){this.setOption("highlightActiveLine",shouldHighlight);};this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine");};this.setHighlightGutterLine=function(shouldHighlight){this.setOption("highlightGutterLine",shouldHighlight);};this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine");};this.setHighlightSelectedWord=function(shouldHighlight){this.setOption("highlightSelectedWord",shouldHighlight);};this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord;};this.setAnimatedScroll=function(shouldAnimate){this.renderer.setAnimatedScroll(shouldAnimate);};this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll();};this.setShowInvisibles=function(showInvisibles){this.renderer.setShowInvisibles(showInvisibles);};this.getShowInvisibles=function(){return this.renderer.getShowInvisibles();};this.setDisplayIndentGuides=function(display){this.renderer.setDisplayIndentGuides(display);};this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides();};this.setShowPrintMargin=function(showPrintMargin){this.renderer.setShowPrintMargin(showPrintMargin);};this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin();};this.setPrintMarginColumn=function(showPrintMargin){this.renderer.setPrintMarginColumn(showPrintMargin);};this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn();};this.setReadOnly=function(readOnly){this.setOption("readOnly",readOnly);};this.getReadOnly=function(){return this.getOption("readOnly");};this.setBehavioursEnabled=function(enabled){this.setOption("behavioursEnabled",enabled);};this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled");};this.setWrapBehavioursEnabled=function(enabled){this.setOption("wrapBehavioursEnabled",enabled);};this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled");};this.setShowFoldWidgets=function(show){this.setOption("showFoldWidgets",show);};this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets");};this.setFadeFoldWidgets=function(fade){this.setOption("fadeFoldWidgets",fade);};this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets");};this.remove=function(dir){if(this.selection.isEmpty()){if(dir=="left")this.selection.selectLeft();else this.selection.selectRight();}var range=this.getSelectionRange();if(this.getBehavioursEnabled()){var session=this.session;var state=session.getState(range.start.row);var new_range=session.getMode().transformAction(state,'deletion',this,session,range);if(range.end.column===0){var text=session.getTextRange(range);if(text[text.length-1]=="\n"){var line=session.getLine(range.end.row);if(/^\s+$/.test(line)){range.end.column=line.length;}}}if(new_range)range=new_range;}this.session.remove(range);this.clearSelection();};this.removeWordRight=function(){if(this.selection.isEmpty())this.selection.selectWordRight();this.session.remove(this.getSelectionRange());this.clearSelection();};this.removeWordLeft=function(){if(this.selection.isEmpty())this.selection.selectWordLeft();this.session.remove(this.getSelectionRange());this.clearSelection();};this.removeToLineStart=function(){if(this.selection.isEmpty())this.selection.selectLineStart();if(this.selection.isEmpty())this.selection.selectLeft();this.session.remove(this.getSelectionRange());this.clearSelection();};this.removeToLineEnd=function(){if(this.selection.isEmpty())this.selection.selectLineEnd();var range=this.getSelectionRange();if(range.start.column==range.end.column&&range.start.row==range.end.row){range.end.column=0;range.end.row++;}this.session.remove(range);this.clearSelection();};this.splitLine=function(){if(!this.selection.isEmpty()){this.session.remove(this.getSelectionRange());this.clearSelection();}var cursor=this.getCursorPosition();this.insert("\n");this.moveCursorToPosition(cursor);};this.transposeLetters=function(){if(!this.selection.isEmpty()){return;}var cursor=this.getCursorPosition();var column=cursor.column;if(column===0)return;var line=this.session.getLine(cursor.row);var swap,range;if(column<line.length){swap=line.charAt(column)+line.charAt(column-1);range=new Range(cursor.row,column-1,cursor.row,column+1);}else{swap=line.charAt(column-1)+line.charAt(column-2);range=new Range(cursor.row,column-2,cursor.row,column);}this.session.replace(range,swap);this.session.selection.moveToPosition(range.end);};this.toLowerCase=function(){var originalRange=this.getSelectionRange();if(this.selection.isEmpty()){this.selection.selectWord();}var range=this.getSelectionRange();var text=this.session.getTextRange(range);this.session.replace(range,text.toLowerCase());this.selection.setSelectionRange(originalRange);};this.toUpperCase=function(){var originalRange=this.getSelectionRange();if(this.selection.isEmpty()){this.selection.selectWord();}var range=this.getSelectionRange();var text=this.session.getTextRange(range);this.session.replace(range,text.toUpperCase());this.selection.setSelectionRange(originalRange);};this.indent=function(){var session=this.session;var range=this.getSelectionRange();if(range.start.row<range.end.row){var rows=this.$getSelectedRows();session.indentRows(rows.first,rows.last,"\t");return;}else if(range.start.column<range.end.column){var text=session.getTextRange(range);if(!/^\s+$/.test(text)){var rows=this.$getSelectedRows();session.indentRows(rows.first,rows.last,"\t");return;}}var line=session.getLine(range.start.row);var position=range.start;var size=session.getTabSize();var column=session.documentToScreenColumn(position.row,position.column);if(this.session.getUseSoftTabs()){var count=size-column%size;var indentString=lang.stringRepeat(" ",count);}else{var count=column%size;while(line[range.start.column-1]==" "&&count){range.start.column--;count--;}this.selection.setSelectionRange(range);indentString="\t";}return this.insert(indentString);};this.blockIndent=function(){var rows=this.$getSelectedRows();this.session.indentRows(rows.first,rows.last,"\t");};this.blockOutdent=function(){var selection=this.session.getSelection();this.session.outdentRows(selection.getRange());};this.sortLines=function(){var rows=this.$getSelectedRows();var session=this.session;var lines=[];for(var i=rows.first;i<=rows.last;i++){lines.push(session.getLine(i));}lines.sort(function(a,b){if(a.toLowerCase()<b.toLowerCase())return-1;if(a.toLowerCase()>b.toLowerCase())return 1;return 0;});var deleteRange=new Range(0,0,0,0);for(var i=rows.first;i<=rows.last;i++){var line=session.getLine(i);deleteRange.start.row=i;deleteRange.end.row=i;deleteRange.end.column=line.length;session.replace(deleteRange,lines[i-rows.first]);}};this.toggleCommentLines=function(){var state=this.session.getState(this.getCursorPosition().row);var rows=this.$getSelectedRows();this.session.getMode().toggleCommentLines(state,this.session,rows.first,rows.last);};this.toggleBlockComment=function(){var cursor=this.getCursorPosition();var state=this.session.getState(cursor.row);var range=this.getSelectionRange();this.session.getMode().toggleBlockComment(state,this.session,range,cursor);};this.getNumberAt=function(row,column){var _numberRx=/[\-]?[0-9]+(?:\.[0-9]+)?/g;_numberRx.lastIndex=0;var s=this.session.getLine(row);while(_numberRx.lastIndex<column){var m=_numberRx.exec(s);if(m.index<=column&&m.index+m[0].length>=column){var number={value:m[0],start:m.index,end:m.index+m[0].length};return number;}}return null;};this.modifyNumber=function(amount){var row=this.selection.getCursor().row;var column=this.selection.getCursor().column;var charRange=new Range(row,column-1,row,column);var c=this.session.getTextRange(charRange);if(!isNaN(parseFloat(c))&&isFinite(c)){var nr=this.getNumberAt(row,column);if(nr){var fp=nr.value.indexOf(".")>=0?nr.start+nr.value.indexOf(".")+1:nr.end;var decimals=nr.start+nr.value.length-fp;var t=parseFloat(nr.value);t*=Math.pow(10,decimals);if(fp!==nr.end&&column<fp){amount*=Math.pow(10,nr.end-column-1);}else{amount*=Math.pow(10,nr.end-column);}t+=amount;t/=Math.pow(10,decimals);var nnr=t.toFixed(decimals);var replaceRange=new Range(row,nr.start,row,nr.end);this.session.replace(replaceRange,nnr);this.moveCursorTo(row,Math.max(nr.start+1,column+nnr.length-nr.value.length));}}else{this.toggleWord();}};this.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up","down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]];this.toggleWord=function(){var row=this.selection.getCursor().row;var column=this.selection.getCursor().column;this.selection.selectWord();var currentState=this.getSelectedText();var currWordStart=this.selection.getWordRange().start.column;var wordParts=currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g,'$1 ').split(/\s/);var delta=column-currWordStart-1;if(delta<0)delta=0;var curLength=0,itLength=0;var that=this;if(currentState.match(/[A-Za-z0-9_]+/)){wordParts.forEach(function(item,i){itLength=curLength+item.length;if(delta>=curLength&&delta<=itLength){currentState=item;that.selection.clearSelection();that.moveCursorTo(row,curLength+currWordStart);that.selection.selectTo(row,itLength+currWordStart);}curLength=itLength;});}var wordPairs=this.$toggleWordPairs;var reg;for(var i=0;i<wordPairs.length;i++){var item=wordPairs[i];for(var j=0;j<=1;j++){var negate=+!j;var firstCondition=currentState.match(new RegExp('^\\s?_?('+lang.escapeRegExp(item[j])+')\\s?$','i'));if(firstCondition){var secondCondition=currentState.match(new RegExp('([_]|^|\\s)('+lang.escapeRegExp(firstCondition[1])+')($|\\s)','g'));if(secondCondition){reg=currentState.replace(new RegExp(lang.escapeRegExp(item[j]),'i'),function(result){var res=item[negate];if(result.toUpperCase()==result){res=res.toUpperCase();}else if(result.charAt(0).toUpperCase()==result.charAt(0)){res=res.substr(0,0)+item[negate].charAt(0).toUpperCase()+res.substr(1);}return res;});this.insert(reg);reg="";}}}}};this.removeLines=function(){var rows=this.$getSelectedRows();this.session.removeFullLines(rows.first,rows.last);this.clearSelection();};this.duplicateSelection=function(){var sel=this.selection;var doc=this.session;var range=sel.getRange();var reverse=sel.isBackwards();if(range.isEmpty()){var row=range.start.row;doc.duplicateLines(row,row);}else{var point=reverse?range.start:range.end;var endPoint=doc.insert(point,doc.getTextRange(range),false);range.start=point;range.end=endPoint;sel.setSelectionRange(range,reverse);}};this.moveLinesDown=function(){this.$moveLines(1,false);};this.moveLinesUp=function(){this.$moveLines(-1,false);};this.moveText=function(range,toPosition,copy){return this.session.moveText(range,toPosition,copy);};this.copyLinesUp=function(){this.$moveLines(-1,true);};this.copyLinesDown=function(){this.$moveLines(1,true);};this.$moveLines=function(dir,copy){var rows,moved;var selection=this.selection;if(!selection.inMultiSelectMode||this.inVirtualSelectionMode){var range=selection.toOrientedRange();rows=this.$getSelectedRows(range);moved=this.session.$moveLines(rows.first,rows.last,copy?0:dir);if(copy&&dir==-1)moved=0;range.moveBy(moved,0);selection.fromOrientedRange(range);}else{var ranges=selection.rangeList.ranges;selection.rangeList.detach(this.session);this.inVirtualSelectionMode=true;var diff=0;var totalDiff=0;var l=ranges.length;for(var i=0;i<l;i++){var rangeIndex=i;ranges[i].moveBy(diff,0);rows=this.$getSelectedRows(ranges[i]);var first=rows.first;var last=rows.last;while(++i<l){if(totalDiff)ranges[i].moveBy(totalDiff,0);var subRows=this.$getSelectedRows(ranges[i]);if(copy&&subRows.first!=last)break;else if(!copy&&subRows.first>last+1)break;last=subRows.last;}i--;diff=this.session.$moveLines(first,last,copy?0:dir);if(copy&&dir==-1)rangeIndex=i+1;while(rangeIndex<=i){ranges[rangeIndex].moveBy(diff,0);rangeIndex++;}if(!copy)diff=0;totalDiff+=diff;}selection.fromOrientedRange(selection.ranges[0]);selection.rangeList.attach(this.session);this.inVirtualSelectionMode=false;}};this.$getSelectedRows=function(range){range=(range||this.getSelectionRange()).collapseRows();return{first:this.session.getRowFoldStart(range.start.row),last:this.session.getRowFoldEnd(range.end.row)};};this.onCompositionStart=function(compositionState){this.renderer.showComposition(compositionState);};this.onCompositionUpdate=function(text){this.renderer.setCompositionText(text);};this.onCompositionEnd=function(){this.renderer.hideComposition();};this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow();};this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow();};this.isRowVisible=function(row){return row>=this.getFirstVisibleRow()&&row<=this.getLastVisibleRow();};this.isRowFullyVisible=function(row){return row>=this.renderer.getFirstFullyVisibleRow()&&row<=this.renderer.getLastFullyVisibleRow();};this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1;};this.$moveByPage=function(dir,select){var renderer=this.renderer;var config=this.renderer.layerConfig;var rows=dir*Math.floor(config.height/config.lineHeight);if(select===true){this.selection.$moveSelection(function(){this.moveCursorBy(rows,0);});}else if(select===false){this.selection.moveCursorBy(rows,0);this.selection.clearSelection();}var scrollTop=renderer.scrollTop;renderer.scrollBy(0,rows*config.lineHeight);if(select!=null)renderer.scrollCursorIntoView(null,0.5);renderer.animateScrolling(scrollTop);};this.selectPageDown=function(){this.$moveByPage(1,true);};this.selectPageUp=function(){this.$moveByPage(-1,true);};this.gotoPageDown=function(){this.$moveByPage(1,false);};this.gotoPageUp=function(){this.$moveByPage(-1,false);};this.scrollPageDown=function(){this.$moveByPage(1);};this.scrollPageUp=function(){this.$moveByPage(-1);};this.scrollToRow=function(row){this.renderer.scrollToRow(row);};this.scrollToLine=function(line,center,animate,callback){this.renderer.scrollToLine(line,center,animate,callback);};this.centerSelection=function(){var range=this.getSelectionRange();var pos={row:Math.floor(range.start.row+(range.end.row-range.start.row)/2),column:Math.floor(range.start.column+(range.end.column-range.start.column)/2)};this.renderer.alignCursor(pos,0.5);};this.getCursorPosition=function(){return this.selection.getCursor();};this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition());};this.getSelectionRange=function(){return this.selection.getRange();};this.selectAll=function(){this.selection.selectAll();};this.clearSelection=function(){this.selection.clearSelection();};this.moveCursorTo=function(row,column){this.selection.moveCursorTo(row,column);};this.moveCursorToPosition=function(pos){this.selection.moveCursorToPosition(pos);};this.jumpToMatching=function(select,expand){var cursor=this.getCursorPosition();var iterator=new TokenIterator(this.session,cursor.row,cursor.column);var prevToken=iterator.getCurrentToken();var token=prevToken||iterator.stepForward();if(!token)return;var matchType;var found=false;var depth={};var i=cursor.column-token.start;var bracketType;var brackets={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(token.value.match(/[{}()\[\]]/g)){for(;i<token.value.length&&!found;i++){if(!brackets[token.value[i]]){continue;}bracketType=brackets[token.value[i]]+'.'+token.type.replace("rparen","lparen");if(isNaN(depth[bracketType])){depth[bracketType]=0;}switch(token.value[i]){case'(':case'[':case'{':depth[bracketType]++;break;case')':case']':case'}':depth[bracketType]--;if(depth[bracketType]===-1){matchType='bracket';found=true;}break;}}}else if(token.type.indexOf('tag-name')!==-1){if(isNaN(depth[token.value])){depth[token.value]=0;}if(prevToken.value==='<'){depth[token.value]++;}else if(prevToken.value==='</'){depth[token.value]--;}if(depth[token.value]===-1){matchType='tag';found=true;}}if(!found){prevToken=token;token=iterator.stepForward();i=0;}}while(token&&!found);if(!matchType)return;var range,pos;if(matchType==='bracket'){range=this.session.getBracketRange(cursor);if(!range){range=new Range(iterator.getCurrentTokenRow(),iterator.getCurrentTokenColumn()+i-1,iterator.getCurrentTokenRow(),iterator.getCurrentTokenColumn()+i-1);pos=range.start;if(expand||pos.row===cursor.row&&Math.abs(pos.column-cursor.column)<2)range=this.session.getBracketRange(pos);}}else if(matchType==='tag'){if(token&&token.type.indexOf('tag-name')!==-1)var tag=token.value;else return;range=new Range(iterator.getCurrentTokenRow(),iterator.getCurrentTokenColumn()-2,iterator.getCurrentTokenRow(),iterator.getCurrentTokenColumn()-2);if(range.compare(cursor.row,cursor.column)===0){found=false;do{token=prevToken;prevToken=iterator.stepBackward();if(prevToken){if(prevToken.type.indexOf('tag-close')!==-1){range.setEnd(iterator.getCurrentTokenRow(),iterator.getCurrentTokenColumn()+1);}if(token.value===tag&&token.type.indexOf('tag-name')!==-1){if(prevToken.value==='<'){depth[tag]++;}else if(prevToken.value==='</'){depth[tag]--;}if(depth[tag]===0)found=true;}}}while(prevToken&&!found);}if(token&&token.type.indexOf('tag-name')){pos=range.start;if(pos.row==cursor.row&&Math.abs(pos.column-cursor.column)<2)pos=range.end;}}pos=range&&range.cursor||pos;if(pos){if(select){if(range&&expand){this.selection.setRange(range);}else if(range&&range.isEqual(this.getSelectionRange())){this.clearSelection();}else{this.selection.selectTo(pos.row,pos.column);}}else{this.selection.moveTo(pos.row,pos.column);}}};this.gotoLine=function(lineNumber,column,animate){this.selection.clearSelection();this.session.unfold({row:lineNumber-1,column:column||0});this.exitMultiSelectMode&&this.exitMultiSelectMode();this.moveCursorTo(lineNumber-1,column||0);if(!this.isRowFullyVisible(lineNumber-1))this.scrollToLine(lineNumber-1,true,animate);};this.navigateTo=function(row,column){this.selection.moveTo(row,column);};this.navigateUp=function(times){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var selectionStart=this.selection.anchor.getPosition();return this.moveCursorToPosition(selectionStart);}this.selection.clearSelection();this.selection.moveCursorBy(-times||-1,0);};this.navigateDown=function(times){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var selectionEnd=this.selection.anchor.getPosition();return this.moveCursorToPosition(selectionEnd);}this.selection.clearSelection();this.selection.moveCursorBy(times||1,0);};this.navigateLeft=function(times){if(!this.selection.isEmpty()){var selectionStart=this.getSelectionRange().start;this.moveCursorToPosition(selectionStart);}else{times=times||1;while(times--){this.selection.moveCursorLeft();}}this.clearSelection();};this.navigateRight=function(times){if(!this.selection.isEmpty()){var selectionEnd=this.getSelectionRange().end;this.moveCursorToPosition(selectionEnd);}else{times=times||1;while(times--){this.selection.moveCursorRight();}}this.clearSelection();};this.navigateLineStart=function(){this.selection.moveCursorLineStart();this.clearSelection();};this.navigateLineEnd=function(){this.selection.moveCursorLineEnd();this.clearSelection();};this.navigateFileEnd=function(){this.selection.moveCursorFileEnd();this.clearSelection();};this.navigateFileStart=function(){this.selection.moveCursorFileStart();this.clearSelection();};this.navigateWordRight=function(){this.selection.moveCursorWordRight();this.clearSelection();};this.navigateWordLeft=function(){this.selection.moveCursorWordLeft();this.clearSelection();};this.replace=function(replacement,options){if(options)this.$search.set(options);var range=this.$search.find(this.session);var replaced=0;if(!range)return replaced;if(this.$tryReplace(range,replacement)){replaced=1;}this.selection.setSelectionRange(range);this.renderer.scrollSelectionIntoView(range.start,range.end);return replaced;};this.replaceAll=function(replacement,options){if(options){this.$search.set(options);}var ranges=this.$search.findAll(this.session);var replaced=0;if(!ranges.length)return replaced;var selection=this.getSelectionRange();this.selection.moveTo(0,0);for(var i=ranges.length-1;i>=0;--i){if(this.$tryReplace(ranges[i],replacement)){replaced++;}}this.selection.setSelectionRange(selection);return replaced;};this.$tryReplace=function(range,replacement){var input=this.session.getTextRange(range);replacement=this.$search.replace(input,replacement);if(replacement!==null){range.end=this.session.replace(range,replacement);return range;}else{return null;}};this.getLastSearchOptions=function(){return this.$search.getOptions();};this.find=function(needle,options,animate){if(!options)options={};if(typeof needle=="string"||needle instanceof RegExp)options.needle=needle;else if(_typeof(needle)=="object")oop.mixin(options,needle);var range=this.selection.getRange();if(options.needle==null){needle=this.session.getTextRange(range)||this.$search.$options.needle;if(!needle){range=this.session.getWordRange(range.start.row,range.start.column);needle=this.session.getTextRange(range);}this.$search.set({needle:needle});}this.$search.set(options);if(!options.start)this.$search.set({start:range});var newRange=this.$search.find(this.session);if(options.preventScroll)return newRange;if(newRange){this.revealRange(newRange,animate);return newRange;}if(options.backwards)range.start=range.end;else range.end=range.start;this.selection.setRange(range);};this.findNext=function(options,animate){this.find({skipCurrent:true,backwards:false},options,animate);};this.findPrevious=function(options,animate){this.find(options,{skipCurrent:true,backwards:true},animate);};this.revealRange=function(range,animate){this.session.unfold(range);this.selection.setSelectionRange(range);var scrollTop=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(range.start,range.end,0.5);if(animate!==false)this.renderer.animateScrolling(scrollTop);};this.undo=function(){this.session.getUndoManager().undo(this.session);this.renderer.scrollCursorIntoView(null,0.5);};this.redo=function(){this.session.getUndoManager().redo(this.session);this.renderer.scrollCursorIntoView(null,0.5);};this.destroy=function(){if(this.$toDestroy){this.$toDestroy.forEach(function(el){el.destroy();});this.$toDestroy=null;}if(this.$mouseHandler)this.$mouseHandler.destroy();this.renderer.destroy();this._signal("destroy",this);if(this.session)this.session.destroy();if(this._$emitInputEvent)this._$emitInputEvent.cancel();this.removeAllListeners();};this.setAutoScrollEditorIntoView=function(enable){if(!enable)return;var rect;var self=this;var shouldScroll=false;if(!this.$scrollAnchor)this.$scrollAnchor=document.createElement("div");var scrollAnchor=this.$scrollAnchor;scrollAnchor.style.cssText="position:absolute";this.container.insertBefore(scrollAnchor,this.container.firstChild);var onChangeSelection=this.on("changeSelection",function(){shouldScroll=true;});var onBeforeRender=this.renderer.on("beforeRender",function(){if(shouldScroll)rect=self.renderer.container.getBoundingClientRect();});var onAfterRender=this.renderer.on("afterRender",function(){if(shouldScroll&&rect&&(self.isFocused()||self.searchBox&&self.searchBox.isFocused())){var renderer=self.renderer;var pos=renderer.$cursorLayer.$pixelPos;var config=renderer.layerConfig;var top=pos.top-config.offset;if(pos.top>=0&&top+rect.top<0){shouldScroll=true;}else if(pos.top<config.height&&pos.top+rect.top+config.lineHeight>window.innerHeight){shouldScroll=false;}else{shouldScroll=null;}if(shouldScroll!=null){scrollAnchor.style.top=top+"px";scrollAnchor.style.left=pos.left+"px";scrollAnchor.style.height=config.lineHeight+"px";scrollAnchor.scrollIntoView(shouldScroll);}shouldScroll=rect=null;}});this.setAutoScrollEditorIntoView=function(enable){if(enable)return;delete this.setAutoScrollEditorIntoView;this.off("changeSelection",onChangeSelection);this.renderer.off("afterRender",onAfterRender);this.renderer.off("beforeRender",onBeforeRender);};};this.$resetCursorStyle=function(){var style=this.$cursorStyle||"ace";var cursorLayer=this.renderer.$cursorLayer;if(!cursorLayer)return;cursorLayer.setSmoothBlinking(/smooth/.test(style));cursorLayer.isBlinking=!this.$readOnly&&style!="wide";dom.setCssClass(cursorLayer.element,"ace_slim-cursors",/slim/.test(style));};this.prompt=function(message,options,callback){var editor=this;config.loadModule("./ext/prompt",function(module){module.prompt(editor,message,options,callback);});};}).call(Editor.prototype);config.defineOptions(Editor.prototype,"editor",{selectionStyle:{set:function set(style){this.onSelectionChange();this._signal("changeSelectionStyle",{data:style});},initialValue:"line"},highlightActiveLine:{set:function set(){this.$updateHighlightActiveLine();},initialValue:true},highlightSelectedWord:{set:function set(shouldHighlight){this.$onSelectionChange();},initialValue:true},readOnly:{set:function set(readOnly){this.textInput.setReadOnly(readOnly);this.$resetCursorStyle();},initialValue:false},copyWithEmptySelection:{set:function set(value){this.textInput.setCopyWithEmptySelection(value);},initialValue:false},cursorStyle:{set:function set(val){this.$resetCursorStyle();},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[false,true,"always"],initialValue:true},behavioursEnabled:{initialValue:true},wrapBehavioursEnabled:{initialValue:true},enableAutoIndent:{initialValue:true},autoScrollEditorIntoView:{set:function set(val){this.setAutoScrollEditorIntoView(val);}},keyboardHandler:{set:function set(val){this.setKeyboardHandler(val);},get:function get(){return this.$keybindingId;},handlesSet:true},value:{set:function set(val){this.session.setValue(val);},get:function get(){return this.getValue();},handlesSet:true,hidden:true},session:{set:function set(val){this.setSession(val);},get:function get(){return this.session;},handlesSet:true,hidden:true},showLineNumbers:{set:function set(show){this.renderer.$gutterLayer.setShowLineNumbers(show);this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);if(show&&this.$relativeLineNumbers)relativeNumberRenderer.attach(this);else relativeNumberRenderer.detach(this);},initialValue:true},relativeLineNumbers:{set:function set(value){if(this.$showLineNumbers&&value)relativeNumberRenderer.attach(this);else relativeNumberRenderer.detach(this);}},placeholder:{set:function set(message){if(!this.$updatePlaceholder){this.$updatePlaceholder=function(){var value=this.session&&(this.renderer.$composition||this.getValue());if(value&&this.renderer.placeholderNode){this.renderer.off("afterRender",this.$updatePlaceholder);dom.removeCssClass(this.container,"ace_hasPlaceholder");this.renderer.placeholderNode.remove();this.renderer.placeholderNode=null;}else if(!value&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder);dom.addCssClass(this.container,"ace_hasPlaceholder");var el=dom.createElement("div");el.className="ace_placeholder";el.textContent=this.$placeholder||"";this.renderer.placeholderNode=el;this.renderer.content.appendChild(this.renderer.placeholderNode);}else if(!value&&this.renderer.placeholderNode){this.renderer.placeholderNode.textContent=this.$placeholder||"";}}.bind(this);this.on("input",this.$updatePlaceholder);}this.$updatePlaceholder();}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var relativeNumberRenderer={getText:function getText(session,row){return(Math.abs(session.selection.lead.row-row)||row+1+(row<9?"\xb7":""))+"";},getWidth:function getWidth(session,lastLineNumber,config){return Math.max(lastLineNumber.toString().length,(config.lastRow+1).toString().length,2)*config.characterWidth;},update:function update(e,editor){editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);},attach:function attach(editor){editor.renderer.$gutterLayer.$renderer=this;editor.on("changeSelection",this.update);this.update(null,editor);},detach:function detach(editor){if(editor.renderer.$gutterLayer.$renderer==this)editor.renderer.$gutterLayer.$renderer=null;editor.off("changeSelection",this.update);this.update(null,editor);}};exports.Editor=Editor;});ace.define("ace/undomanager",["require","exports","module","ace/range"],function(require,exports,module){"use strict";var UndoManager=function UndoManager(){this.$maxRev=0;this.$fromUndo=false;this.reset();};(function(){this.addSession=function(session){this.$session=session;};this.add=function(delta,allowMerge,session){if(this.$fromUndo)return;if(delta==this.$lastDelta)return;if(!this.$keepRedoStack)this.$redoStack.length=0;if(allowMerge===false||!this.lastDeltas){this.lastDeltas=[];this.$undoStack.push(this.lastDeltas);delta.id=this.$rev=++this.$maxRev;}if(delta.action=="remove"||delta.action=="insert")this.$lastDelta=delta;this.lastDeltas.push(delta);};this.addSelection=function(selection,rev){this.selections.push({value:selection,rev:rev||this.$rev});};this.startNewGroup=function(){this.lastDeltas=null;return this.$rev;};this.markIgnored=function(from,to){if(to==null)to=this.$rev+1;var stack=this.$undoStack;for(var i=stack.length;i--;){var delta=stack[i][0];if(delta.id<=from)break;if(delta.id<to)delta.ignore=true;}this.lastDeltas=null;};this.getSelection=function(rev,after){var stack=this.selections;for(var i=stack.length;i--;){var selection=stack[i];if(selection.rev<rev){if(after)selection=stack[i+1];return selection;}}};this.getRevision=function(){return this.$rev;};this.getDeltas=function(from,to){if(to==null)to=this.$rev+1;var stack=this.$undoStack;var end=null,start=0;for(var i=stack.length;i--;){var delta=stack[i][0];if(delta.id<to&&!end)end=i+1;if(delta.id<=from){start=i+1;break;}}return stack.slice(start,end);};this.getChangedRanges=function(from,to){if(to==null)to=this.$rev+1;};this.getChangedLines=function(from,to){if(to==null)to=this.$rev+1;};this.undo=function(session,dontSelect){this.lastDeltas=null;var stack=this.$undoStack;if(!rearrangeUndoStack(stack,stack.length))return;if(!session)session=this.$session;if(this.$redoStackBaseRev!==this.$rev&&this.$redoStack.length)this.$redoStack=[];this.$fromUndo=true;var deltaSet=stack.pop();var undoSelectionRange=null;if(deltaSet){undoSelectionRange=session.undoChanges(deltaSet,dontSelect);this.$redoStack.push(deltaSet);this.$syncRev();}this.$fromUndo=false;return undoSelectionRange;};this.redo=function(session,dontSelect){this.lastDeltas=null;if(!session)session=this.$session;this.$fromUndo=true;if(this.$redoStackBaseRev!=this.$rev){var diff=this.getDeltas(this.$redoStackBaseRev,this.$rev+1);rebaseRedoStack(this.$redoStack,diff);this.$redoStackBaseRev=this.$rev;this.$redoStack.forEach(function(x){x[0].id=++this.$maxRev;},this);}var deltaSet=this.$redoStack.pop();var redoSelectionRange=null;if(deltaSet){redoSelectionRange=session.redoChanges(deltaSet,dontSelect);this.$undoStack.push(deltaSet);this.$syncRev();}this.$fromUndo=false;return redoSelectionRange;};this.$syncRev=function(){var stack=this.$undoStack;var nextDelta=stack[stack.length-1];var id=nextDelta&&nextDelta[0].id||0;this.$redoStackBaseRev=id;this.$rev=id;};this.reset=function(){this.lastDeltas=null;this.$lastDelta=null;this.$undoStack=[];this.$redoStack=[];this.$rev=0;this.mark=0;this.$redoStackBaseRev=this.$rev;this.selections=[];};this.canUndo=function(){return this.$undoStack.length>0;};this.canRedo=function(){return this.$redoStack.length>0;};this.bookmark=function(rev){if(rev==undefined)rev=this.$rev;this.mark=rev;};this.isAtBookmark=function(){return this.$rev===this.mark;};this.toJSON=function(){};this.fromJSON=function(){};this.hasUndo=this.canUndo;this.hasRedo=this.canRedo;this.isClean=this.isAtBookmark;this.markClean=this.bookmark;this.$prettyPrint=function(delta){if(delta)return stringifyDelta(delta);return stringifyDelta(this.$undoStack)+"\n---\n"+stringifyDelta(this.$redoStack);};}).call(UndoManager.prototype);function rearrangeUndoStack(stack,pos){for(var i=pos;i--;){var deltaSet=stack[i];if(deltaSet&&!deltaSet[0].ignore){while(i<pos-1){var swapped=swapGroups(stack[i],stack[i+1]);stack[i]=swapped[0];stack[i+1]=swapped[1];i++;}return true;}}}var Range=require("./range").Range;var cmp=Range.comparePoints;var comparePoints=Range.comparePoints;function $updateMarkers(delta){var isInsert=delta.action=="insert";var start=delta.start;var end=delta.end;var rowShift=(end.row-start.row)*(isInsert?1:-1);var colShift=(end.column-start.column)*(isInsert?1:-1);if(isInsert)end=start;for(var i in this.marks){var point=this.marks[i];var cmp=comparePoints(point,start);if(cmp<0){continue;// delta starts after the range
}if(cmp===0){if(isInsert){if(point.bias==1){cmp=1;}else{point.bias==-1;continue;}}}var cmp2=isInsert?cmp:comparePoints(point,end);if(cmp2>0){point.row+=rowShift;point.column+=point.row==end.row?colShift:0;continue;}if(!isInsert&&cmp2<=0){point.row=start.row;point.column=start.column;if(cmp2===0)point.bias=1;}}}function clonePos(pos){return{row:pos.row,column:pos.column};}function cloneDelta(d){return{start:clonePos(d.start),end:clonePos(d.end),action:d.action,lines:d.lines.slice()};}function stringifyDelta(d){d=d||this;if(Array.isArray(d)){return d.map(stringifyDelta).join("\n");}var type="";if(d.action){type=d.action=="insert"?"+":"-";type+="["+d.lines+"]";}else if(d.value){if(Array.isArray(d.value)){type=d.value.map(stringifyRange).join("\n");}else{type=stringifyRange(d.value);}}if(d.start){type+=stringifyRange(d);}if(d.id||d.rev){type+="\t("+(d.id||d.rev)+")";}return type;}function stringifyRange(r){return r.start.row+":"+r.start.column+"=>"+r.end.row+":"+r.end.column;}function swap(d1,d2){var i1=d1.action=="insert";var i2=d2.action=="insert";if(i1&&i2){if(cmp(d2.start,d1.end)>=0){shift(d2,d1,-1);}else if(cmp(d2.start,d1.start)<=0){shift(d1,d2,+1);}else{return null;}}else if(i1&&!i2){if(cmp(d2.start,d1.end)>=0){shift(d2,d1,-1);}else if(cmp(d2.end,d1.start)<=0){shift(d1,d2,-1);}else{return null;}}else if(!i1&&i2){if(cmp(d2.start,d1.start)>=0){shift(d2,d1,+1);}else if(cmp(d2.start,d1.start)<=0){shift(d1,d2,+1);}else{return null;}}else if(!i1&&!i2){if(cmp(d2.start,d1.start)>=0){shift(d2,d1,+1);}else if(cmp(d2.end,d1.start)<=0){shift(d1,d2,-1);}else{return null;}}return[d2,d1];}function swapGroups(ds1,ds2){for(var i=ds1.length;i--;){for(var j=0;j<ds2.length;j++){if(!swap(ds1[i],ds2[j])){while(i<ds1.length){while(j--){swap(ds2[j],ds1[i]);}j=ds2.length;i++;}return[ds1,ds2];}}}ds1.selectionBefore=ds2.selectionBefore=ds1.selectionAfter=ds2.selectionAfter=null;return[ds2,ds1];}function xform(d1,c1){var i1=d1.action=="insert";var i2=c1.action=="insert";if(i1&&i2){if(cmp(d1.start,c1.start)<0){shift(c1,d1,1);}else{shift(d1,c1,1);}}else if(i1&&!i2){if(cmp(d1.start,c1.end)>=0){shift(d1,c1,-1);}else if(cmp(d1.start,c1.start)<=0){shift(c1,d1,+1);}else{shift(d1,Range.fromPoints(c1.start,d1.start),-1);shift(c1,d1,+1);}}else if(!i1&&i2){if(cmp(c1.start,d1.end)>=0){shift(c1,d1,-1);}else if(cmp(c1.start,d1.start)<=0){shift(d1,c1,+1);}else{shift(c1,Range.fromPoints(d1.start,c1.start),-1);shift(d1,c1,+1);}}else if(!i1&&!i2){if(cmp(c1.start,d1.end)>=0){shift(c1,d1,-1);}else if(cmp(c1.end,d1.start)<=0){shift(d1,c1,-1);}else{var before,after;if(cmp(d1.start,c1.start)<0){before=d1;d1=splitDelta(d1,c1.start);}if(cmp(d1.end,c1.end)>0){after=splitDelta(d1,c1.end);}shiftPos(c1.end,d1.start,d1.end,-1);if(after&&!before){d1.lines=after.lines;d1.start=after.start;d1.end=after.end;after=d1;}return[c1,before,after].filter(Boolean);}}return[c1,d1];}function shift(d1,d2,dir){shiftPos(d1.start,d2.start,d2.end,dir);shiftPos(d1.end,d2.start,d2.end,dir);}function shiftPos(pos,start,end,dir){if(pos.row==(dir==1?start:end).row){pos.column+=dir*(end.column-start.column);}pos.row+=dir*(end.row-start.row);}function splitDelta(c,pos){var lines=c.lines;var end=c.end;c.end=clonePos(pos);var rowsBefore=c.end.row-c.start.row;var otherLines=lines.splice(rowsBefore,lines.length);var col=rowsBefore?pos.column:pos.column-c.start.column;lines.push(otherLines[0].substring(0,col));otherLines[0]=otherLines[0].substr(col);var rest={start:clonePos(pos),end:end,lines:otherLines,action:c.action};return rest;}function moveDeltasByOne(redoStack,d){d=cloneDelta(d);for(var j=redoStack.length;j--;){var deltaSet=redoStack[j];for(var i=0;i<deltaSet.length;i++){var x=deltaSet[i];var xformed=xform(x,d);d=xformed[0];if(xformed.length!=2){if(xformed[2]){deltaSet.splice(i+1,1,xformed[1],xformed[2]);i++;}else if(!xformed[1]){deltaSet.splice(i,1);i--;}}}if(!deltaSet.length){redoStack.splice(j,1);}}return redoStack;}function rebaseRedoStack(redoStack,deltaSets){for(var i=0;i<deltaSets.length;i++){var deltas=deltaSets[i];for(var j=0;j<deltas.length;j++){moveDeltasByOne(redoStack,deltas[j]);}}}exports.UndoManager=UndoManager;});ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(require,exports,module){"use strict";var dom=require("../lib/dom");var Lines=function Lines(element,canvasHeight){this.element=element;this.canvasHeight=canvasHeight||500000;this.element.style.height=this.canvasHeight*2+"px";this.cells=[];this.cellCache=[];this.$offsetCoefficient=0;};(function(){this.moveContainer=function(config){dom.translate(this.element,0,-(config.firstRowScreen*config.lineHeight%this.canvasHeight)-config.offset*this.$offsetCoefficient);};this.pageChanged=function(oldConfig,newConfig){return Math.floor(oldConfig.firstRowScreen*oldConfig.lineHeight/this.canvasHeight)!==Math.floor(newConfig.firstRowScreen*newConfig.lineHeight/this.canvasHeight);};this.computeLineTop=function(row,config,session){var screenTop=config.firstRowScreen*config.lineHeight;var screenPage=Math.floor(screenTop/this.canvasHeight);var lineTop=session.documentToScreenRow(row,0)*config.lineHeight;return lineTop-screenPage*this.canvasHeight;};this.computeLineHeight=function(row,config,session){return config.lineHeight*session.getRowLineCount(row);};this.getLength=function(){return this.cells.length;};this.get=function(index){return this.cells[index];};this.shift=function(){this.$cacheCell(this.cells.shift());};this.pop=function(){this.$cacheCell(this.cells.pop());};this.push=function(cell){if(Array.isArray(cell)){this.cells.push.apply(this.cells,cell);var fragment=dom.createFragment(this.element);for(var i=0;i<cell.length;i++){fragment.appendChild(cell[i].element);}this.element.appendChild(fragment);}else{this.cells.push(cell);this.element.appendChild(cell.element);}};this.unshift=function(cell){if(Array.isArray(cell)){this.cells.unshift.apply(this.cells,cell);var fragment=dom.createFragment(this.element);for(var i=0;i<cell.length;i++){fragment.appendChild(cell[i].element);}if(this.element.firstChild)this.element.insertBefore(fragment,this.element.firstChild);else this.element.appendChild(fragment);}else{this.cells.unshift(cell);this.element.insertAdjacentElement("afterbegin",cell.element);}};this.last=function(){if(this.cells.length)return this.cells[this.cells.length-1];else return null;};this.$cacheCell=function(cell){if(!cell)return;cell.element.remove();this.cellCache.push(cell);};this.createCell=function(row,config,session,initElement){var cell=this.cellCache.pop();if(!cell){var element=dom.createElement("div");if(initElement)initElement(element);this.element.appendChild(element);cell={element:element,text:"",row:row};}cell.row=row;return cell;};}).call(Lines.prototype);exports.Lines=Lines;});ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/layer/lines"],function(require,exports,module){"use strict";var dom=require("../lib/dom");var oop=require("../lib/oop");var lang=require("../lib/lang");var EventEmitter=require("../lib/event_emitter").EventEmitter;var Lines=require("./lines").Lines;var Gutter=function Gutter(parentEl){this.element=dom.createElement("div");this.element.className="ace_layer ace_gutter-layer";parentEl.appendChild(this.element);this.setShowFoldWidgets(this.$showFoldWidgets);this.gutterWidth=0;this.$annotations=[];this.$updateAnnotations=this.$updateAnnotations.bind(this);this.$lines=new Lines(this.element);this.$lines.$offsetCoefficient=1;};(function(){oop.implement(this,EventEmitter);this.setSession=function(session){if(this.session)this.session.off("change",this.$updateAnnotations);this.session=session;if(session)session.on("change",this.$updateAnnotations);};this.addGutterDecoration=function(row,className){if(window.console)console.warn&&console.warn("deprecated use session.addGutterDecoration");this.session.addGutterDecoration(row,className);};this.removeGutterDecoration=function(row,className){if(window.console)console.warn&&console.warn("deprecated use session.removeGutterDecoration");this.session.removeGutterDecoration(row,className);};this.setAnnotations=function(annotations){this.$annotations=[];for(var i=0;i<annotations.length;i++){var annotation=annotations[i];var row=annotation.row;var rowInfo=this.$annotations[row];if(!rowInfo)rowInfo=this.$annotations[row]={text:[]};var annoText=annotation.text;annoText=annoText?lang.escapeHTML(annoText):annotation.html||"";if(rowInfo.text.indexOf(annoText)===-1)rowInfo.text.push(annoText);var type=annotation.type;if(type=="error")rowInfo.className=" ace_error";else if(type=="warning"&&rowInfo.className!=" ace_error")rowInfo.className=" ace_warning";else if(type=="info"&&!rowInfo.className)rowInfo.className=" ace_info";}};this.$updateAnnotations=function(delta){if(!this.$annotations.length)return;var firstRow=delta.start.row;var len=delta.end.row-firstRow;if(len===0){}else if(delta.action=='remove'){this.$annotations.splice(firstRow,len+1,null);}else{var args=new Array(len+1);args.unshift(firstRow,1);this.$annotations.splice.apply(this.$annotations,args);}};this.update=function(config){this.config=config;var session=this.session;var firstRow=config.firstRow;var lastRow=Math.min(config.lastRow+config.gutterOffset,// needed to compensate for hor scollbar
session.getLength()-1);this.oldLastRow=lastRow;this.config=config;this.$lines.moveContainer(config);this.$updateCursorRow();var fold=session.getNextFoldLine(firstRow);var foldStart=fold?fold.start.row:Infinity;var cell=null;var index=-1;var row=firstRow;while(true){if(row>foldStart){row=fold.end.row+1;fold=session.getNextFoldLine(row,fold);foldStart=fold?fold.start.row:Infinity;}if(row>lastRow){while(this.$lines.getLength()>index+1){this.$lines.pop();}break;}cell=this.$lines.get(++index);if(cell){cell.row=row;}else{cell=this.$lines.createCell(row,config,this.session,onCreateCell);this.$lines.push(cell);}this.$renderCell(cell,config,fold,row);row++;}this._signal("afterRender");this.$updateGutterWidth(config);};this.$updateGutterWidth=function(config){var session=this.session;var gutterRenderer=session.gutterRenderer||this.$renderer;var firstLineNumber=session.$firstLineNumber;var lastLineText=this.$lines.last()?this.$lines.last().text:"";if(this.$fixedWidth||session.$useWrapMode)lastLineText=session.getLength()+firstLineNumber-1;var gutterWidth=gutterRenderer?gutterRenderer.getWidth(session,lastLineText,config):lastLineText.toString().length*config.characterWidth;var padding=this.$padding||this.$computePadding();gutterWidth+=padding.left+padding.right;if(gutterWidth!==this.gutterWidth&&!isNaN(gutterWidth)){this.gutterWidth=gutterWidth;this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px";this._signal("changeGutterWidth",gutterWidth);}};this.$updateCursorRow=function(){if(!this.$highlightGutterLine)return;var position=this.session.selection.getCursor();if(this.$cursorRow===position.row)return;this.$cursorRow=position.row;};this.updateLineHighlight=function(){if(!this.$highlightGutterLine)return;var row=this.session.selection.cursor.row;this.$cursorRow=row;if(this.$cursorCell&&this.$cursorCell.row==row)return;if(this.$cursorCell)this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","");var cells=this.$lines.cells;this.$cursorCell=null;for(var i=0;i<cells.length;i++){var cell=cells[i];if(cell.row>=this.$cursorRow){if(cell.row>this.$cursorRow){var fold=this.session.getFoldLine(this.$cursorRow);if(i>0&&fold&&fold.start.row==cells[i-1].row)cell=cells[i-1];else break;}cell.element.className="ace_gutter-active-line "+cell.element.className;this.$cursorCell=cell;break;}}};this.scrollLines=function(config){var oldConfig=this.config;this.config=config;this.$updateCursorRow();if(this.$lines.pageChanged(oldConfig,config))return this.update(config);this.$lines.moveContainer(config);var lastRow=Math.min(config.lastRow+config.gutterOffset,// needed to compensate for hor scollbar
this.session.getLength()-1);var oldLastRow=this.oldLastRow;this.oldLastRow=lastRow;if(!oldConfig||oldLastRow<config.firstRow)return this.update(config);if(lastRow<oldConfig.firstRow)return this.update(config);if(oldConfig.firstRow<config.firstRow)for(var row=this.session.getFoldedRowCount(oldConfig.firstRow,config.firstRow-1);row>0;row--){this.$lines.shift();}if(oldLastRow>lastRow)for(var row=this.session.getFoldedRowCount(lastRow+1,oldLastRow);row>0;row--){this.$lines.pop();}if(config.firstRow<oldConfig.firstRow){this.$lines.unshift(this.$renderLines(config,config.firstRow,oldConfig.firstRow-1));}if(lastRow>oldLastRow){this.$lines.push(this.$renderLines(config,oldLastRow+1,lastRow));}this.updateLineHighlight();this._signal("afterRender");this.$updateGutterWidth(config);};this.$renderLines=function(config,firstRow,lastRow){var fragment=[];var row=firstRow;var foldLine=this.session.getNextFoldLine(row);var foldStart=foldLine?foldLine.start.row:Infinity;while(true){if(row>foldStart){row=foldLine.end.row+1;foldLine=this.session.getNextFoldLine(row,foldLine);foldStart=foldLine?foldLine.start.row:Infinity;}if(row>lastRow)break;var cell=this.$lines.createCell(row,config,this.session,onCreateCell);this.$renderCell(cell,config,foldLine,row);fragment.push(cell);row++;}return fragment;};this.$renderCell=function(cell,config,fold,row){var element=cell.element;var session=this.session;var textNode=element.childNodes[0];var foldWidget=element.childNodes[1];var firstLineNumber=session.$firstLineNumber;var breakpoints=session.$breakpoints;var decorations=session.$decorations;var gutterRenderer=session.gutterRenderer||this.$renderer;var foldWidgets=this.$showFoldWidgets&&session.foldWidgets;var foldStart=fold?fold.start.row:Number.MAX_VALUE;var className="ace_gutter-cell ";if(this.$highlightGutterLine){if(row==this.$cursorRow||fold&&row<this.$cursorRow&&row>=foldStart&&this.$cursorRow<=fold.end.row){className+="ace_gutter-active-line ";if(this.$cursorCell!=cell){if(this.$cursorCell)this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","");this.$cursorCell=cell;}}}if(breakpoints[row])className+=breakpoints[row];if(decorations[row])className+=decorations[row];if(this.$annotations[row])className+=this.$annotations[row].className;if(element.className!=className)element.className=className;if(foldWidgets){var c=foldWidgets[row];if(c==null)c=foldWidgets[row]=session.getFoldWidget(row);}if(c){var className="ace_fold-widget ace_"+c;if(c=="start"&&row==foldStart&&row<fold.end.row)className+=" ace_closed";else className+=" ace_open";if(foldWidget.className!=className)foldWidget.className=className;var foldHeight=config.lineHeight+"px";dom.setStyle(foldWidget.style,"height",foldHeight);dom.setStyle(foldWidget.style,"display","inline-block");}else{if(foldWidget){dom.setStyle(foldWidget.style,"display","none");}}var text=(gutterRenderer?gutterRenderer.getText(session,row):row+firstLineNumber).toString();if(text!==textNode.data){textNode.data=text;}dom.setStyle(cell.element.style,"height",this.$lines.computeLineHeight(row,config,session)+"px");dom.setStyle(cell.element.style,"top",this.$lines.computeLineTop(row,config,session)+"px");cell.text=text;return cell;};this.$fixedWidth=false;this.$highlightGutterLine=true;this.$renderer="";this.setHighlightGutterLine=function(highlightGutterLine){this.$highlightGutterLine=highlightGutterLine;};this.$showLineNumbers=true;this.$renderer="";this.setShowLineNumbers=function(show){this.$renderer=!show&&{getWidth:function getWidth(){return 0;},getText:function getText(){return"";}};};this.getShowLineNumbers=function(){return this.$showLineNumbers;};this.$showFoldWidgets=true;this.setShowFoldWidgets=function(show){if(show)dom.addCssClass(this.element,"ace_folding-enabled");else dom.removeCssClass(this.element,"ace_folding-enabled");this.$showFoldWidgets=show;this.$padding=null;};this.getShowFoldWidgets=function(){return this.$showFoldWidgets;};this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var style=dom.computedStyle(this.element.firstChild);this.$padding={};this.$padding.left=(parseInt(style.borderLeftWidth)||0)+(parseInt(style.paddingLeft)||0)+1;this.$padding.right=(parseInt(style.borderRightWidth)||0)+(parseInt(style.paddingRight)||0);return this.$padding;};this.getRegion=function(point){var padding=this.$padding||this.$computePadding();var rect=this.element.getBoundingClientRect();if(point.x<padding.left+rect.left)return"markers";if(this.$showFoldWidgets&&point.x>rect.right-padding.right)return"foldWidgets";};}).call(Gutter.prototype);function onCreateCell(element){var textNode=document.createTextNode('');element.appendChild(textNode);var foldWidget=dom.createElement("span");element.appendChild(foldWidget);return element;}exports.Gutter=Gutter;});ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(require,exports,module){"use strict";var Range=require("../range").Range;var dom=require("../lib/dom");var Marker=function Marker(parentEl){this.element=dom.createElement("div");this.element.className="ace_layer ace_marker-layer";parentEl.appendChild(this.element);};(function(){this.$padding=0;this.setPadding=function(padding){this.$padding=padding;};this.setSession=function(session){this.session=session;};this.setMarkers=function(markers){this.markers=markers;};this.elt=function(className,css){var x=this.i!=-1&&this.element.childNodes[this.i];if(!x){x=document.createElement("div");this.element.appendChild(x);this.i=-1;}else{this.i++;}x.style.cssText=css;x.className=className;};this.update=function(config){if(!config)return;this.config=config;this.i=0;var html;for(var key in this.markers){var marker=this.markers[key];if(!marker.range){marker.update(html,this,this.session,config);continue;}var range=marker.range.clipRows(config.firstRow,config.lastRow);if(range.isEmpty())continue;range=range.toScreenRange(this.session);if(marker.renderer){var top=this.$getTop(range.start.row,config);var left=this.$padding+range.start.column*config.characterWidth;marker.renderer(html,range,left,top,config);}else if(marker.type=="fullLine"){this.drawFullLineMarker(html,range,marker.clazz,config);}else if(marker.type=="screenLine"){this.drawScreenLineMarker(html,range,marker.clazz,config);}else if(range.isMultiLine()){if(marker.type=="text")this.drawTextMarker(html,range,marker.clazz,config);else this.drawMultiLineMarker(html,range,marker.clazz,config);}else{this.drawSingleLineMarker(html,range,marker.clazz+" ace_start"+" ace_br15",config);}}if(this.i!=-1){while(this.i<this.element.childElementCount){this.element.removeChild(this.element.lastChild);}}};this.$getTop=function(row,layerConfig){return(row-layerConfig.firstRowScreen)*layerConfig.lineHeight;};function getBorderClass(tl,tr,br,bl){return(tl?1:0)|(tr?2:0)|(br?4:0)|(bl?8:0);}this.drawTextMarker=function(stringBuilder,range,clazz,layerConfig,extraStyle){var session=this.session;var start=range.start.row;var end=range.end.row;var row=start;var prev=0;var curr=0;var next=session.getScreenLastRowColumn(row);var lineRange=new Range(row,range.start.column,row,curr);for(;row<=end;row++){lineRange.start.row=lineRange.end.row=row;lineRange.start.column=row==start?range.start.column:session.getRowWrapIndent(row);lineRange.end.column=next;prev=curr;curr=next;next=row+1<end?session.getScreenLastRowColumn(row+1):row==end?0:range.end.column;this.drawSingleLineMarker(stringBuilder,lineRange,clazz+(row==start?" ace_start":"")+" ace_br"+getBorderClass(row==start||row==start+1&&range.start.column,prev<curr,curr>next,row==end),layerConfig,row==end?0:1,extraStyle);}};this.drawMultiLineMarker=function(stringBuilder,range,clazz,config,extraStyle){var padding=this.$padding;var height=config.lineHeight;var top=this.$getTop(range.start.row,config);var left=padding+range.start.column*config.characterWidth;extraStyle=extraStyle||"";if(this.session.$bidiHandler.isBidiRow(range.start.row)){var range1=range.clone();range1.end.row=range1.start.row;range1.end.column=this.session.getLine(range1.start.row).length;this.drawBidiSingleLineMarker(stringBuilder,range1,clazz+" ace_br1 ace_start",config,null,extraStyle);}else{this.elt(clazz+" ace_br1 ace_start","height:"+height+"px;"+"right:0;"+"top:"+top+"px;left:"+left+"px;"+(extraStyle||""));}if(this.session.$bidiHandler.isBidiRow(range.end.row)){var range1=range.clone();range1.start.row=range1.end.row;range1.start.column=0;this.drawBidiSingleLineMarker(stringBuilder,range1,clazz+" ace_br12",config,null,extraStyle);}else{top=this.$getTop(range.end.row,config);var width=range.end.column*config.characterWidth;this.elt(clazz+" ace_br12","height:"+height+"px;"+"width:"+width+"px;"+"top:"+top+"px;"+"left:"+padding+"px;"+(extraStyle||""));}height=(range.end.row-range.start.row-1)*config.lineHeight;if(height<=0)return;top=this.$getTop(range.start.row+1,config);var radiusClass=(range.start.column?1:0)|(range.end.column?0:8);this.elt(clazz+(radiusClass?" ace_br"+radiusClass:""),"height:"+height+"px;"+"right:0;"+"top:"+top+"px;"+"left:"+padding+"px;"+(extraStyle||""));};this.drawSingleLineMarker=function(stringBuilder,range,clazz,config,extraLength,extraStyle){if(this.session.$bidiHandler.isBidiRow(range.start.row))return this.drawBidiSingleLineMarker(stringBuilder,range,clazz,config,extraLength,extraStyle);var height=config.lineHeight;var width=(range.end.column+(extraLength||0)-range.start.column)*config.characterWidth;var top=this.$getTop(range.start.row,config);var left=this.$padding+range.start.column*config.characterWidth;this.elt(clazz,"height:"+height+"px;"+"width:"+width+"px;"+"top:"+top+"px;"+"left:"+left+"px;"+(extraStyle||""));};this.drawBidiSingleLineMarker=function(stringBuilder,range,clazz,config,extraLength,extraStyle){var height=config.lineHeight,top=this.$getTop(range.start.row,config),padding=this.$padding;var selections=this.session.$bidiHandler.getSelections(range.start.column,range.end.column);selections.forEach(function(selection){this.elt(clazz,"height:"+height+"px;"+"width:"+selection.width+(extraLength||0)+"px;"+"top:"+top+"px;"+"left:"+(padding+selection.left)+"px;"+(extraStyle||""));},this);};this.drawFullLineMarker=function(stringBuilder,range,clazz,config,extraStyle){var top=this.$getTop(range.start.row,config);var height=config.lineHeight;if(range.start.row!=range.end.row)height+=this.$getTop(range.end.row,config)-top;this.elt(clazz,"height:"+height+"px;"+"top:"+top+"px;"+"left:0;right:0;"+(extraStyle||""));};this.drawScreenLineMarker=function(stringBuilder,range,clazz,config,extraStyle){var top=this.$getTop(range.start.row,config);var height=config.lineHeight;this.elt(clazz,"height:"+height+"px;"+"top:"+top+"px;"+"left:0;right:0;"+(extraStyle||""));};}).call(Marker.prototype);exports.Marker=Marker;});ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var dom=require("../lib/dom");var lang=require("../lib/lang");var Lines=require("./lines").Lines;var EventEmitter=require("../lib/event_emitter").EventEmitter;var Text=function Text(parentEl){this.dom=dom;this.element=this.dom.createElement("div");this.element.className="ace_layer ace_text-layer";parentEl.appendChild(this.element);this.$updateEolChar=this.$updateEolChar.bind(this);this.$lines=new Lines(this.element);};(function(){oop.implement(this,EventEmitter);this.EOF_CHAR="\xB6";this.EOL_CHAR_LF="\xAC";this.EOL_CHAR_CRLF="\xa4";this.EOL_CHAR=this.EOL_CHAR_LF;this.TAB_CHAR="\u2014";//"\u21E5";
this.SPACE_CHAR="\xB7";this.$padding=0;this.MAX_LINE_LENGTH=10000;this.$updateEolChar=function(){var doc=this.session.doc;var unixMode=doc.getNewLineCharacter()=="\n"&&doc.getNewLineMode()!="windows";var EOL_CHAR=unixMode?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=EOL_CHAR){this.EOL_CHAR=EOL_CHAR;return true;}};this.setPadding=function(padding){this.$padding=padding;this.element.style.margin="0 "+padding+"px";};this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0;};this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0;};this.$setFontMetrics=function(measure){this.$fontMetrics=measure;this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e);}.bind(this));this.$pollSizeChanges();};this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges();};this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges();};this.setSession=function(session){this.session=session;if(session)this.$computeTabString();};this.showInvisibles=false;this.showSpaces=false;this.showTabs=false;this.showEOL=false;this.setShowInvisibles=function(showInvisibles){if(this.showInvisibles==showInvisibles)return false;this.showInvisibles=showInvisibles;if(typeof showInvisibles=="string"){this.showSpaces=/tab/i.test(showInvisibles);this.showTabs=/space/i.test(showInvisibles);this.showEOL=/eol/i.test(showInvisibles);}else{this.showSpaces=this.showTabs=this.showEOL=showInvisibles;}this.$computeTabString();return true;};this.displayIndentGuides=true;this.setDisplayIndentGuides=function(display){if(this.displayIndentGuides==display)return false;this.displayIndentGuides=display;this.$computeTabString();return true;};this.$tabStrings=[];this.onChangeTabSize=this.$computeTabString=function(){var tabSize=this.session.getTabSize();this.tabSize=tabSize;var tabStr=this.$tabStrings=[0];for(var i=1;i<tabSize+1;i++){if(this.showTabs){var span=this.dom.createElement("span");span.className="ace_invisible ace_invisible_tab";span.textContent=lang.stringRepeat(this.TAB_CHAR,i);tabStr.push(span);}else{tabStr.push(this.dom.createTextNode(lang.stringRepeat(" ",i),this.element));}}if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var className="ace_indent-guide";var spaceClass=this.showSpaces?" ace_invisible ace_invisible_space":"";var spaceContent=this.showSpaces?lang.stringRepeat(this.SPACE_CHAR,this.tabSize):lang.stringRepeat(" ",this.tabSize);var tabClass=this.showTabs?" ace_invisible ace_invisible_tab":"";var tabContent=this.showTabs?lang.stringRepeat(this.TAB_CHAR,this.tabSize):spaceContent;var span=this.dom.createElement("span");span.className=className+spaceClass;span.textContent=spaceContent;this.$tabStrings[" "]=span;var span=this.dom.createElement("span");span.className=className+tabClass;span.textContent=tabContent;this.$tabStrings["\t"]=span;}};this.updateLines=function(config,firstRow,lastRow){if(this.config.lastRow!=config.lastRow||this.config.firstRow!=config.firstRow){return this.update(config);}this.config=config;var first=Math.max(firstRow,config.firstRow);var last=Math.min(lastRow,config.lastRow);var lineElements=this.element.childNodes;var lineElementsIdx=0;for(var row=config.firstRow;row<first;row++){var foldLine=this.session.getFoldLine(row);if(foldLine){if(foldLine.containsRow(first)){first=foldLine.start.row;break;}else{row=foldLine.end.row;}}lineElementsIdx++;}var heightChanged=false;var row=first;var foldLine=this.session.getNextFoldLine(row);var foldStart=foldLine?foldLine.start.row:Infinity;while(true){if(row>foldStart){row=foldLine.end.row+1;foldLine=this.session.getNextFoldLine(row,foldLine);foldStart=foldLine?foldLine.start.row:Infinity;}if(row>last)break;var lineElement=lineElements[lineElementsIdx++];if(lineElement){this.dom.removeChildren(lineElement);this.$renderLine(lineElement,row,row==foldStart?foldLine:false);if(heightChanged)lineElement.style.top=this.$lines.computeLineTop(row,config,this.session)+"px";var height=config.lineHeight*this.session.getRowLength(row)+"px";if(lineElement.style.height!=height){heightChanged=true;lineElement.style.height=height;}}row++;}if(heightChanged){while(lineElementsIdx<this.$lines.cells.length){var cell=this.$lines.cells[lineElementsIdx++];cell.element.style.top=this.$lines.computeLineTop(cell.row,config,this.session)+"px";}}};this.scrollLines=function(config){var oldConfig=this.config;this.config=config;if(this.$lines.pageChanged(oldConfig,config))return this.update(config);this.$lines.moveContainer(config);var lastRow=config.lastRow;var oldLastRow=oldConfig?oldConfig.lastRow:-1;if(!oldConfig||oldLastRow<config.firstRow)return this.update(config);if(lastRow<oldConfig.firstRow)return this.update(config);if(!oldConfig||oldConfig.lastRow<config.firstRow)return this.update(config);if(config.lastRow<oldConfig.firstRow)return this.update(config);if(oldConfig.firstRow<config.firstRow)for(var row=this.session.getFoldedRowCount(oldConfig.firstRow,config.firstRow-1);row>0;row--){this.$lines.shift();}if(oldConfig.lastRow>config.lastRow)for(var row=this.session.getFoldedRowCount(config.lastRow+1,oldConfig.lastRow);row>0;row--){this.$lines.pop();}if(config.firstRow<oldConfig.firstRow){this.$lines.unshift(this.$renderLinesFragment(config,config.firstRow,oldConfig.firstRow-1));}if(config.lastRow>oldConfig.lastRow){this.$lines.push(this.$renderLinesFragment(config,oldConfig.lastRow+1,config.lastRow));}};this.$renderLinesFragment=function(config,firstRow,lastRow){var fragment=[];var row=firstRow;var foldLine=this.session.getNextFoldLine(row);var foldStart=foldLine?foldLine.start.row:Infinity;while(true){if(row>foldStart){row=foldLine.end.row+1;foldLine=this.session.getNextFoldLine(row,foldLine);foldStart=foldLine?foldLine.start.row:Infinity;}if(row>lastRow)break;var line=this.$lines.createCell(row,config,this.session);var lineEl=line.element;this.dom.removeChildren(lineEl);dom.setStyle(lineEl.style,"height",this.$lines.computeLineHeight(row,config,this.session)+"px");dom.setStyle(lineEl.style,"top",this.$lines.computeLineTop(row,config,this.session)+"px");this.$renderLine(lineEl,row,row==foldStart?foldLine:false);if(this.$useLineGroups()){lineEl.className="ace_line_group";}else{lineEl.className="ace_line";}fragment.push(line);row++;}return fragment;};this.update=function(config){this.$lines.moveContainer(config);this.config=config;var firstRow=config.firstRow;var lastRow=config.lastRow;var lines=this.$lines;while(lines.getLength()){lines.pop();}lines.push(this.$renderLinesFragment(config,firstRow,lastRow));};this.$textToken={"text":true,"rparen":true,"lparen":true};this.$renderToken=function(parent,screenColumn,token,value){var self=this;var re=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g;var valueFragment=this.dom.createFragment(this.element);var m;var i=0;while(m=re.exec(value)){var tab=m[1];var simpleSpace=m[2];var controlCharacter=m[3];var cjkSpace=m[4];var cjk=m[5];if(!self.showSpaces&&simpleSpace)continue;var before=i!=m.index?value.slice(i,m.index):"";i=m.index+m[0].length;if(before){valueFragment.appendChild(this.dom.createTextNode(before,this.element));}if(tab){var tabSize=self.session.getScreenTabSize(screenColumn+m.index);valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));screenColumn+=tabSize-1;}else if(simpleSpace){if(self.showSpaces){var span=this.dom.createElement("span");span.className="ace_invisible ace_invisible_space";span.textContent=lang.stringRepeat(self.SPACE_CHAR,simpleSpace.length);valueFragment.appendChild(span);}else{valueFragment.appendChild(this.com.createTextNode(simpleSpace,this.element));}}else if(controlCharacter){var span=this.dom.createElement("span");span.className="ace_invisible ace_invisible_space ace_invalid";span.textContent=lang.stringRepeat(self.SPACE_CHAR,controlCharacter.length);valueFragment.appendChild(span);}else if(cjkSpace){screenColumn+=1;var span=this.dom.createElement("span");span.style.width=self.config.characterWidth*2+"px";span.className=self.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk";span.textContent=self.showSpaces?self.SPACE_CHAR:cjkSpace;valueFragment.appendChild(span);}else if(cjk){screenColumn+=1;var span=this.dom.createElement("span");span.style.width=self.config.characterWidth*2+"px";span.className="ace_cjk";span.textContent=cjk;valueFragment.appendChild(span);}}valueFragment.appendChild(this.dom.createTextNode(i?value.slice(i):value,this.element));if(!this.$textToken[token.type]){var classes="ace_"+token.type.replace(/\./g," ace_");var span=this.dom.createElement("span");if(token.type=="fold")span.style.width=token.value.length*this.config.characterWidth+"px";span.className=classes;span.appendChild(valueFragment);parent.appendChild(span);}else{parent.appendChild(valueFragment);}return screenColumn+value.length;};this.renderIndentGuide=function(parent,value,max){var cols=value.search(this.$indentGuideRe);if(cols<=0||cols>=max)return value;if(value[0]==" "){cols-=cols%this.tabSize;var count=cols/this.tabSize;for(var i=0;i<count;i++){parent.appendChild(this.$tabStrings[" "].cloneNode(true));}return value.substr(cols);}else if(value[0]=="\t"){for(var i=0;i<cols;i++){parent.appendChild(this.$tabStrings["\t"].cloneNode(true));}return value.substr(cols);}return value;};this.$createLineElement=function(parent){var lineEl=this.dom.createElement("div");lineEl.className="ace_line";lineEl.style.height=this.config.lineHeight+"px";return lineEl;};this.$renderWrappedLine=function(parent,tokens,splits){var chars=0;var split=0;var splitChars=splits[0];var screenColumn=0;var lineEl=this.$createLineElement();parent.appendChild(lineEl);for(var i=0;i<tokens.length;i++){var token=tokens[i];var value=token.value;if(i==0&&this.displayIndentGuides){chars=value.length;value=this.renderIndentGuide(lineEl,value,splitChars);if(!value)continue;chars-=value.length;}if(chars+value.length<splitChars){screenColumn=this.$renderToken(lineEl,screenColumn,token,value);chars+=value.length;}else{while(chars+value.length>=splitChars){screenColumn=this.$renderToken(lineEl,screenColumn,token,value.substring(0,splitChars-chars));value=value.substring(splitChars-chars);chars=splitChars;lineEl=this.$createLineElement();parent.appendChild(lineEl);lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat("\xa0",splits.indent),this.element));split++;screenColumn=0;splitChars=splits[split]||Number.MAX_VALUE;}if(value.length!=0){chars+=value.length;screenColumn=this.$renderToken(lineEl,screenColumn,token,value);}}}if(splits[splits.length-1]>this.MAX_LINE_LENGTH)this.$renderOverflowMessage(lineEl,screenColumn,null,"",true);};this.$renderSimpleLine=function(parent,tokens){var screenColumn=0;var token=tokens[0];var value=token.value;if(this.displayIndentGuides)value=this.renderIndentGuide(parent,value);if(value)screenColumn=this.$renderToken(parent,screenColumn,token,value);for(var i=1;i<tokens.length;i++){token=tokens[i];value=token.value;if(screenColumn+value.length>this.MAX_LINE_LENGTH)return this.$renderOverflowMessage(parent,screenColumn,token,value);screenColumn=this.$renderToken(parent,screenColumn,token,value);}};this.$renderOverflowMessage=function(parent,screenColumn,token,value,hide){token&&this.$renderToken(parent,screenColumn,token,value.slice(0,this.MAX_LINE_LENGTH-screenColumn));var overflowEl=this.dom.createElement("span");overflowEl.className="ace_inline_button ace_keyword ace_toggle_wrap";overflowEl.textContent=hide?"<hide>":"<click to see more...>";parent.appendChild(overflowEl);};this.$renderLine=function(parent,row,foldLine){if(!foldLine&&foldLine!=false)foldLine=this.session.getFoldLine(row);if(foldLine)var tokens=this.$getFoldLineTokens(row,foldLine);else var tokens=this.session.getTokens(row);var lastLineEl=parent;if(tokens.length){var splits=this.session.getRowSplitData(row);if(splits&&splits.length){this.$renderWrappedLine(parent,tokens,splits);var lastLineEl=parent.lastChild;}else{var lastLineEl=parent;if(this.$useLineGroups()){lastLineEl=this.$createLineElement();parent.appendChild(lastLineEl);}this.$renderSimpleLine(lastLineEl,tokens);}}else if(this.$useLineGroups()){lastLineEl=this.$createLineElement();parent.appendChild(lastLineEl);}if(this.showEOL&&lastLineEl){if(foldLine)row=foldLine.end.row;var invisibleEl=this.dom.createElement("span");invisibleEl.className="ace_invisible ace_invisible_eol";invisibleEl.textContent=row==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR;lastLineEl.appendChild(invisibleEl);}};this.$getFoldLineTokens=function(row,foldLine){var session=this.session;var renderTokens=[];function addTokens(tokens,from,to){var idx=0,col=0;while(col+tokens[idx].value.length<from){col+=tokens[idx].value.length;idx++;if(idx==tokens.length)return;}if(col!=from){var value=tokens[idx].value.substring(from-col);if(value.length>to-from)value=value.substring(0,to-from);renderTokens.push({type:tokens[idx].type,value:value});col=from+value.length;idx+=1;}while(col<to&&idx<tokens.length){var value=tokens[idx].value;if(value.length+col>to){renderTokens.push({type:tokens[idx].type,value:value.substring(0,to-col)});}else renderTokens.push(tokens[idx]);col+=value.length;idx+=1;}}var tokens=session.getTokens(row);foldLine.walk(function(placeholder,row,column,lastColumn,isNewRow){if(placeholder!=null){renderTokens.push({type:"fold",value:placeholder});}else{if(isNewRow)tokens=session.getTokens(row);if(tokens.length)addTokens(tokens,lastColumn,column);}},foldLine.end.row,this.session.getLine(foldLine.end.row).length);return renderTokens;};this.$useLineGroups=function(){return this.session.getUseWrapMode();};this.destroy=function(){};}).call(Text.prototype);exports.Text=Text;});ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(require,exports,module){"use strict";var dom=require("../lib/dom");var Cursor=function Cursor(parentEl){this.element=dom.createElement("div");this.element.className="ace_layer ace_cursor-layer";parentEl.appendChild(this.element);this.isVisible=false;this.isBlinking=true;this.blinkInterval=1000;this.smoothBlinking=false;this.cursors=[];this.cursor=this.addCursor();dom.addCssClass(this.element,"ace_hidden-cursors");this.$updateCursors=this.$updateOpacity.bind(this);};(function(){this.$updateOpacity=function(val){var cursors=this.cursors;for(var i=cursors.length;i--;){dom.setStyle(cursors[i].style,"opacity",val?"":"0");}};this.$startCssAnimation=function(){var cursors=this.cursors;for(var i=cursors.length;i--;){cursors[i].style.animationDuration=this.blinkInterval+"ms";}setTimeout(function(){dom.addCssClass(this.element,"ace_animate-blinking");}.bind(this));};this.$stopCssAnimation=function(){dom.removeCssClass(this.element,"ace_animate-blinking");};this.$padding=0;this.setPadding=function(padding){this.$padding=padding;};this.setSession=function(session){this.session=session;};this.setBlinking=function(blinking){if(blinking!=this.isBlinking){this.isBlinking=blinking;this.restartTimer();}};this.setBlinkInterval=function(blinkInterval){if(blinkInterval!=this.blinkInterval){this.blinkInterval=blinkInterval;this.restartTimer();}};this.setSmoothBlinking=function(smoothBlinking){if(smoothBlinking!=this.smoothBlinking){this.smoothBlinking=smoothBlinking;dom.setCssClass(this.element,"ace_smooth-blinking",smoothBlinking);this.$updateCursors(true);this.restartTimer();}};this.addCursor=function(){var el=dom.createElement("div");el.className="ace_cursor";this.element.appendChild(el);this.cursors.push(el);return el;};this.removeCursor=function(){if(this.cursors.length>1){var el=this.cursors.pop();el.parentNode.removeChild(el);return el;}};this.hideCursor=function(){this.isVisible=false;dom.addCssClass(this.element,"ace_hidden-cursors");this.restartTimer();};this.showCursor=function(){this.isVisible=true;dom.removeCssClass(this.element,"ace_hidden-cursors");this.restartTimer();};this.restartTimer=function(){var update=this.$updateCursors;clearInterval(this.intervalId);clearTimeout(this.timeoutId);this.$stopCssAnimation();if(this.smoothBlinking){dom.removeCssClass(this.element,"ace_smooth-blinking");}update(true);if(!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return;}if(this.smoothBlinking){setTimeout(function(){dom.addCssClass(this.element,"ace_smooth-blinking");}.bind(this));}if(dom.HAS_CSS_ANIMATION){this.$startCssAnimation();}else{var blink=function(){this.timeoutId=setTimeout(function(){update(false);},0.6*this.blinkInterval);}.bind(this);this.intervalId=setInterval(function(){update(true);blink();},this.blinkInterval);blink();}};this.getPixelPosition=function(position,onScreen){if(!this.config||!this.session)return{left:0,top:0};if(!position)position=this.session.selection.getCursor();var pos=this.session.documentToScreenPosition(position);var cursorLeft=this.$padding+(this.session.$bidiHandler.isBidiRow(pos.row,position.row)?this.session.$bidiHandler.getPosLeft(pos.column):pos.column*this.config.characterWidth);var cursorTop=(pos.row-(onScreen?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:cursorLeft,top:cursorTop};};this.isCursorInView=function(pixelPos,config){return pixelPos.top>=0&&pixelPos.top<config.maxHeight;};this.update=function(config){this.config=config;var selections=this.session.$selectionMarkers;var i=0,cursorIndex=0;if(selections===undefined||selections.length===0){selections=[{cursor:null}];}for(var i=0,n=selections.length;i<n;i++){var pixelPos=this.getPixelPosition(selections[i].cursor,true);if((pixelPos.top>config.height+config.offset||pixelPos.top<0)&&i>1){continue;}var element=this.cursors[cursorIndex++]||this.addCursor();var style=element.style;if(!this.drawCursor){if(!this.isCursorInView(pixelPos,config)){dom.setStyle(style,"display","none");}else{dom.setStyle(style,"display","block");dom.translate(element,pixelPos.left,pixelPos.top);dom.setStyle(style,"width",Math.round(config.characterWidth)+"px");dom.setStyle(style,"height",config.lineHeight+"px");}}else{this.drawCursor(element,pixelPos,config,selections[i],this.session);}}while(this.cursors.length>cursorIndex){this.removeCursor();}var overwrite=this.session.getOverwrite();this.$setOverwrite(overwrite);this.$pixelPos=pixelPos;this.restartTimer();};this.drawCursor=null;this.$setOverwrite=function(overwrite){if(overwrite!=this.overwrite){this.overwrite=overwrite;if(overwrite)dom.addCssClass(this.element,"ace_overwrite-cursors");else dom.removeCssClass(this.element,"ace_overwrite-cursors");}};this.destroy=function(){clearInterval(this.intervalId);clearTimeout(this.timeoutId);};}).call(Cursor.prototype);exports.Cursor=Cursor;});ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var dom=require("./lib/dom");var event=require("./lib/event");var EventEmitter=require("./lib/event_emitter").EventEmitter;var MAX_SCROLL_H=0x8000;var ScrollBar=function ScrollBar(parent){this.element=dom.createElement("div");this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix;this.inner=dom.createElement("div");this.inner.className="ace_scrollbar-inner";this.inner.textContent="\xa0";this.element.appendChild(this.inner);parent.appendChild(this.element);this.setVisible(false);this.skipEvent=false;event.addListener(this.element,"scroll",this.onScroll.bind(this));event.addListener(this.element,"mousedown",event.preventDefault);};(function(){oop.implement(this,EventEmitter);this.setVisible=function(isVisible){this.element.style.display=isVisible?"":"none";this.isVisible=isVisible;this.coeff=1;};}).call(ScrollBar.prototype);var VScrollBar=function VScrollBar(parent,renderer){ScrollBar.call(this,parent);this.scrollTop=0;this.scrollHeight=0;renderer.$scrollbarWidth=this.width=dom.scrollbarWidth(parent.ownerDocument);this.inner.style.width=this.element.style.width=(this.width||15)+5+"px";this.$minWidth=0;};oop.inherits(VScrollBar,ScrollBar);(function(){this.classSuffix='-v';this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var h=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-h)/(this.coeff-h);}this._emit("scroll",{data:this.scrollTop});}this.skipEvent=false;};this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0);};this.setHeight=function(height){this.element.style.height=height+"px";};this.setInnerHeight=this.setScrollHeight=function(height){this.scrollHeight=height;if(height>MAX_SCROLL_H){this.coeff=MAX_SCROLL_H/height;height=MAX_SCROLL_H;}else if(this.coeff!=1){this.coeff=1;}this.inner.style.height=height+"px";};this.setScrollTop=function(scrollTop){if(this.scrollTop!=scrollTop){this.skipEvent=true;this.scrollTop=scrollTop;this.element.scrollTop=scrollTop*this.coeff;}};}).call(VScrollBar.prototype);var HScrollBar=function HScrollBar(parent,renderer){ScrollBar.call(this,parent);this.scrollLeft=0;this.height=renderer.$scrollbarWidth;this.inner.style.height=this.element.style.height=(this.height||15)+5+"px";};oop.inherits(HScrollBar,ScrollBar);(function(){this.classSuffix='-h';this.onScroll=function(){if(!this.skipEvent){this.scrollLeft=this.element.scrollLeft;this._emit("scroll",{data:this.scrollLeft});}this.skipEvent=false;};this.getHeight=function(){return this.isVisible?this.height:0;};this.setWidth=function(width){this.element.style.width=width+"px";};this.setInnerWidth=function(width){this.inner.style.width=width+"px";};this.setScrollWidth=function(width){this.inner.style.width=width+"px";};this.setScrollLeft=function(scrollLeft){if(this.scrollLeft!=scrollLeft){this.skipEvent=true;this.scrollLeft=this.element.scrollLeft=scrollLeft;}};}).call(HScrollBar.prototype);exports.ScrollBar=VScrollBar;// backward compatibility
exports.ScrollBarV=VScrollBar;// backward compatibility
exports.ScrollBarH=HScrollBar;// backward compatibility
exports.VScrollBar=VScrollBar;exports.HScrollBar=HScrollBar;});ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(require,exports,module){"use strict";var event=require("./lib/event");var RenderLoop=function RenderLoop(onRender,win){this.onRender=onRender;this.pending=false;this.changes=0;this.$recursionLimit=2;this.window=win||window;var _self=this;this._flush=function(ts){_self.pending=false;var changes=_self.changes;if(changes){event.blockIdle(100);_self.changes=0;_self.onRender(changes);}if(_self.changes){if(_self.$recursionLimit--<0)return;_self.schedule();}else{_self.$recursionLimit=2;}};};(function(){this.schedule=function(change){this.changes=this.changes|change;if(this.changes&&!this.pending){event.nextFrame(this._flush);this.pending=true;}};this.clear=function(change){var changes=this.changes;this.changes=0;return changes;};}).call(RenderLoop.prototype);exports.RenderLoop=RenderLoop;});ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(require,exports,module){var oop=require("../lib/oop");var dom=require("../lib/dom");var lang=require("../lib/lang");var event=require("../lib/event");var useragent=require("../lib/useragent");var EventEmitter=require("../lib/event_emitter").EventEmitter;var CHAR_COUNT=256;var USE_OBSERVER=typeof ResizeObserver=="function";var L=200;var FontMetrics=exports.FontMetrics=function(parentEl){this.el=dom.createElement("div");this.$setMeasureNodeStyles(this.el.style,true);this.$main=dom.createElement("div");this.$setMeasureNodeStyles(this.$main.style);this.$measureNode=dom.createElement("div");this.$setMeasureNodeStyles(this.$measureNode.style);this.el.appendChild(this.$main);this.el.appendChild(this.$measureNode);parentEl.appendChild(this.el);this.$measureNode.textContent=lang.stringRepeat("X",CHAR_COUNT);this.$characterSize={width:0,height:0};if(USE_OBSERVER)this.$addObserver();else this.checkForSizeChanges();};(function(){oop.implement(this,EventEmitter);this.$characterSize={width:0,height:0};this.$setMeasureNodeStyles=function(style,isRoot){style.width=style.height="auto";style.left=style.top="0px";style.visibility="hidden";style.position="absolute";style.whiteSpace="pre";if(useragent.isIE<8){style["font-family"]="inherit";}else{style.font="inherit";}style.overflow=isRoot?"hidden":"visible";};this.checkForSizeChanges=function(size){if(size===undefined)size=this.$measureSizes();if(size&&(this.$characterSize.width!==size.width||this.$characterSize.height!==size.height)){this.$measureNode.style.fontWeight="bold";var boldSize=this.$measureSizes();this.$measureNode.style.fontWeight="";this.$characterSize=size;this.charSizes=Object.create(null);this.allowBoldFonts=boldSize&&boldSize.width===size.width&&boldSize.height===size.height;this._emit("changeCharacterSize",{data:size});}};this.$addObserver=function(){var self=this;this.$observer=new window.ResizeObserver(function(e){self.checkForSizeChanges();});this.$observer.observe(this.$measureNode);};this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var self=this;return this.$pollSizeChangesTimer=event.onIdle(function cb(){self.checkForSizeChanges();event.onIdle(cb,500);},500);};this.setPolling=function(val){if(val){this.$pollSizeChanges();}else if(this.$pollSizeChangesTimer){clearInterval(this.$pollSizeChangesTimer);this.$pollSizeChangesTimer=0;}};this.$measureSizes=function(node){var size={height:(node||this.$measureNode).clientHeight,width:(node||this.$measureNode).clientWidth/CHAR_COUNT};if(size.width===0||size.height===0)return null;return size;};this.$measureCharWidth=function(ch){this.$main.textContent=lang.stringRepeat(ch,CHAR_COUNT);var rect=this.$main.getBoundingClientRect();return rect.width/CHAR_COUNT;};this.getCharacterWidth=function(ch){var w=this.charSizes[ch];if(w===undefined){w=this.charSizes[ch]=this.$measureCharWidth(ch)/this.$characterSize.width;}return w;};this.destroy=function(){clearInterval(this.$pollSizeChangesTimer);if(this.$observer)this.$observer.disconnect();if(this.el&&this.el.parentNode)this.el.parentNode.removeChild(this.el);};this.$getZoom=function getZoom(element){if(!element||!element.parentElement)return 1;return(window.getComputedStyle(element).zoom||1)*getZoom(element.parentElement);};this.$initTransformMeasureNodes=function(){var t=function t(_t,l){return["div",{style:"position: absolute;top:"+_t+"px;left:"+l+"px;"}];};this.els=dom.buildDom([t(0,0),t(L,0),t(0,L),t(L,L)],this.el);};this.transformCoordinates=function(clientPos,elPos){if(clientPos){var zoom=this.$getZoom(this.el);clientPos=mul(1/zoom,clientPos);}function solve(l1,l2,r){var det=l1[1]*l2[0]-l1[0]*l2[1];return[(-l2[1]*r[0]+l2[0]*r[1])/det,(+l1[1]*r[0]-l1[0]*r[1])/det];}function sub(a,b){return[a[0]-b[0],a[1]-b[1]];}function add(a,b){return[a[0]+b[0],a[1]+b[1]];}function mul(a,b){return[a*b[0],a*b[1]];}if(!this.els)this.$initTransformMeasureNodes();function p(el){var r=el.getBoundingClientRect();return[r.left,r.top];}var a=p(this.els[0]);var b=p(this.els[1]);var c=p(this.els[2]);var d=p(this.els[3]);var h=solve(sub(d,b),sub(d,c),sub(add(b,c),add(d,a)));var m1=mul(1+h[0],sub(b,a));var m2=mul(1+h[1],sub(c,a));if(elPos){var x=elPos;var k=h[0]*x[0]/L+h[1]*x[1]/L+1;var ut=add(mul(x[0],m1),mul(x[1],m2));return add(mul(1/k/L,ut),a);}var u=sub(clientPos,a);var f=solve(sub(m1,mul(h[0],u)),sub(m2,mul(h[1],u)),u);return mul(L,f);};}).call(FontMetrics.prototype);});ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/lib/useragent"],function(require,exports,module){"use strict";var oop=require("./lib/oop");var dom=require("./lib/dom");var config=require("./config");var GutterLayer=require("./layer/gutter").Gutter;var MarkerLayer=require("./layer/marker").Marker;var TextLayer=require("./layer/text").Text;var CursorLayer=require("./layer/cursor").Cursor;var HScrollBar=require("./scrollbar").HScrollBar;var VScrollBar=require("./scrollbar").VScrollBar;var RenderLoop=require("./renderloop").RenderLoop;var FontMetrics=require("./layer/font_metrics").FontMetrics;var EventEmitter=require("./lib/event_emitter").EventEmitter;var editorCss="\
.ace_br1 {border-top-left-radius    : 3px;}\
.ace_br2 {border-top-right-radius   : 3px;}\
.ace_br3 {border-top-left-radius    : 3px; border-top-right-radius:    3px;}\
.ace_br4 {border-bottom-right-radius: 3px;}\
.ace_br5 {border-top-left-radius    : 3px; border-bottom-right-radius: 3px;}\
.ace_br6 {border-top-right-radius   : 3px; border-bottom-right-radius: 3px;}\
.ace_br7 {border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px;}\
.ace_br8 {border-bottom-left-radius : 3px;}\
.ace_br9 {border-top-left-radius    : 3px; border-bottom-left-radius:  3px;}\
.ace_br10{border-top-right-radius   : 3px; border-bottom-left-radius:  3px;}\
.ace_br11{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-left-radius:  3px;}\
.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}\
.ace_br13{border-top-left-radius    : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}\
.ace_br14{border-top-right-radius   : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}\
.ace_br15{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\
.ace_editor {\
position: relative;\
overflow: hidden;\
padding: 0;\
font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\
direction: ltr;\
text-align: left;\
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\
}\
.ace_scroller {\
position: absolute;\
overflow: hidden;\
top: 0;\
bottom: 0;\
background-color: inherit;\
-ms-user-select: none;\
-moz-user-select: none;\
-webkit-user-select: none;\
user-select: none;\
cursor: text;\
}\
.ace_content {\
position: absolute;\
box-sizing: border-box;\
min-width: 100%;\
contain: style size layout;\
font-variant-ligatures: no-common-ligatures;\
}\
.ace_dragging .ace_scroller:before{\
position: absolute;\
top: 0;\
left: 0;\
right: 0;\
bottom: 0;\
content: '';\
background: rgba(250, 250, 250, 0.01);\
z-index: 1000;\
}\
.ace_dragging.ace_dark .ace_scroller:before{\
background: rgba(0, 0, 0, 0.01);\
}\
.ace_selecting, .ace_selecting * {\
cursor: text !important;\
}\
.ace_gutter {\
position: absolute;\
overflow : hidden;\
width: auto;\
top: 0;\
bottom: 0;\
left: 0;\
cursor: default;\
z-index: 4;\
-ms-user-select: none;\
-moz-user-select: none;\
-webkit-user-select: none;\
user-select: none;\
contain: style size layout;\
}\
.ace_gutter-active-line {\
position: absolute;\
left: 0;\
right: 0;\
}\
.ace_scroller.ace_scroll-left {\
box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\
}\
.ace_gutter-cell {\
position: absolute;\
top: 0;\
left: 0;\
right: 0;\
padding-left: 19px;\
padding-right: 6px;\
background-repeat: no-repeat;\
}\
.ace_gutter-cell.ace_error {\
background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\");\
background-repeat: no-repeat;\
background-position: 2px center;\
}\
.ace_gutter-cell.ace_warning {\
background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\");\
background-position: 2px center;\
}\
.ace_gutter-cell.ace_info {\
background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\");\
background-position: 2px center;\
}\
.ace_dark .ace_gutter-cell.ace_info {\
background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\");\
}\
.ace_scrollbar {\
contain: strict;\
position: absolute;\
right: 0;\
bottom: 0;\
z-index: 6;\
}\
.ace_scrollbar-inner {\
position: absolute;\
cursor: text;\
left: 0;\
top: 0;\
}\
.ace_scrollbar-v{\
overflow-x: hidden;\
overflow-y: scroll;\
top: 0;\
}\
.ace_scrollbar-h {\
overflow-x: scroll;\
overflow-y: hidden;\
left: 0;\
}\
.ace_print-margin {\
position: absolute;\
height: 100%;\
}\
.ace_text-input {\
position: absolute;\
z-index: 0;\
width: 0.5em;\
height: 1em;\
opacity: 0;\
background: transparent;\
-moz-appearance: none;\
appearance: none;\
border: none;\
resize: none;\
outline: none;\
overflow: hidden;\
font: inherit;\
padding: 0 1px;\
margin: 0 -1px;\
contain: strict;\
-ms-user-select: text;\
-moz-user-select: text;\
-webkit-user-select: text;\
user-select: text;\
white-space: pre!important;\
}\
.ace_text-input.ace_composition {\
background: transparent;\
color: inherit;\
z-index: 1000;\
opacity: 1;\
}\
.ace_composition_placeholder { color: transparent }\
.ace_composition_marker { \
border-bottom: 1px solid;\
position: absolute;\
border-radius: 0;\
margin-top: 1px;\
}\
[ace_nocontext=true] {\
transform: none!important;\
filter: none!important;\
clip-path: none!important;\
mask : none!important;\
contain: none!important;\
perspective: none!important;\
mix-blend-mode: initial!important;\
z-index: auto;\
}\
.ace_layer {\
z-index: 1;\
position: absolute;\
overflow: hidden;\
word-wrap: normal;\
white-space: pre;\
height: 100%;\
width: 100%;\
box-sizing: border-box;\
pointer-events: none;\
}\
.ace_gutter-layer {\
position: relative;\
width: auto;\
text-align: right;\
pointer-events: auto;\
height: 1000000px;\
contain: style size layout;\
}\
.ace_text-layer {\
font: inherit !important;\
position: absolute;\
height: 1000000px;\
width: 1000000px;\
contain: style size layout;\
}\
.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\
contain: style size layout;\
position: absolute;\
top: 0;\
left: 0;\
right: 0;\
}\
.ace_hidpi .ace_text-layer,\
.ace_hidpi .ace_gutter-layer,\
.ace_hidpi .ace_content,\
.ace_hidpi .ace_gutter {\
contain: strict;\
will-change: transform;\
}\
.ace_hidpi .ace_text-layer > .ace_line, \
.ace_hidpi .ace_text-layer > .ace_line_group {\
contain: strict;\
}\
.ace_cjk {\
display: inline-block;\
text-align: center;\
}\
.ace_cursor-layer {\
z-index: 4;\
}\
.ace_cursor {\
z-index: 4;\
position: absolute;\
box-sizing: border-box;\
border-left: 2px solid;\
transform: translatez(0);\
}\
.ace_multiselect .ace_cursor {\
border-left-width: 1px;\
}\
.ace_slim-cursors .ace_cursor {\
border-left-width: 1px;\
}\
.ace_overwrite-cursors .ace_cursor {\
border-left-width: 0;\
border-bottom: 1px solid;\
}\
.ace_hidden-cursors .ace_cursor {\
opacity: 0.2;\
}\
.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\
opacity: 0;\
}\
.ace_smooth-blinking .ace_cursor {\
transition: opacity 0.18s;\
}\
.ace_animate-blinking .ace_cursor {\
animation-duration: 1000ms;\
animation-timing-function: step-end;\
animation-name: blink-ace-animate;\
animation-iteration-count: infinite;\
}\
.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\
animation-duration: 1000ms;\
animation-timing-function: ease-in-out;\
animation-name: blink-ace-animate-smooth;\
}\
@keyframes blink-ace-animate {\
from, to { opacity: 1; }\
60% { opacity: 0; }\
}\
@keyframes blink-ace-animate-smooth {\
from, to { opacity: 1; }\
45% { opacity: 1; }\
60% { opacity: 0; }\
85% { opacity: 0; }\
}\
.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\
position: absolute;\
z-index: 3;\
}\
.ace_marker-layer .ace_selection {\
position: absolute;\
z-index: 5;\
}\
.ace_marker-layer .ace_bracket {\
position: absolute;\
z-index: 6;\
}\
.ace_marker-layer .ace_error_bracket {\
position: absolute;\
border-bottom: 1px solid #DE5555;\
border-radius: 0;\
}\
.ace_marker-layer .ace_active-line {\
position: absolute;\
z-index: 2;\
}\
.ace_marker-layer .ace_selected-word {\
position: absolute;\
z-index: 4;\
box-sizing: border-box;\
}\
.ace_line .ace_fold {\
box-sizing: border-box;\
display: inline-block;\
height: 11px;\
margin-top: -2px;\
vertical-align: middle;\
background-image:\
url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\
url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\");\
background-repeat: no-repeat, repeat-x;\
background-position: center center, top left;\
color: transparent;\
border: 1px solid black;\
border-radius: 2px;\
cursor: pointer;\
pointer-events: auto;\
}\
.ace_dark .ace_fold {\
}\
.ace_fold:hover{\
background-image:\
url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\
url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\");\
}\
.ace_tooltip {\
background-color: #FFF;\
background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\
border: 1px solid gray;\
border-radius: 1px;\
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\
color: black;\
max-width: 100%;\
padding: 3px 4px;\
position: fixed;\
z-index: 999999;\
box-sizing: border-box;\
cursor: default;\
white-space: pre;\
word-wrap: break-word;\
line-height: normal;\
font-style: normal;\
font-weight: normal;\
letter-spacing: normal;\
pointer-events: none;\
}\
.ace_folding-enabled > .ace_gutter-cell {\
padding-right: 13px;\
}\
.ace_fold-widget {\
box-sizing: border-box;\
margin: 0 -12px 0 1px;\
display: none;\
width: 11px;\
vertical-align: top;\
background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\");\
background-repeat: no-repeat;\
background-position: center;\
border-radius: 3px;\
border: 1px solid transparent;\
cursor: pointer;\
}\
.ace_folding-enabled .ace_fold-widget {\
display: inline-block;   \
}\
.ace_fold-widget.ace_end {\
background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\");\
}\
.ace_fold-widget.ace_closed {\
background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\");\
}\
.ace_fold-widget:hover {\
border: 1px solid rgba(0, 0, 0, 0.3);\
background-color: rgba(255, 255, 255, 0.2);\
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\
}\
.ace_fold-widget:active {\
border: 1px solid rgba(0, 0, 0, 0.4);\
background-color: rgba(0, 0, 0, 0.05);\
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\
}\
.ace_dark .ace_fold-widget {\
background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");\
}\
.ace_dark .ace_fold-widget.ace_end {\
background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");\
}\
.ace_dark .ace_fold-widget.ace_closed {\
background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");\
}\
.ace_dark .ace_fold-widget:hover {\
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\
background-color: rgba(255, 255, 255, 0.1);\
}\
.ace_dark .ace_fold-widget:active {\
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\
}\
.ace_inline_button {\
border: 1px solid lightgray;\
display: inline-block;\
margin: -1px 8px;\
padding: 0 5px;\
pointer-events: auto;\
cursor: pointer;\
}\
.ace_inline_button:hover {\
border-color: gray;\
background: rgba(200,200,200,0.2);\
display: inline-block;\
pointer-events: auto;\
}\
.ace_fold-widget.ace_invalid {\
background-color: #FFB4B4;\
border-color: #DE5555;\
}\
.ace_fade-fold-widgets .ace_fold-widget {\
transition: opacity 0.4s ease 0.05s;\
opacity: 0;\
}\
.ace_fade-fold-widgets:hover .ace_fold-widget {\
transition: opacity 0.05s ease 0.05s;\
opacity:1;\
}\
.ace_underline {\
text-decoration: underline;\
}\
.ace_bold {\
font-weight: bold;\
}\
.ace_nobold .ace_bold {\
font-weight: normal;\
}\
.ace_italic {\
font-style: italic;\
}\
.ace_error-marker {\
background-color: rgba(255, 0, 0,0.2);\
position: absolute;\
z-index: 9;\
}\
.ace_highlight-marker {\
background-color: rgba(255, 255, 0,0.2);\
position: absolute;\
z-index: 8;\
}\
.ace_mobile-menu {\
position: absolute;\
line-height: 1.5;\
border-radius: 4px;\
-ms-user-select: none;\
-moz-user-select: none;\
-webkit-user-select: none;\
user-select: none;\
background: white;\
box-shadow: 1px 3px 2px grey;\
border: 1px solid #dcdcdc;\
color: black;\
}\
.ace_dark > .ace_mobile-menu {\
background: #333;\
color: #ccc;\
box-shadow: 1px 3px 2px grey;\
border: 1px solid #444;\
}\
.ace_mobile-button {\
padding: 2px;\
cursor: pointer;\
overflow: hidden;\
}\
.ace_mobile-button:hover {\
background-color: #eee;\
opacity:1;\
}\
.ace_mobile-button:active {\
background-color: #ddd;\
}\
.ace_placeholder {\
font-family: arial;\
transform: scale(0.9);\
transform-origin: left;\
white-space: pre;\
opacity: 0.7;\
margin: 0 10px;\
}";var useragent=require("./lib/useragent");var HIDE_TEXTAREA=useragent.isIE;dom.importCssString(editorCss,"ace_editor.css");var VirtualRenderer=function VirtualRenderer(container,theme){var _self=this;this.container=container||dom.createElement("div");dom.addCssClass(this.container,"ace_editor");if(dom.HI_DPI)dom.addCssClass(this.container,"ace_hidpi");this.setTheme(theme);this.$gutter=dom.createElement("div");this.$gutter.className="ace_gutter";this.container.appendChild(this.$gutter);this.$gutter.setAttribute("aria-hidden",true);this.scroller=dom.createElement("div");this.scroller.className="ace_scroller";this.container.appendChild(this.scroller);this.content=dom.createElement("div");this.content.className="ace_content";this.scroller.appendChild(this.content);this.$gutterLayer=new GutterLayer(this.$gutter);this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this));this.$markerBack=new MarkerLayer(this.content);var textLayer=this.$textLayer=new TextLayer(this.content);this.canvas=textLayer.element;this.$markerFront=new MarkerLayer(this.content);this.$cursorLayer=new CursorLayer(this.content);this.$horizScroll=false;this.$vScroll=false;this.scrollBar=this.scrollBarV=new VScrollBar(this.container,this);this.scrollBarH=new HScrollBar(this.container,this);this.scrollBarV.on("scroll",function(e){if(!_self.$scrollAnimation)_self.session.setScrollTop(e.data-_self.scrollMargin.top);});this.scrollBarH.on("scroll",function(e){if(!_self.$scrollAnimation)_self.session.setScrollLeft(e.data-_self.scrollMargin.left);});this.scrollTop=0;this.scrollLeft=0;this.cursorPos={row:0,column:0};this.$fontMetrics=new FontMetrics(this.container);this.$textLayer.$setFontMetrics(this.$fontMetrics);this.$textLayer.on("changeCharacterSize",function(e){_self.updateCharacterSize();_self.onResize(true,_self.gutterWidth,_self.$size.width,_self.$size.height);_self._signal("changeCharacterSize",e);});this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:true};this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1};this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0};this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0};this.$keepTextAreaAtCursor=!useragent.isIOS;this.$loop=new RenderLoop(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView);this.$loop.schedule(this.CHANGE_FULL);this.updateCharacterSize();this.setPadding(4);config.resetOptions(this);config._signal("renderer",this);};(function(){this.CHANGE_CURSOR=1;this.CHANGE_MARKER=2;this.CHANGE_GUTTER=4;this.CHANGE_SCROLL=8;this.CHANGE_LINES=16;this.CHANGE_TEXT=32;this.CHANGE_SIZE=64;this.CHANGE_MARKER_BACK=128;this.CHANGE_MARKER_FRONT=256;this.CHANGE_FULL=512;this.CHANGE_H_SCROLL=1024;oop.implement(this,EventEmitter);this.updateCharacterSize=function(){if(this.$textLayer.allowBoldFonts!=this.$allowBoldFonts){this.$allowBoldFonts=this.$textLayer.allowBoldFonts;this.setStyle("ace_nobold",!this.$allowBoldFonts);}this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth();this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight();this.$updatePrintMargin();dom.setStyle(this.scroller.style,"line-height",this.lineHeight+"px");};this.setSession=function(session){if(this.session)this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode);this.session=session;if(session&&this.scrollMargin.top&&session.getScrollTop()<=0)session.setScrollTop(-this.scrollMargin.top);this.$cursorLayer.setSession(session);this.$markerBack.setSession(session);this.$markerFront.setSession(session);this.$gutterLayer.setSession(session);this.$textLayer.setSession(session);if(!session)return;this.$loop.schedule(this.CHANGE_FULL);this.session.$setFontMetrics(this.$fontMetrics);this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null;this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this);this.onChangeNewLineMode();this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode);};this.updateLines=function(firstRow,lastRow,force){if(lastRow===undefined)lastRow=Infinity;if(!this.$changedLines){this.$changedLines={firstRow:firstRow,lastRow:lastRow};}else{if(this.$changedLines.firstRow>firstRow)this.$changedLines.firstRow=firstRow;if(this.$changedLines.lastRow<lastRow)this.$changedLines.lastRow=lastRow;}if(this.$changedLines.lastRow<this.layerConfig.firstRow){if(force)this.$changedLines.lastRow=this.layerConfig.lastRow;else return;}if(this.$changedLines.firstRow>this.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES);};this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT);this.$textLayer.$updateEolChar();this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);};this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER);this.$textLayer.onChangeTabSize();};this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT);};this.updateFull=function(force){if(force)this.$renderChanges(this.CHANGE_FULL,true);else this.$loop.schedule(this.CHANGE_FULL);};this.updateFontSize=function(){this.$textLayer.checkForSizeChanges();};this.$changes=0;this.$updateSizeAsync=function(){if(this.$loop.pending)this.$size.$dirty=true;else this.onResize();};this.onResize=function(force,gutterWidth,width,height){if(this.resizing>2)return;else if(this.resizing>0)this.resizing++;else this.resizing=force?1:0;var el=this.container;if(!height)height=el.clientHeight||el.scrollHeight;if(!width)width=el.clientWidth||el.scrollWidth;var changes=this.$updateCachedSize(force,gutterWidth,width,height);if(!this.$size.scrollerHeight||!width&&!height)return this.resizing=0;if(force)this.$gutterLayer.$padding=null;if(force)this.$renderChanges(changes|this.$changes,true);else this.$loop.schedule(changes|this.$changes);if(this.resizing)this.resizing=0;this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null;};this.$updateCachedSize=function(force,gutterWidth,width,height){height-=this.$extraHeight||0;var changes=0;var size=this.$size;var oldSize={width:size.width,height:size.height,scrollerHeight:size.scrollerHeight,scrollerWidth:size.scrollerWidth};if(height&&(force||size.height!=height)){size.height=height;changes|=this.CHANGE_SIZE;size.scrollerHeight=size.height;if(this.$horizScroll)size.scrollerHeight-=this.scrollBarH.getHeight();this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px";changes=changes|this.CHANGE_SCROLL;}if(width&&(force||size.width!=width)){changes|=this.CHANGE_SIZE;size.width=width;if(gutterWidth==null)gutterWidth=this.$showGutter?this.$gutter.offsetWidth:0;this.gutterWidth=gutterWidth;dom.setStyle(this.scrollBarH.element.style,"left",gutterWidth+"px");dom.setStyle(this.scroller.style,"left",gutterWidth+this.margin.left+"px");size.scrollerWidth=Math.max(0,width-gutterWidth-this.scrollBarV.getWidth()-this.margin.h);dom.setStyle(this.$gutter.style,"left",this.margin.left+"px");var right=this.scrollBarV.getWidth()+"px";dom.setStyle(this.scrollBarH.element.style,"right",right);dom.setStyle(this.scroller.style,"right",right);dom.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight());if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||force){changes|=this.CHANGE_FULL;}}size.$dirty=!width||!height;if(changes)this._signal("resize",oldSize);return changes;};this.onGutterResize=function(width){var gutterWidth=this.$showGutter?width:0;if(gutterWidth!=this.gutterWidth)this.$changes|=this.$updateCachedSize(true,gutterWidth,this.$size.width,this.$size.height);if(this.session.getUseWrapMode()&&this.adjustWrapLimit()){this.$loop.schedule(this.CHANGE_FULL);}else if(this.$size.$dirty){this.$loop.schedule(this.CHANGE_FULL);}else{this.$computeLayerConfig();}};this.adjustWrapLimit=function(){var availableWidth=this.$size.scrollerWidth-this.$padding*2;var limit=Math.floor(availableWidth/this.characterWidth);return this.session.adjustWrapLimit(limit,this.$showPrintMargin&&this.$printMarginColumn);};this.setAnimatedScroll=function(shouldAnimate){this.setOption("animatedScroll",shouldAnimate);};this.getAnimatedScroll=function(){return this.$animatedScroll;};this.setShowInvisibles=function(showInvisibles){this.setOption("showInvisibles",showInvisibles);this.session.$bidiHandler.setShowInvisibles(showInvisibles);};this.getShowInvisibles=function(){return this.getOption("showInvisibles");};this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides");};this.setDisplayIndentGuides=function(display){this.setOption("displayIndentGuides",display);};this.setShowPrintMargin=function(showPrintMargin){this.setOption("showPrintMargin",showPrintMargin);};this.getShowPrintMargin=function(){return this.getOption("showPrintMargin");};this.setPrintMarginColumn=function(showPrintMargin){this.setOption("printMarginColumn",showPrintMargin);};this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn");};this.getShowGutter=function(){return this.getOption("showGutter");};this.setShowGutter=function(show){return this.setOption("showGutter",show);};this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets");};this.setFadeFoldWidgets=function(show){this.setOption("fadeFoldWidgets",show);};this.setHighlightGutterLine=function(shouldHighlight){this.setOption("highlightGutterLine",shouldHighlight);};this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine");};this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var containerEl=dom.createElement("div");containerEl.className="ace_layer ace_print-margin-layer";this.$printMarginEl=dom.createElement("div");this.$printMarginEl.className="ace_print-margin";containerEl.appendChild(this.$printMarginEl);this.content.insertBefore(containerEl,this.content.firstChild);}var style=this.$printMarginEl.style;style.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px";style.visibility=this.$showPrintMargin?"visible":"hidden";if(this.session&&this.session.$wrap==-1)this.adjustWrapLimit();};this.getContainerElement=function(){return this.container;};this.getMouseEventTarget=function(){return this.scroller;};this.getTextAreaContainer=function(){return this.container;};this.$moveTextAreaToCursor=function(){if(this.$isMousePressed)return;var style=this.textarea.style;var composition=this.$composition;if(!this.$keepTextAreaAtCursor&&!composition){dom.translate(this.textarea,-100,0);return;}var pixelPos=this.$cursorLayer.$pixelPos;if(!pixelPos)return;if(composition&&composition.markerRange)pixelPos=this.$cursorLayer.getPixelPosition(composition.markerRange.start,true);var config=this.layerConfig;var posTop=pixelPos.top;var posLeft=pixelPos.left;posTop-=config.offset;var h=composition&&composition.useTextareaForIME?this.lineHeight:HIDE_TEXTAREA?0:1;if(posTop<0||posTop>config.height-h){dom.translate(this.textarea,0,0);return;}var w=1;var maxTop=this.$size.height-h;if(!composition){posTop+=this.lineHeight;}else{if(composition.useTextareaForIME){var val=this.textarea.value;w=this.characterWidth*this.session.$getStringScreenWidth(val)[0];}else{posTop+=this.lineHeight+2;}}posLeft-=this.scrollLeft;if(posLeft>this.$size.scrollerWidth-w)posLeft=this.$size.scrollerWidth-w;posLeft+=this.gutterWidth+this.margin.left;dom.setStyle(style,"height",h+"px");dom.setStyle(style,"width",w+"px");dom.translate(this.textarea,Math.min(posLeft,this.$size.scrollerWidth-w),Math.min(posTop,maxTop));};this.getFirstVisibleRow=function(){return this.layerConfig.firstRow;};this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1);};this.getLastFullyVisibleRow=function(){var config=this.layerConfig;var lastRow=config.lastRow;var top=this.session.documentToScreenRow(lastRow,0)*config.lineHeight;if(top-this.session.getScrollTop()>config.height-config.lineHeight)return lastRow-1;return lastRow;};this.getLastVisibleRow=function(){return this.layerConfig.lastRow;};this.$padding=null;this.setPadding=function(padding){this.$padding=padding;this.$textLayer.setPadding(padding);this.$cursorLayer.setPadding(padding);this.$markerFront.setPadding(padding);this.$markerBack.setPadding(padding);this.$loop.schedule(this.CHANGE_FULL);this.$updatePrintMargin();};this.setScrollMargin=function(top,bottom,left,right){var sm=this.scrollMargin;sm.top=top|0;sm.bottom=bottom|0;sm.right=right|0;sm.left=left|0;sm.v=sm.top+sm.bottom;sm.h=sm.left+sm.right;if(sm.top&&this.scrollTop<=0&&this.session)this.session.setScrollTop(-sm.top);this.updateFull();};this.setMargin=function(top,bottom,left,right){var sm=this.margin;sm.top=top|0;sm.bottom=bottom|0;sm.right=right|0;sm.left=left|0;sm.v=sm.top+sm.bottom;sm.h=sm.left+sm.right;this.$updateCachedSize(true,this.gutterWidth,this.$size.width,this.$size.height);this.updateFull();};this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible;};this.setHScrollBarAlwaysVisible=function(alwaysVisible){this.setOption("hScrollBarAlwaysVisible",alwaysVisible);};this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible;};this.setVScrollBarAlwaysVisible=function(alwaysVisible){this.setOption("vScrollBarAlwaysVisible",alwaysVisible);};this.$updateScrollBarV=function(){var scrollHeight=this.layerConfig.maxHeight;var scrollerHeight=this.$size.scrollerHeight;if(!this.$maxLines&&this.$scrollPastEnd){scrollHeight-=(scrollerHeight-this.lineHeight)*this.$scrollPastEnd;if(this.scrollTop>scrollHeight-scrollerHeight){scrollHeight=this.scrollTop+scrollerHeight;this.scrollBarV.scrollTop=null;}}this.scrollBarV.setScrollHeight(scrollHeight+this.scrollMargin.v);this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top);};this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h);this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left);};this.$frozen=false;this.freeze=function(){this.$frozen=true;};this.unfreeze=function(){this.$frozen=false;};this.$renderChanges=function(changes,force){if(this.$changes){changes|=this.$changes;this.$changes=0;}if(!this.session||!this.container.offsetWidth||this.$frozen||!changes&&!force){this.$changes|=changes;return;}if(this.$size.$dirty){this.$changes|=changes;return this.onResize(true);}if(!this.lineHeight){this.$textLayer.checkForSizeChanges();}this._signal("beforeRender",changes);if(this.session&&this.session.$bidiHandler)this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var config=this.layerConfig;if(changes&this.CHANGE_FULL||changes&this.CHANGE_SIZE||changes&this.CHANGE_TEXT||changes&this.CHANGE_LINES||changes&this.CHANGE_SCROLL||changes&this.CHANGE_H_SCROLL){changes|=this.$computeLayerConfig()|this.$loop.clear();if(config.firstRow!=this.layerConfig.firstRow&&config.firstRowScreen==this.layerConfig.firstRowScreen){var st=this.scrollTop+(config.firstRow-this.layerConfig.firstRow)*this.lineHeight;if(st>0){this.scrollTop=st;changes=changes|this.CHANGE_SCROLL;changes|=this.$computeLayerConfig()|this.$loop.clear();}}config=this.layerConfig;this.$updateScrollBarV();if(changes&this.CHANGE_H_SCROLL)this.$updateScrollBarH();dom.translate(this.content,-this.scrollLeft,-config.offset);var width=config.width+2*this.$padding+"px";var height=config.minHeight+"px";dom.setStyle(this.content.style,"width",width);dom.setStyle(this.content.style,"height",height);}if(changes&this.CHANGE_H_SCROLL){dom.translate(this.content,-this.scrollLeft,-config.offset);this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left";}if(changes&this.CHANGE_FULL){this.$changedLines=null;this.$textLayer.update(config);if(this.$showGutter)this.$gutterLayer.update(config);this.$markerBack.update(config);this.$markerFront.update(config);this.$cursorLayer.update(config);this.$moveTextAreaToCursor();this._signal("afterRender",changes);return;}if(changes&this.CHANGE_SCROLL){this.$changedLines=null;if(changes&this.CHANGE_TEXT||changes&this.CHANGE_LINES)this.$textLayer.update(config);else this.$textLayer.scrollLines(config);if(this.$showGutter){if(changes&this.CHANGE_GUTTER||changes&this.CHANGE_LINES)this.$gutterLayer.update(config);else this.$gutterLayer.scrollLines(config);}this.$markerBack.update(config);this.$markerFront.update(config);this.$cursorLayer.update(config);this.$moveTextAreaToCursor();this._signal("afterRender",changes);return;}if(changes&this.CHANGE_TEXT){this.$changedLines=null;this.$textLayer.update(config);if(this.$showGutter)this.$gutterLayer.update(config);}else if(changes&this.CHANGE_LINES){if(this.$updateLines()||changes&this.CHANGE_GUTTER&&this.$showGutter)this.$gutterLayer.update(config);}else if(changes&this.CHANGE_TEXT||changes&this.CHANGE_GUTTER){if(this.$showGutter)this.$gutterLayer.update(config);}else if(changes&this.CHANGE_CURSOR){if(this.$highlightGutterLine)this.$gutterLayer.updateLineHighlight(config);}if(changes&this.CHANGE_CURSOR){this.$cursorLayer.update(config);this.$moveTextAreaToCursor();}if(changes&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)){this.$markerFront.update(config);}if(changes&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)){this.$markerBack.update(config);}this._signal("afterRender",changes);};this.$autosize=function(){var height=this.session.getScreenLength()*this.lineHeight;var maxHeight=this.$maxLines*this.lineHeight;var desiredHeight=Math.min(maxHeight,Math.max((this.$minLines||1)*this.lineHeight,height))+this.scrollMargin.v+(this.$extraHeight||0);if(this.$horizScroll)desiredHeight+=this.scrollBarH.getHeight();if(this.$maxPixelHeight&&desiredHeight>this.$maxPixelHeight)desiredHeight=this.$maxPixelHeight;var hideScrollbars=desiredHeight<=2*this.lineHeight;var vScroll=!hideScrollbars&&height>maxHeight;if(desiredHeight!=this.desiredHeight||this.$size.height!=this.desiredHeight||vScroll!=this.$vScroll){if(vScroll!=this.$vScroll){this.$vScroll=vScroll;this.scrollBarV.setVisible(vScroll);}var w=this.container.clientWidth;this.container.style.height=desiredHeight+"px";this.$updateCachedSize(true,this.$gutterWidth,w,desiredHeight);this.desiredHeight=desiredHeight;this._signal("autosize");}};this.$computeLayerConfig=function(){var session=this.session;var size=this.$size;var hideScrollbars=size.height<=2*this.lineHeight;var screenLines=this.session.getScreenLength();var maxHeight=screenLines*this.lineHeight;var longestLine=this.$getLongestLine();var horizScroll=!hideScrollbars&&(this.$hScrollBarAlwaysVisible||size.scrollerWidth-longestLine-2*this.$padding<0);var hScrollChanged=this.$horizScroll!==horizScroll;if(hScrollChanged){this.$horizScroll=horizScroll;this.scrollBarH.setVisible(horizScroll);}var vScrollBefore=this.$vScroll;// autosize can change vscroll value in which case we need to update longestLine
if(this.$maxLines&&this.lineHeight>1)this.$autosize();var minHeight=size.scrollerHeight+this.lineHeight;var scrollPastEnd=!this.$maxLines&&this.$scrollPastEnd?(size.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;maxHeight+=scrollPastEnd;var sm=this.scrollMargin;this.session.setScrollTop(Math.max(-sm.top,Math.min(this.scrollTop,maxHeight-size.scrollerHeight+sm.bottom)));this.session.setScrollLeft(Math.max(-sm.left,Math.min(this.scrollLeft,longestLine+2*this.$padding-size.scrollerWidth+sm.right)));var vScroll=!hideScrollbars&&(this.$vScrollBarAlwaysVisible||size.scrollerHeight-maxHeight+scrollPastEnd<0||this.scrollTop>sm.top);var vScrollChanged=vScrollBefore!==vScroll;if(vScrollChanged){this.$vScroll=vScroll;this.scrollBarV.setVisible(vScroll);}var offset=this.scrollTop%this.lineHeight;var lineCount=Math.ceil(minHeight/this.lineHeight)-1;var firstRow=Math.max(0,Math.round((this.scrollTop-offset)/this.lineHeight));var lastRow=firstRow+lineCount;var firstRowScreen,firstRowHeight;var lineHeight=this.lineHeight;firstRow=session.screenToDocumentRow(firstRow,0);var foldLine=session.getFoldLine(firstRow);if(foldLine){firstRow=foldLine.start.row;}firstRowScreen=session.documentToScreenRow(firstRow,0);firstRowHeight=session.getRowLength(firstRow)*lineHeight;lastRow=Math.min(session.screenToDocumentRow(lastRow,0),session.getLength()-1);minHeight=size.scrollerHeight+session.getRowLength(lastRow)*lineHeight+firstRowHeight;offset=this.scrollTop-firstRowScreen*lineHeight;var changes=0;if(this.layerConfig.width!=longestLine||hScrollChanged)changes=this.CHANGE_H_SCROLL;if(hScrollChanged||vScrollChanged){changes|=this.$updateCachedSize(true,this.gutterWidth,size.width,size.height);this._signal("scrollbarVisibilityChanged");if(vScrollChanged)longestLine=this.$getLongestLine();}this.layerConfig={width:longestLine,padding:this.$padding,firstRow:firstRow,firstRowScreen:firstRowScreen,lastRow:lastRow,lineHeight:lineHeight,characterWidth:this.characterWidth,minHeight:minHeight,maxHeight:maxHeight,offset:offset,gutterOffset:lineHeight?Math.max(0,Math.ceil((offset+size.height-size.scrollerHeight)/lineHeight)):0,height:this.$size.scrollerHeight};if(this.session.$bidiHandler)this.session.$bidiHandler.setContentWidth(longestLine-this.$padding);return changes;};this.$updateLines=function(){if(!this.$changedLines)return;var firstRow=this.$changedLines.firstRow;var lastRow=this.$changedLines.lastRow;this.$changedLines=null;var layerConfig=this.layerConfig;if(firstRow>layerConfig.lastRow+1){return;}if(lastRow<layerConfig.firstRow){return;}if(lastRow===Infinity){if(this.$showGutter)this.$gutterLayer.update(layerConfig);this.$textLayer.update(layerConfig);return;}this.$textLayer.updateLines(layerConfig,firstRow,lastRow);return true;};this.$getLongestLine=function(){var charCount=this.session.getScreenWidth();if(this.showInvisibles&&!this.session.$useWrapMode)charCount+=1;if(this.$textLayer&&charCount>this.$textLayer.MAX_LINE_LENGTH)charCount=this.$textLayer.MAX_LINE_LENGTH+30;return Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(charCount*this.characterWidth));};this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(true));this.$loop.schedule(this.CHANGE_MARKER_FRONT);};this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers());this.$loop.schedule(this.CHANGE_MARKER_BACK);};this.addGutterDecoration=function(row,className){this.$gutterLayer.addGutterDecoration(row,className);};this.removeGutterDecoration=function(row,className){this.$gutterLayer.removeGutterDecoration(row,className);};this.updateBreakpoints=function(rows){this.$loop.schedule(this.CHANGE_GUTTER);};this.setAnnotations=function(annotations){this.$gutterLayer.setAnnotations(annotations);this.$loop.schedule(this.CHANGE_GUTTER);};this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR);};this.hideCursor=function(){this.$cursorLayer.hideCursor();};this.showCursor=function(){this.$cursorLayer.showCursor();};this.scrollSelectionIntoView=function(anchor,lead,offset){this.scrollCursorIntoView(anchor,offset);this.scrollCursorIntoView(lead,offset);};this.scrollCursorIntoView=function(cursor,offset,$viewMargin){if(this.$size.scrollerHeight===0)return;var pos=this.$cursorLayer.getPixelPosition(cursor);var left=pos.left;var top=pos.top;var topMargin=$viewMargin&&$viewMargin.top||0;var bottomMargin=$viewMargin&&$viewMargin.bottom||0;var scrollTop=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;if(scrollTop+topMargin>top){if(offset&&scrollTop+topMargin>top+this.lineHeight)top-=offset*this.$size.scrollerHeight;if(top===0)top=-this.scrollMargin.top;this.session.setScrollTop(top);}else if(scrollTop+this.$size.scrollerHeight-bottomMargin<top+this.lineHeight){if(offset&&scrollTop+this.$size.scrollerHeight-bottomMargin<top-this.lineHeight)top+=offset*this.$size.scrollerHeight;this.session.setScrollTop(top+this.lineHeight+bottomMargin-this.$size.scrollerHeight);}var scrollLeft=this.scrollLeft;if(scrollLeft>left){if(left<this.$padding+2*this.layerConfig.characterWidth)left=-this.scrollMargin.left;this.session.setScrollLeft(left);}else if(scrollLeft+this.$size.scrollerWidth<left+this.characterWidth){this.session.setScrollLeft(Math.round(left+this.characterWidth-this.$size.scrollerWidth));}else if(scrollLeft<=this.$padding&&left-scrollLeft<this.characterWidth){this.session.setScrollLeft(0);}};this.getScrollTop=function(){return this.session.getScrollTop();};this.getScrollLeft=function(){return this.session.getScrollLeft();};this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight;};this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1);};this.scrollToRow=function(row){this.session.setScrollTop(row*this.lineHeight);};this.alignCursor=function(cursor,alignment){if(typeof cursor=="number")cursor={row:cursor,column:0};var pos=this.$cursorLayer.getPixelPosition(cursor);var h=this.$size.scrollerHeight-this.lineHeight;var offset=pos.top-h*(alignment||0);this.session.setScrollTop(offset);return offset;};this.STEPS=8;this.$calcSteps=function(fromValue,toValue){var i=0;var l=this.STEPS;var steps=[];var func=function func(t,x_min,dx){return dx*(Math.pow(t-1,3)+1)+x_min;};for(i=0;i<l;++i){steps.push(func(i/this.STEPS,fromValue,toValue-fromValue));}return steps;};this.scrollToLine=function(line,center,animate,callback){var pos=this.$cursorLayer.getPixelPosition({row:line,column:0});var offset=pos.top;if(center)offset-=this.$size.scrollerHeight/2;var initialScroll=this.scrollTop;this.session.setScrollTop(offset);if(animate!==false)this.animateScrolling(initialScroll,callback);};this.animateScrolling=function(fromValue,callback){var toValue=this.scrollTop;if(!this.$animatedScroll)return;var _self=this;if(fromValue==toValue)return;if(this.$scrollAnimation){var oldSteps=this.$scrollAnimation.steps;if(oldSteps.length){fromValue=oldSteps[0];if(fromValue==toValue)return;}}var steps=_self.$calcSteps(fromValue,toValue);this.$scrollAnimation={from:fromValue,to:toValue,steps:steps};clearInterval(this.$timer);_self.session.setScrollTop(steps.shift());_self.session.$scrollTop=toValue;this.$timer=setInterval(function(){if(!_self.session)return clearInterval(_self.$timer);if(steps.length){_self.session.setScrollTop(steps.shift());_self.session.$scrollTop=toValue;}else if(toValue!=null){_self.session.$scrollTop=-1;_self.session.setScrollTop(toValue);toValue=null;}else{_self.$timer=clearInterval(_self.$timer);_self.$scrollAnimation=null;callback&&callback();}},10);};this.scrollToY=function(scrollTop){if(this.scrollTop!==scrollTop){this.$loop.schedule(this.CHANGE_SCROLL);this.scrollTop=scrollTop;}};this.scrollToX=function(scrollLeft){if(this.scrollLeft!==scrollLeft)this.scrollLeft=scrollLeft;this.$loop.schedule(this.CHANGE_H_SCROLL);};this.scrollTo=function(x,y){this.session.setScrollTop(y);this.session.setScrollLeft(y);};this.scrollBy=function(deltaX,deltaY){deltaY&&this.session.setScrollTop(this.session.getScrollTop()+deltaY);deltaX&&this.session.setScrollLeft(this.session.getScrollLeft()+deltaX);};this.isScrollableBy=function(deltaX,deltaY){if(deltaY<0&&this.session.getScrollTop()>=1-this.scrollMargin.top)return true;if(deltaY>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return true;if(deltaX<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return true;if(deltaX>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return true;};this.pixelToScreenCoordinates=function(x,y){var canvasPos;if(this.$hasCssTransforms){canvasPos={top:0,left:0};var p=this.$fontMetrics.transformCoordinates([x,y]);x=p[1]-this.gutterWidth-this.margin.left;y=p[0];}else{canvasPos=this.scroller.getBoundingClientRect();}var offsetX=x+this.scrollLeft-canvasPos.left-this.$padding;var offset=offsetX/this.characterWidth;var row=Math.floor((y+this.scrollTop-canvasPos.top)/this.lineHeight);var col=this.$blockCursor?Math.floor(offset):Math.round(offset);return{row:row,column:col,side:offset-col>0?1:-1,offsetX:offsetX};};this.screenToTextCoordinates=function(x,y){var canvasPos;if(this.$hasCssTransforms){canvasPos={top:0,left:0};var p=this.$fontMetrics.transformCoordinates([x,y]);x=p[1]-this.gutterWidth-this.margin.left;y=p[0];}else{canvasPos=this.scroller.getBoundingClientRect();}var offsetX=x+this.scrollLeft-canvasPos.left-this.$padding;var offset=offsetX/this.characterWidth;var col=this.$blockCursor?Math.floor(offset):Math.round(offset);var row=Math.floor((y+this.scrollTop-canvasPos.top)/this.lineHeight);return this.session.screenToDocumentPosition(row,Math.max(col,0),offsetX);};this.textToScreenCoordinates=function(row,column){var canvasPos=this.scroller.getBoundingClientRect();var pos=this.session.documentToScreenPosition(row,column);var x=this.$padding+(this.session.$bidiHandler.isBidiRow(pos.row,row)?this.session.$bidiHandler.getPosLeft(pos.column):Math.round(pos.column*this.characterWidth));var y=pos.row*this.lineHeight;return{pageX:canvasPos.left+x-this.scrollLeft,pageY:canvasPos.top+y-this.scrollTop};};this.visualizeFocus=function(){dom.addCssClass(this.container,"ace_focus");};this.visualizeBlur=function(){dom.removeCssClass(this.container,"ace_focus");};this.showComposition=function(composition){this.$composition=composition;if(!composition.cssText){composition.cssText=this.textarea.style.cssText;}if(composition.useTextareaForIME==undefined)composition.useTextareaForIME=this.$useTextareaForIME;if(this.$useTextareaForIME){dom.addCssClass(this.textarea,"ace_composition");this.textarea.style.cssText="";this.$moveTextAreaToCursor();this.$cursorLayer.element.style.display="none";}else{composition.markerId=this.session.addMarker(composition.markerRange,"ace_composition_marker","text");}};this.setCompositionText=function(text){var cursor=this.session.selection.cursor;this.addToken(text,"composition_placeholder",cursor.row,cursor.column);this.$moveTextAreaToCursor();};this.hideComposition=function(){if(!this.$composition)return;if(this.$composition.markerId)this.session.removeMarker(this.$composition.markerId);dom.removeCssClass(this.textarea,"ace_composition");this.textarea.style.cssText=this.$composition.cssText;var cursor=this.session.selection.cursor;this.removeExtraToken(cursor.row,cursor.column);this.$composition=null;this.$cursorLayer.element.style.display="";};this.addToken=function(text,type,row,column){var session=this.session;session.bgTokenizer.lines[row]=null;var newToken={type:type,value:text};var tokens=session.getTokens(row);if(column==null){tokens.push(newToken);}else{var l=0;for(var i=0;i<tokens.length;i++){var token=tokens[i];l+=token.value.length;if(column<=l){var diff=token.value.length-(l-column);var before=token.value.slice(0,diff);var after=token.value.slice(diff);tokens.splice(i,1,{type:token.type,value:before},newToken,{type:token.type,value:after});break;}}}this.updateLines(row,row);};this.removeExtraToken=function(row,column){this.updateLines(row,row);};this.setTheme=function(theme,cb){var _self=this;this.$themeId=theme;_self._dispatchEvent('themeChange',{theme:theme});if(!theme||typeof theme=="string"){var moduleName=theme||this.$options.theme.initialValue;config.loadModule(["theme",moduleName],afterLoad);}else{afterLoad(theme);}function afterLoad(module){if(_self.$themeId!=theme)return cb&&cb();if(!module||!module.cssClass)throw new Error("couldn't load module "+theme+" or it didn't call define");if(module.$id)_self.$themeId=module.$id;dom.importCssString(module.cssText,module.cssClass,_self.container);if(_self.theme)dom.removeCssClass(_self.container,_self.theme.cssClass);var padding="padding"in module?module.padding:"padding"in(_self.theme||{})?4:_self.$padding;if(_self.$padding&&padding!=_self.$padding)_self.setPadding(padding);_self.$theme=module.cssClass;_self.theme=module;dom.addCssClass(_self.container,module.cssClass);dom.setCssClass(_self.container,"ace_dark",module.isDark);if(_self.$size){_self.$size.width=0;_self.$updateSizeAsync();}_self._dispatchEvent('themeLoaded',{theme:module});cb&&cb();}};this.getTheme=function(){return this.$themeId;};this.setStyle=function(style,include){dom.setCssClass(this.container,style,include!==false);};this.unsetStyle=function(style){dom.removeCssClass(this.container,style);};this.setCursorStyle=function(style){dom.setStyle(this.scroller.style,"cursor",style);};this.setMouseCursor=function(cursorStyle){dom.setStyle(this.scroller.style,"cursor",cursorStyle);};this.attachToShadowRoot=function(){dom.importCssString(editorCss,"ace_editor.css",this.container);};this.destroy=function(){this.freeze();this.$fontMetrics.destroy();this.$cursorLayer.destroy();this.removeAllListeners();this.container.textContent="";};}).call(VirtualRenderer.prototype);config.defineOptions(VirtualRenderer.prototype,"renderer",{animatedScroll:{initialValue:false},showInvisibles:{set:function set(value){if(this.$textLayer.setShowInvisibles(value))this.$loop.schedule(this.CHANGE_TEXT);},initialValue:false},showPrintMargin:{set:function set(){this.$updatePrintMargin();},initialValue:true},printMarginColumn:{set:function set(){this.$updatePrintMargin();},initialValue:80},printMargin:{set:function set(val){if(typeof val=="number")this.$printMarginColumn=val;this.$showPrintMargin=!!val;this.$updatePrintMargin();},get:function get(){return this.$showPrintMargin&&this.$printMarginColumn;}},showGutter:{set:function set(show){this.$gutter.style.display=show?"block":"none";this.$loop.schedule(this.CHANGE_FULL);this.onGutterResize();},initialValue:true},fadeFoldWidgets:{set:function set(show){dom.setCssClass(this.$gutter,"ace_fade-fold-widgets",show);},initialValue:false},showFoldWidgets:{set:function set(show){this.$gutterLayer.setShowFoldWidgets(show);this.$loop.schedule(this.CHANGE_GUTTER);},initialValue:true},displayIndentGuides:{set:function set(show){if(this.$textLayer.setDisplayIndentGuides(show))this.$loop.schedule(this.CHANGE_TEXT);},initialValue:true},highlightGutterLine:{set:function set(shouldHighlight){this.$gutterLayer.setHighlightGutterLine(shouldHighlight);this.$loop.schedule(this.CHANGE_GUTTER);},initialValue:true},hScrollBarAlwaysVisible:{set:function set(val){if(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)this.$loop.schedule(this.CHANGE_SCROLL);},initialValue:false},vScrollBarAlwaysVisible:{set:function set(val){if(!this.$vScrollBarAlwaysVisible||!this.$vScroll)this.$loop.schedule(this.CHANGE_SCROLL);},initialValue:false},fontSize:{set:function set(size){if(typeof size=="number")size=size+"px";this.container.style.fontSize=size;this.updateFontSize();},initialValue:12},fontFamily:{set:function set(name){this.container.style.fontFamily=name;this.updateFontSize();}},maxLines:{set:function set(val){this.updateFull();}},minLines:{set:function set(val){if(!(this.$minLines<0x1ffffffffffff))this.$minLines=0;this.updateFull();}},maxPixelHeight:{set:function set(val){this.updateFull();},initialValue:0},scrollPastEnd:{set:function set(val){val=+val||0;if(this.$scrollPastEnd==val)return;this.$scrollPastEnd=val;this.$loop.schedule(this.CHANGE_SCROLL);},initialValue:0,handlesSet:true},fixedWidthGutter:{set:function set(val){this.$gutterLayer.$fixedWidth=!!val;this.$loop.schedule(this.CHANGE_GUTTER);}},theme:{set:function set(val){this.setTheme(val);},get:function get(){return this.$themeId||this.theme;},initialValue:"./theme/textmate",handlesSet:true},hasCssTransforms:{},useTextareaForIME:{initialValue:!useragent.isMobile&&!useragent.isIE}});exports.VirtualRenderer=VirtualRenderer;});ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(require,exports,module){"use strict";var oop=require("../lib/oop");var net=require("../lib/net");var EventEmitter=require("../lib/event_emitter").EventEmitter;var config=require("../config");function $workerBlob(workerUrl){var script="importScripts('"+net.qualifyURL(workerUrl)+"');";try{return new Blob([script],{"type":"application/javascript"});}catch(e){// Backwards-compatibility
var BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;var blobBuilder=new BlobBuilder();blobBuilder.append(script);return blobBuilder.getBlob("application/javascript");}}function createWorker(workerUrl){if(typeof Worker=="undefined")return{postMessage:function postMessage(){},terminate:function terminate(){}};if(config.get("loadWorkerFromBlob")){var blob=$workerBlob(workerUrl);var URL=window.URL||window.webkitURL;var blobURL=URL.createObjectURL(blob);return new Worker(blobURL);}return new Worker(workerUrl);}var WorkerClient=function WorkerClient(worker){if(!worker.postMessage)worker=this.$createWorkerFromOldConfig.apply(this,arguments);this.$worker=worker;this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this);this.changeListener=this.changeListener.bind(this);this.onMessage=this.onMessage.bind(this);this.callbackId=1;this.callbacks={};this.$worker.onmessage=this.onMessage;};(function(){oop.implement(this,EventEmitter);this.$createWorkerFromOldConfig=function(topLevelNamespaces,mod,classname,workerUrl,importScripts){if(require.nameToUrl&&!require.toUrl)require.toUrl=require.nameToUrl;if(config.get("packaged")||!require.toUrl){workerUrl=workerUrl||config.moduleUrl(mod,"worker");}else{var normalizePath=this.$normalizePath;workerUrl=workerUrl||normalizePath(require.toUrl("ace/worker/worker.js",null,"_"));var tlns={};topLevelNamespaces.forEach(function(ns){tlns[ns]=normalizePath(require.toUrl(ns,null,"_").replace(/(\.js)?(\?.*)?$/,""));});}this.$worker=createWorker(workerUrl);if(importScripts){this.send("importScripts",importScripts);}this.$worker.postMessage({init:true,tlns:tlns,module:mod,classname:classname});return this.$worker;};this.onMessage=function(e){var msg=e.data;switch(msg.type){case"event":this._signal(msg.name,{data:msg.data});break;case"call":var callback=this.callbacks[msg.id];if(callback){callback(msg.data);delete this.callbacks[msg.id];}break;case"error":this.reportError(msg.data);break;case"log":window.console&&console.log&&console.log.apply(console,msg.data);break;}};this.reportError=function(err){window.console&&console.error&&console.error(err);};this.$normalizePath=function(path){return net.qualifyURL(path);};this.terminate=function(){this._signal("terminate",{});this.deltaQueue=null;this.$worker.terminate();this.$worker=null;if(this.$doc)this.$doc.off("change",this.changeListener);this.$doc=null;};this.send=function(cmd,args){this.$worker.postMessage({command:cmd,args:args});};this.call=function(cmd,args,callback){if(callback){var id=this.callbackId++;this.callbacks[id]=callback;args.push(id);}this.send(cmd,args);};this.emit=function(event,data){try{if(data.data&&data.data.err)data.data.err={message:data.data.err.message,stack:data.data.err.stack,code:data.data.err.code};this.$worker.postMessage({event:event,data:{data:data.data}});}catch(ex){console.error(ex.stack);}};this.attachToDocument=function(doc){if(this.$doc)this.terminate();this.$doc=doc;this.call("setValue",[doc.getValue()]);doc.on("change",this.changeListener);};this.changeListener=function(delta){if(!this.deltaQueue){this.deltaQueue=[];setTimeout(this.$sendDeltaQueue,0);}if(delta.action=="insert")this.deltaQueue.push(delta.start,delta.lines);else this.deltaQueue.push(delta.start,delta.end);};this.$sendDeltaQueue=function(){var q=this.deltaQueue;if(!q)return;this.deltaQueue=null;if(q.length>50&&q.length>this.$doc.getLength()>>1){this.call("setValue",[this.$doc.getValue()]);}else this.emit("change",{data:q});};}).call(WorkerClient.prototype);var UIWorkerClient=function UIWorkerClient(topLevelNamespaces,mod,classname){var main=null;var emitSync=false;var sender=Object.create(EventEmitter);var messageBuffer=[];var workerClient=new WorkerClient({messageBuffer:messageBuffer,terminate:function terminate(){},postMessage:function postMessage(e){messageBuffer.push(e);if(!main)return;if(emitSync)setTimeout(processNext);else processNext();}});workerClient.setEmitSync=function(val){emitSync=val;};var processNext=function processNext(){var msg=messageBuffer.shift();if(msg.command)main[msg.command].apply(main,msg.args);else if(msg.event)sender._signal(msg.event,msg.data);};sender.postMessage=function(msg){workerClient.onMessage({data:msg});};sender.callback=function(data,callbackId){this.postMessage({type:"call",id:callbackId,data:data});};sender.emit=function(name,data){this.postMessage({type:"event",name:name,data:data});};config.loadModule(["worker",mod],function(Main){main=new Main[classname](sender);while(messageBuffer.length){processNext();}});return workerClient;};exports.UIWorkerClient=UIWorkerClient;exports.WorkerClient=WorkerClient;exports.createWorker=createWorker;});ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(require,exports,module){"use strict";var Range=require("./range").Range;var EventEmitter=require("./lib/event_emitter").EventEmitter;var oop=require("./lib/oop");var PlaceHolder=function PlaceHolder(session,length,pos,others,mainClass,othersClass){var _self=this;this.length=length;this.session=session;this.doc=session.getDocument();this.mainClass=mainClass;this.othersClass=othersClass;this.$onUpdate=this.onUpdate.bind(this);this.doc.on("change",this.$onUpdate);this.$others=others;this.$onCursorChange=function(){setTimeout(function(){_self.onCursorChange();});};this.$pos=pos;var undoStack=session.getUndoManager().$undoStack||session.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=undoStack.length;this.setup();session.selection.on("changeCursor",this.$onCursorChange);};(function(){oop.implement(this,EventEmitter);this.setup=function(){var _self=this;var doc=this.doc;var session=this.session;this.selectionBefore=session.selection.toJSON();if(session.selection.inMultiSelectMode)session.selection.toSingleRange();this.pos=doc.createAnchor(this.$pos.row,this.$pos.column);var pos=this.pos;pos.$insertRight=true;pos.detach();pos.markerId=session.addMarker(new Range(pos.row,pos.column,pos.row,pos.column+this.length),this.mainClass,null,false);this.others=[];this.$others.forEach(function(other){var anchor=doc.createAnchor(other.row,other.column);anchor.$insertRight=true;anchor.detach();_self.others.push(anchor);});session.setUndoSelect(false);};this.showOtherMarkers=function(){if(this.othersActive)return;var session=this.session;var _self=this;this.othersActive=true;this.others.forEach(function(anchor){anchor.markerId=session.addMarker(new Range(anchor.row,anchor.column,anchor.row,anchor.column+_self.length),_self.othersClass,null,false);});};this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=false;for(var i=0;i<this.others.length;i++){this.session.removeMarker(this.others[i].markerId);}};this.onUpdate=function(delta){if(this.$updating)return this.updateAnchors(delta);var range=delta;if(range.start.row!==range.end.row)return;if(range.start.row!==this.pos.row)return;this.$updating=true;var lengthDiff=delta.action==="insert"?range.end.column-range.start.column:range.start.column-range.end.column;var inMainRange=range.start.column>=this.pos.column&&range.start.column<=this.pos.column+this.length+1;var distanceFromStart=range.start.column-this.pos.column;this.updateAnchors(delta);if(inMainRange)this.length+=lengthDiff;if(inMainRange&&!this.session.$fromUndo){if(delta.action==='insert'){for(var i=this.others.length-1;i>=0;i--){var otherPos=this.others[i];var newPos={row:otherPos.row,column:otherPos.column+distanceFromStart};this.doc.insertMergedLines(newPos,delta.lines);}}else if(delta.action==='remove'){for(var i=this.others.length-1;i>=0;i--){var otherPos=this.others[i];var newPos={row:otherPos.row,column:otherPos.column+distanceFromStart};this.doc.remove(new Range(newPos.row,newPos.column,newPos.row,newPos.column-lengthDiff));}}}this.$updating=false;this.updateMarkers();};this.updateAnchors=function(delta){this.pos.onChange(delta);for(var i=this.others.length;i--;){this.others[i].onChange(delta);}this.updateMarkers();};this.updateMarkers=function(){if(this.$updating)return;var _self=this;var session=this.session;var updateMarker=function updateMarker(pos,className){session.removeMarker(pos.markerId);pos.markerId=session.addMarker(new Range(pos.row,pos.column,pos.row,pos.column+_self.length),className,null,false);};updateMarker(this.pos,this.mainClass);for(var i=this.others.length;i--;){updateMarker(this.others[i],this.othersClass);}};this.onCursorChange=function(event){if(this.$updating||!this.session)return;var pos=this.session.selection.getCursor();if(pos.row===this.pos.row&&pos.column>=this.pos.column&&pos.column<=this.pos.column+this.length){this.showOtherMarkers();this._emit("cursorEnter",event);}else{this.hideOtherMarkers();this._emit("cursorLeave",event);}};this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId);this.hideOtherMarkers();this.doc.off("change",this.$onUpdate);this.session.selection.off("changeCursor",this.$onCursorChange);this.session.setUndoSelect(true);this.session=null;};this.cancel=function(){if(this.$undoStackDepth===-1)return;var undoManager=this.session.getUndoManager();var undosRequired=(undoManager.$undoStack||undoManager.$undostack).length-this.$undoStackDepth;for(var i=0;i<undosRequired;i++){undoManager.undo(this.session,true);}if(this.selectionBefore)this.session.selection.fromJSON(this.selectionBefore);};}).call(PlaceHolder.prototype);exports.PlaceHolder=PlaceHolder;});ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(require,exports,module){var event=require("../lib/event");var useragent=require("../lib/useragent");function isSamePoint(p1,p2){return p1.row==p2.row&&p1.column==p2.column;}function onMouseDown(e){var ev=e.domEvent;var alt=ev.altKey;var shift=ev.shiftKey;var ctrl=ev.ctrlKey;var accel=e.getAccelKey();var button=e.getButton();if(ctrl&&useragent.isMac)button=ev.button;if(e.editor.inMultiSelectMode&&button==2){e.editor.textInput.onContextMenu(e.domEvent);return;}if(!ctrl&&!alt&&!accel){if(button===0&&e.editor.inMultiSelectMode)e.editor.exitMultiSelectMode();return;}if(button!==0)return;var editor=e.editor;var selection=editor.selection;var isMultiSelect=editor.inMultiSelectMode;var pos=e.getDocumentPosition();var cursor=selection.getCursor();var inSelection=e.inSelection()||selection.isEmpty()&&isSamePoint(pos,cursor);var mouseX=e.x,mouseY=e.y;var onMouseSelection=function onMouseSelection(e){mouseX=e.clientX;mouseY=e.clientY;};var session=editor.session;var screenAnchor=editor.renderer.pixelToScreenCoordinates(mouseX,mouseY);var screenCursor=screenAnchor;var selectionMode;if(editor.$mouseHandler.$enableJumpToDef){if(ctrl&&alt||accel&&alt)selectionMode=shift?"block":"add";else if(alt&&editor.$blockSelectEnabled)selectionMode="block";}else{if(accel&&!alt){selectionMode="add";if(!isMultiSelect&&shift)return;}else if(alt&&editor.$blockSelectEnabled){selectionMode="block";}}if(selectionMode&&useragent.isMac&&ev.ctrlKey){editor.$mouseHandler.cancelContextMenu();}if(selectionMode=="add"){if(!isMultiSelect&&inSelection)return;// dragging
if(!isMultiSelect){var range=selection.toOrientedRange();editor.addSelectionMarker(range);}var oldRange=selection.rangeList.rangeAtPoint(pos);editor.inVirtualSelectionMode=true;if(shift){oldRange=null;range=selection.ranges[0]||range;editor.removeSelectionMarker(range);}editor.once("mouseup",function(){var tmpSel=selection.toOrientedRange();if(oldRange&&tmpSel.isEmpty()&&isSamePoint(oldRange.cursor,tmpSel.cursor))selection.substractPoint(tmpSel.cursor);else{if(shift){selection.substractPoint(range.cursor);}else if(range){editor.removeSelectionMarker(range);selection.addRange(range);}selection.addRange(tmpSel);}editor.inVirtualSelectionMode=false;});}else if(selectionMode=="block"){e.stop();editor.inVirtualSelectionMode=true;var initialRange;var rectSel=[];var blockSelect=function blockSelect(){var newCursor=editor.renderer.pixelToScreenCoordinates(mouseX,mouseY);var cursor=session.screenToDocumentPosition(newCursor.row,newCursor.column,newCursor.offsetX);if(isSamePoint(screenCursor,newCursor)&&isSamePoint(cursor,selection.lead))return;screenCursor=newCursor;editor.selection.moveToPosition(cursor);editor.renderer.scrollCursorIntoView();editor.removeSelectionMarkers(rectSel);rectSel=selection.rectangularRangeBlock(screenCursor,screenAnchor);if(editor.$mouseHandler.$clickSelection&&rectSel.length==1&&rectSel[0].isEmpty())rectSel[0]=editor.$mouseHandler.$clickSelection.clone();rectSel.forEach(editor.addSelectionMarker,editor);editor.updateSelectionMarkers();};if(isMultiSelect&&!accel){selection.toSingleRange();}else if(!isMultiSelect&&accel){initialRange=selection.toOrientedRange();editor.addSelectionMarker(initialRange);}if(shift)screenAnchor=session.documentToScreenPosition(selection.lead);else selection.moveToPosition(pos);screenCursor={row:-1,column:-1};var onMouseSelectionEnd=function onMouseSelectionEnd(e){blockSelect();clearInterval(timerId);editor.removeSelectionMarkers(rectSel);if(!rectSel.length)rectSel=[selection.toOrientedRange()];if(initialRange){editor.removeSelectionMarker(initialRange);selection.toSingleRange(initialRange);}for(var i=0;i<rectSel.length;i++){selection.addRange(rectSel[i]);}editor.inVirtualSelectionMode=false;editor.$mouseHandler.$clickSelection=null;};var onSelectionInterval=blockSelect;event.capture(editor.container,onMouseSelection,onMouseSelectionEnd);var timerId=setInterval(function(){onSelectionInterval();},20);return e.preventDefault();}}exports.onMouseDown=onMouseDown;});ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(require,exports,module){exports.defaultCommands=[{name:"addCursorAbove",description:"Add cursor above",exec:function exec(editor){editor.selectMoreLines(-1);},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},scrollIntoView:"cursor",readOnly:true},{name:"addCursorBelow",description:"Add cursor below",exec:function exec(editor){editor.selectMoreLines(1);},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},scrollIntoView:"cursor",readOnly:true},{name:"addCursorAboveSkipCurrent",description:"Add cursor above (skip current)",exec:function exec(editor){editor.selectMoreLines(-1,true);},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},scrollIntoView:"cursor",readOnly:true},{name:"addCursorBelowSkipCurrent",description:"Add cursor below (skip current)",exec:function exec(editor){editor.selectMoreLines(1,true);},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},scrollIntoView:"cursor",readOnly:true},{name:"selectMoreBefore",description:"Select more before",exec:function exec(editor){editor.selectMore(-1);},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},scrollIntoView:"cursor",readOnly:true},{name:"selectMoreAfter",description:"Select more after",exec:function exec(editor){editor.selectMore(1);},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},scrollIntoView:"cursor",readOnly:true},{name:"selectNextBefore",description:"Select next before",exec:function exec(editor){editor.selectMore(-1,true);},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},scrollIntoView:"cursor",readOnly:true},{name:"selectNextAfter",description:"Select next after",exec:function exec(editor){editor.selectMore(1,true);},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},scrollIntoView:"cursor",readOnly:true},{name:"toggleSplitSelectionIntoLines",description:"Split into lines",exec:function exec(editor){if(editor.multiSelect.rangeCount>1)editor.multiSelect.joinSelections();else editor.multiSelect.splitIntoLines();},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:true},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function exec(editor){editor.multiSelect.splitIntoLines();},readOnly:true},{name:"alignCursors",description:"Align cursors",exec:function exec(editor){editor.alignCursors();},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function exec(editor){editor.findAll();},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:true}];exports.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function exec(editor){editor.exitMultiSelectMode();},scrollIntoView:"cursor",readOnly:true,isAvailable:function isAvailable(editor){return editor&&editor.inMultiSelectMode;}}];var HashHandler=require("../keyboard/hash_handler").HashHandler;exports.keyboardHandler=new HashHandler(exports.multiSelectCommands);});ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(require,exports,module){var RangeList=require("./range_list").RangeList;var Range=require("./range").Range;var Selection=require("./selection").Selection;var onMouseDown=require("./mouse/multi_select_handler").onMouseDown;var event=require("./lib/event");var lang=require("./lib/lang");var commands=require("./commands/multi_select_commands");exports.commands=commands.defaultCommands.concat(commands.multiSelectCommands);var Search=require("./search").Search;var search=new Search();function find(session,needle,dir){search.$options.wrap=true;search.$options.needle=needle;search.$options.backwards=dir==-1;return search.find(session);}var EditSession=require("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers;};}).call(EditSession.prototype);(function(){this.ranges=null;this.rangeList=null;this.addRange=function(range,$blockChangeEvents){if(!range)return;if(!this.inMultiSelectMode&&this.rangeCount===0){var oldRange=this.toOrientedRange();this.rangeList.add(oldRange);this.rangeList.add(range);if(this.rangeList.ranges.length!=2){this.rangeList.removeAll();return $blockChangeEvents||this.fromOrientedRange(range);}this.rangeList.removeAll();this.rangeList.add(oldRange);this.$onAddRange(oldRange);}if(!range.cursor)range.cursor=range.end;var removed=this.rangeList.add(range);this.$onAddRange(range);if(removed.length)this.$onRemoveRange(removed);if(this.rangeCount>1&&!this.inMultiSelectMode){this._signal("multiSelect");this.inMultiSelectMode=true;this.session.$undoSelect=false;this.rangeList.attach(this.session);}return $blockChangeEvents||this.fromOrientedRange(range);};this.toSingleRange=function(range){range=range||this.ranges[0];var removed=this.rangeList.removeAll();if(removed.length)this.$onRemoveRange(removed);range&&this.fromOrientedRange(range);};this.substractPoint=function(pos){var removed=this.rangeList.substractPoint(pos);if(removed){this.$onRemoveRange(removed);return removed[0];}};this.mergeOverlappingRanges=function(){var removed=this.rangeList.merge();if(removed.length)this.$onRemoveRange(removed);};this.$onAddRange=function(range){this.rangeCount=this.rangeList.ranges.length;this.ranges.unshift(range);this._signal("addRange",{range:range});};this.$onRemoveRange=function(removed){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var lastRange=this.rangeList.ranges.pop();removed.push(lastRange);this.rangeCount=0;}for(var i=removed.length;i--;){var index=this.ranges.indexOf(removed[i]);this.ranges.splice(index,1);}this._signal("removeRange",{ranges:removed});if(this.rangeCount===0&&this.inMultiSelectMode){this.inMultiSelectMode=false;this._signal("singleSelect");this.session.$undoSelect=true;this.rangeList.detach(this.session);}lastRange=lastRange||this.ranges[0];if(lastRange&&!lastRange.isEqual(this.getRange()))this.fromOrientedRange(lastRange);};this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new RangeList();this.ranges=[];this.rangeCount=0;};this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()];};this.splitIntoLines=function(){var ranges=this.ranges.length?this.ranges:[this.getRange()];var newRanges=[];for(var i=0;i<ranges.length;i++){var range=ranges[i];var row=range.start.row;var endRow=range.end.row;if(row===endRow){newRanges.push(range.clone());}else{newRanges.push(new Range(row,range.start.column,row,this.session.getLine(row).length));while(++row<endRow){newRanges.push(this.getLineRange(row,true));}newRanges.push(new Range(endRow,0,endRow,range.end.column));}if(i==0&&!this.isBackwards())newRanges=newRanges.reverse();}this.toSingleRange();for(var i=newRanges.length;i--;){this.addRange(newRanges[i]);}};this.joinSelections=function(){var ranges=this.rangeList.ranges;var lastRange=ranges[ranges.length-1];var range=Range.fromPoints(ranges[0].start,lastRange.end);this.toSingleRange();this.setSelectionRange(range,lastRange.cursor==lastRange.start);};this.toggleBlockSelection=function(){if(this.rangeCount>1){var ranges=this.rangeList.ranges;var lastRange=ranges[ranges.length-1];var range=Range.fromPoints(ranges[0].start,lastRange.end);this.toSingleRange();this.setSelectionRange(range,lastRange.cursor==lastRange.start);}else{var cursor=this.session.documentToScreenPosition(this.cursor);var anchor=this.session.documentToScreenPosition(this.anchor);var rectSel=this.rectangularRangeBlock(cursor,anchor);rectSel.forEach(this.addRange,this);}};this.rectangularRangeBlock=function(screenCursor,screenAnchor,includeEmptyLines){var rectSel=[];var xBackwards=screenCursor.column<screenAnchor.column;if(xBackwards){var startColumn=screenCursor.column;var endColumn=screenAnchor.column;var startOffsetX=screenCursor.offsetX;var endOffsetX=screenAnchor.offsetX;}else{var startColumn=screenAnchor.column;var endColumn=screenCursor.column;var startOffsetX=screenAnchor.offsetX;var endOffsetX=screenCursor.offsetX;}var yBackwards=screenCursor.row<screenAnchor.row;if(yBackwards){var startRow=screenCursor.row;var endRow=screenAnchor.row;}else{var startRow=screenAnchor.row;var endRow=screenCursor.row;}if(startColumn<0)startColumn=0;if(startRow<0)startRow=0;if(startRow==endRow)includeEmptyLines=true;var docEnd;for(var row=startRow;row<=endRow;row++){var range=Range.fromPoints(this.session.screenToDocumentPosition(row,startColumn,startOffsetX),this.session.screenToDocumentPosition(row,endColumn,endOffsetX));if(range.isEmpty()){if(docEnd&&isSamePoint(range.end,docEnd))break;docEnd=range.end;}range.cursor=xBackwards?range.start:range.end;rectSel.push(range);}if(yBackwards)rectSel.reverse();if(!includeEmptyLines){var end=rectSel.length-1;while(rectSel[end].isEmpty()&&end>0){end--;}if(end>0){var start=0;while(rectSel[start].isEmpty()){start++;}}for(var i=end;i>=start;i--){if(rectSel[i].isEmpty())rectSel.splice(i,1);}}return rectSel;};}).call(Selection.prototype);var Editor=require("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor();this.renderer.updateBackMarkers();};this.addSelectionMarker=function(orientedRange){if(!orientedRange.cursor)orientedRange.cursor=orientedRange.end;var style=this.getSelectionStyle();orientedRange.marker=this.session.addMarker(orientedRange,"ace_selection",style);this.session.$selectionMarkers.push(orientedRange);this.session.selectionMarkerCount=this.session.$selectionMarkers.length;return orientedRange;};this.removeSelectionMarker=function(range){if(!range.marker)return;this.session.removeMarker(range.marker);var index=this.session.$selectionMarkers.indexOf(range);if(index!=-1)this.session.$selectionMarkers.splice(index,1);this.session.selectionMarkerCount=this.session.$selectionMarkers.length;};this.removeSelectionMarkers=function(ranges){var markerList=this.session.$selectionMarkers;for(var i=ranges.length;i--;){var range=ranges[i];if(!range.marker)continue;this.session.removeMarker(range.marker);var index=markerList.indexOf(range);if(index!=-1)markerList.splice(index,1);}this.session.selectionMarkerCount=markerList.length;};this.$onAddRange=function(e){this.addSelectionMarker(e.range);this.renderer.updateCursor();this.renderer.updateBackMarkers();};this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges);this.renderer.updateCursor();this.renderer.updateBackMarkers();};this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=true;this.setStyle("ace_multiselect");this.keyBinding.addKeyboardHandler(commands.keyboardHandler);this.commands.setDefaultHandler("exec",this.$onMultiSelectExec);this.renderer.updateCursor();this.renderer.updateBackMarkers();};this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=false;this.unsetStyle("ace_multiselect");this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec);this.renderer.updateCursor();this.renderer.updateBackMarkers();this._emit("changeSelection");};this.$onMultiSelectExec=function(e){var command=e.command;var editor=e.editor;if(!editor.multiSelect)return;if(!command.multiSelectAction){var result=command.exec(editor,e.args||{});editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());editor.multiSelect.mergeOverlappingRanges();}else if(command.multiSelectAction=="forEach"){result=editor.forEachSelection(command,e.args);}else if(command.multiSelectAction=="forEachLine"){result=editor.forEachSelection(command,e.args,true);}else if(command.multiSelectAction=="single"){editor.exitMultiSelectMode();result=command.exec(editor,e.args||{});}else{result=command.multiSelectAction(editor,e.args||{});}return result;};this.forEachSelection=function(cmd,args,options){if(this.inVirtualSelectionMode)return;var keepOrder=options&&options.keepOrder;var $byLines=options==true||options&&options.$byLines;var session=this.session;var selection=this.selection;var rangeList=selection.rangeList;var ranges=(keepOrder?selection:rangeList).ranges;var result;if(!ranges.length)return cmd.exec?cmd.exec(this,args||{}):cmd(this,args||{});var reg=selection._eventRegistry;selection._eventRegistry={};var tmpSel=new Selection(session);this.inVirtualSelectionMode=true;for(var i=ranges.length;i--;){if($byLines){while(i>0&&ranges[i].start.row==ranges[i-1].end.row){i--;}}tmpSel.fromOrientedRange(ranges[i]);tmpSel.index=i;this.selection=session.selection=tmpSel;var cmdResult=cmd.exec?cmd.exec(this,args||{}):cmd(this,args||{});if(!result&&cmdResult!==undefined)result=cmdResult;tmpSel.toOrientedRange(ranges[i]);}tmpSel.detach();this.selection=session.selection=selection;this.inVirtualSelectionMode=false;selection._eventRegistry=reg;selection.mergeOverlappingRanges();if(selection.ranges[0])selection.fromOrientedRange(selection.ranges[0]);var anim=this.renderer.$scrollAnimation;this.onCursorChange();this.onSelectionChange();if(anim&&anim.from==anim.to)this.renderer.animateScrolling(anim.from);return result;};this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange();};this.getSelectedText=function(){var text="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var ranges=this.multiSelect.rangeList.ranges;var buf=[];for(var i=0;i<ranges.length;i++){buf.push(this.session.getTextRange(ranges[i]));}var nl=this.session.getDocument().getNewLineCharacter();text=buf.join(nl);if(text.length==(buf.length-1)*nl.length)text="";}else if(!this.selection.isEmpty()){text=this.session.getTextRange(this.getSelectionRange());}return text;};this.$checkMultiselectChange=function(e,anchor){if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var range=this.multiSelect.ranges[0];if(this.multiSelect.isEmpty()&&anchor==this.multiSelect.anchor)return;var pos=anchor==this.multiSelect.anchor?range.cursor==range.start?range.end:range.start:range.cursor;if(pos.row!=anchor.row||this.session.$clipPositionToDocument(pos.row,pos.column).column!=anchor.column)this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());else this.multiSelect.mergeOverlappingRanges();}};this.findAll=function(needle,options,additive){options=options||{};options.needle=needle||options.needle;if(options.needle==undefined){var range=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();options.needle=this.session.getTextRange(range);}this.$search.set(options);var ranges=this.$search.findAll(this.session);if(!ranges.length)return 0;var selection=this.multiSelect;if(!additive)selection.toSingleRange(ranges[0]);for(var i=ranges.length;i--;){selection.addRange(ranges[i],true);}if(range&&selection.rangeList.rangeAtPoint(range.start))selection.addRange(range,true);return ranges.length;};this.selectMoreLines=function(dir,skip){var range=this.selection.toOrientedRange();var isBackwards=range.cursor==range.end;var screenLead=this.session.documentToScreenPosition(range.cursor);if(this.selection.$desiredColumn)screenLead.column=this.selection.$desiredColumn;var lead=this.session.screenToDocumentPosition(screenLead.row+dir,screenLead.column);if(!range.isEmpty()){var screenAnchor=this.session.documentToScreenPosition(isBackwards?range.end:range.start);var anchor=this.session.screenToDocumentPosition(screenAnchor.row+dir,screenAnchor.column);}else{var anchor=lead;}if(isBackwards){var newRange=Range.fromPoints(lead,anchor);newRange.cursor=newRange.start;}else{var newRange=Range.fromPoints(anchor,lead);newRange.cursor=newRange.end;}newRange.desiredColumn=screenLead.column;if(!this.selection.inMultiSelectMode){this.selection.addRange(range);}else{if(skip)var toRemove=range.cursor;}this.selection.addRange(newRange);if(toRemove)this.selection.substractPoint(toRemove);};this.transposeSelections=function(dir){var session=this.session;var sel=session.multiSelect;var all=sel.ranges;for(var i=all.length;i--;){var range=all[i];if(range.isEmpty()){var tmp=session.getWordRange(range.start.row,range.start.column);range.start.row=tmp.start.row;range.start.column=tmp.start.column;range.end.row=tmp.end.row;range.end.column=tmp.end.column;}}sel.mergeOverlappingRanges();var words=[];for(var i=all.length;i--;){var range=all[i];words.unshift(session.getTextRange(range));}if(dir<0)words.unshift(words.pop());else words.push(words.shift());for(var i=all.length;i--;){var range=all[i];var tmp=range.clone();session.replace(range,words[i]);range.start.row=tmp.start.row;range.start.column=tmp.start.column;}sel.fromOrientedRange(sel.ranges[0]);};this.selectMore=function(dir,skip,stopAtFirst){var session=this.session;var sel=session.multiSelect;var range=sel.toOrientedRange();if(range.isEmpty()){range=session.getWordRange(range.start.row,range.start.column);range.cursor=dir==-1?range.start:range.end;this.multiSelect.addRange(range);if(stopAtFirst)return;}var needle=session.getTextRange(range);var newRange=find(session,needle,dir);if(newRange){newRange.cursor=dir==-1?newRange.start:newRange.end;this.session.unfold(newRange);this.multiSelect.addRange(newRange);this.renderer.scrollCursorIntoView(null,0.5);}if(skip)this.multiSelect.substractPoint(range.cursor);};this.alignCursors=function(){var session=this.session;var sel=session.multiSelect;var ranges=sel.ranges;var row=-1;var sameRowRanges=ranges.filter(function(r){if(r.cursor.row==row)return true;row=r.cursor.row;});if(!ranges.length||sameRowRanges.length==ranges.length-1){var range=this.selection.getRange();var fr=range.start.row,lr=range.end.row;var guessRange=fr==lr;if(guessRange){var max=this.session.getLength();var line;do{line=this.session.getLine(lr);}while(/[=:]/.test(line)&&++lr<max);do{line=this.session.getLine(fr);}while(/[=:]/.test(line)&&--fr>0);if(fr<0)fr=0;if(lr>=max)lr=max-1;}var lines=this.session.removeFullLines(fr,lr);lines=this.$reAlignText(lines,guessRange);this.session.insert({row:fr,column:0},lines.join("\n")+"\n");if(!guessRange){range.start.column=0;range.end.column=lines[lines.length-1].length;}this.selection.setRange(range);}else{sameRowRanges.forEach(function(r){sel.substractPoint(r.cursor);});var maxCol=0;var minSpace=Infinity;var spaceOffsets=ranges.map(function(r){var p=r.cursor;var line=session.getLine(p.row);var spaceOffset=line.substr(p.column).search(/\S/g);if(spaceOffset==-1)spaceOffset=0;if(p.column>maxCol)maxCol=p.column;if(spaceOffset<minSpace)minSpace=spaceOffset;return spaceOffset;});ranges.forEach(function(r,i){var p=r.cursor;var l=maxCol-p.column;var d=spaceOffsets[i]-minSpace;if(l>d)session.insert(p,lang.stringRepeat(" ",l-d));else session.remove(new Range(p.row,p.column,p.row,p.column-l+d));r.start.column=r.end.column=maxCol;r.start.row=r.end.row=p.row;r.cursor=r.end;});sel.fromOrientedRange(ranges[0]);this.renderer.updateCursor();this.renderer.updateBackMarkers();}};this.$reAlignText=function(lines,forceLeft){var isLeftAligned=true,isRightAligned=true;var startW,textW,endW;return lines.map(function(line){var m=line.match(/(\s*)(.*?)(\s*)([=:].*)/);if(!m)return[line];if(startW==null){startW=m[1].length;textW=m[2].length;endW=m[3].length;return m;}if(startW+textW+endW!=m[1].length+m[2].length+m[3].length)isRightAligned=false;if(startW!=m[1].length)isLeftAligned=false;if(startW>m[1].length)startW=m[1].length;if(textW<m[2].length)textW=m[2].length;if(endW>m[3].length)endW=m[3].length;return m;}).map(forceLeft?alignLeft:isLeftAligned?isRightAligned?alignRight:alignLeft:unAlign);function spaces(n){return lang.stringRepeat(" ",n);}function alignLeft(m){return!m[2]?m[0]:spaces(startW)+m[2]+spaces(textW-m[2].length+endW)+m[4].replace(/^([=:])\s+/,"$1 ");}function alignRight(m){return!m[2]?m[0]:spaces(startW+textW-m[2].length)+m[2]+spaces(endW)+m[4].replace(/^([=:])\s+/,"$1 ");}function unAlign(m){return!m[2]?m[0]:spaces(startW)+m[2]+spaces(endW)+m[4].replace(/^([=:])\s+/,"$1 ");}};}).call(Editor.prototype);function isSamePoint(p1,p2){return p1.row==p2.row&&p1.column==p2.column;}exports.onSessionChange=function(e){var session=e.session;if(session&&!session.multiSelect){session.$selectionMarkers=[];session.selection.$initRangeList();session.multiSelect=session.selection;}this.multiSelect=session&&session.multiSelect;var oldSession=e.oldSession;if(oldSession){oldSession.multiSelect.off("addRange",this.$onAddRange);oldSession.multiSelect.off("removeRange",this.$onRemoveRange);oldSession.multiSelect.off("multiSelect",this.$onMultiSelect);oldSession.multiSelect.off("singleSelect",this.$onSingleSelect);oldSession.multiSelect.lead.off("change",this.$checkMultiselectChange);oldSession.multiSelect.anchor.off("change",this.$checkMultiselectChange);}if(session){session.multiSelect.on("addRange",this.$onAddRange);session.multiSelect.on("removeRange",this.$onRemoveRange);session.multiSelect.on("multiSelect",this.$onMultiSelect);session.multiSelect.on("singleSelect",this.$onSingleSelect);session.multiSelect.lead.on("change",this.$checkMultiselectChange);session.multiSelect.anchor.on("change",this.$checkMultiselectChange);}if(session&&this.inMultiSelectMode!=session.selection.inMultiSelectMode){if(session.selection.inMultiSelectMode)this.$onMultiSelect();else this.$onSingleSelect();}};function MultiSelect(editor){if(editor.$multiselectOnSessionChange)return;editor.$onAddRange=editor.$onAddRange.bind(editor);editor.$onRemoveRange=editor.$onRemoveRange.bind(editor);editor.$onMultiSelect=editor.$onMultiSelect.bind(editor);editor.$onSingleSelect=editor.$onSingleSelect.bind(editor);editor.$multiselectOnSessionChange=exports.onSessionChange.bind(editor);editor.$checkMultiselectChange=editor.$checkMultiselectChange.bind(editor);editor.$multiselectOnSessionChange(editor);editor.on("changeSession",editor.$multiselectOnSessionChange);editor.on("mousedown",onMouseDown);editor.commands.addCommands(commands.defaultCommands);addAltCursorListeners(editor);}function addAltCursorListeners(editor){if(!editor.textInput)return;var el=editor.textInput.getElement();var altCursor=false;event.addListener(el,"keydown",function(e){var altDown=e.keyCode==18&&!(e.ctrlKey||e.shiftKey||e.metaKey);if(editor.$blockSelectEnabled&&altDown){if(!altCursor){editor.renderer.setMouseCursor("crosshair");altCursor=true;}}else if(altCursor){reset();}},editor);event.addListener(el,"keyup",reset,editor);event.addListener(el,"blur",reset,editor);function reset(e){if(altCursor){editor.renderer.setMouseCursor("");altCursor=false;}}}exports.MultiSelect=MultiSelect;require("./config").defineOptions(Editor.prototype,"editor",{enableMultiselect:{set:function set(val){MultiSelect(this);if(val){this.on("changeSession",this.$multiselectOnSessionChange);this.on("mousedown",onMouseDown);}else{this.off("changeSession",this.$multiselectOnSessionChange);this.off("mousedown",onMouseDown);}},value:true},enableBlockSelect:{set:function set(val){this.$blockSelectEnabled=val;},value:true}});});ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(require,exports,module){"use strict";var Range=require("../../range").Range;var FoldMode=exports.FoldMode=function(){};(function(){this.foldingStartMarker=null;this.foldingStopMarker=null;this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);if(this.foldingStartMarker.test(line))return"start";if(foldStyle=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(line))return"end";return"";};this.getFoldWidgetRange=function(session,foldStyle,row){return null;};this.indentationBlock=function(session,row,column){var re=/\S/;var line=session.getLine(row);var startLevel=line.search(re);if(startLevel==-1)return;var startColumn=column||line.length;var maxRow=session.getLength();var startRow=row;var endRow=row;while(++row<maxRow){var level=session.getLine(row).search(re);if(level==-1)continue;if(level<=startLevel){var token=session.getTokenAt(row,0);if(!token||token.type!=="string")break;}endRow=row;}if(endRow>startRow){var endColumn=session.getLine(endRow).length;return new Range(startRow,startColumn,endRow,endColumn);}};this.openingBracketBlock=function(session,bracket,row,column,typeRe){var start={row:row,column:column+1};var end=session.$findClosingBracket(bracket,start,typeRe);if(!end)return;var fw=session.foldWidgets[end.row];if(fw==null)fw=session.getFoldWidget(end.row);if(fw=="start"&&end.row>start.row){end.row--;end.column=session.getLine(end.row).length;}return Range.fromPoints(start,end);};this.closingBracketBlock=function(session,bracket,row,column,typeRe){var end={row:row,column:column};var start=session.$findOpeningBracket(bracket,end);if(!start)return;start.column++;end.column--;return Range.fromPoints(start,end);};}).call(FoldMode.prototype);});ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(require,exports,module){"use strict";exports.isDark=false;exports.cssClass="ace-tm";exports.cssText=".ace-tm .ace_gutter {\
background: #f0f0f0;\
color: #333;\
}\
.ace-tm .ace_print-margin {\
width: 1px;\
background: #e8e8e8;\
}\
.ace-tm .ace_fold {\
background-color: #6B72E6;\
}\
.ace-tm {\
background-color: #FFFFFF;\
color: black;\
}\
.ace-tm .ace_cursor {\
color: black;\
}\
.ace-tm .ace_invisible {\
color: rgb(191, 191, 191);\
}\
.ace-tm .ace_storage,\
.ace-tm .ace_keyword {\
color: blue;\
}\
.ace-tm .ace_constant {\
color: rgb(197, 6, 11);\
}\
.ace-tm .ace_constant.ace_buildin {\
color: rgb(88, 72, 246);\
}\
.ace-tm .ace_constant.ace_language {\
color: rgb(88, 92, 246);\
}\
.ace-tm .ace_constant.ace_library {\
color: rgb(6, 150, 14);\
}\
.ace-tm .ace_invalid {\
background-color: rgba(255, 0, 0, 0.1);\
color: red;\
}\
.ace-tm .ace_support.ace_function {\
color: rgb(60, 76, 114);\
}\
.ace-tm .ace_support.ace_constant {\
color: rgb(6, 150, 14);\
}\
.ace-tm .ace_support.ace_type,\
.ace-tm .ace_support.ace_class {\
color: rgb(109, 121, 222);\
}\
.ace-tm .ace_keyword.ace_operator {\
color: rgb(104, 118, 135);\
}\
.ace-tm .ace_string {\
color: rgb(3, 106, 7);\
}\
.ace-tm .ace_comment {\
color: rgb(76, 136, 107);\
}\
.ace-tm .ace_comment.ace_doc {\
color: rgb(0, 102, 255);\
}\
.ace-tm .ace_comment.ace_doc.ace_tag {\
color: rgb(128, 159, 191);\
}\
.ace-tm .ace_constant.ace_numeric {\
color: rgb(0, 0, 205);\
}\
.ace-tm .ace_variable {\
color: rgb(49, 132, 149);\
}\
.ace-tm .ace_xml-pe {\
color: rgb(104, 104, 91);\
}\
.ace-tm .ace_entity.ace_name.ace_function {\
color: #0000A2;\
}\
.ace-tm .ace_heading {\
color: rgb(12, 7, 255);\
}\
.ace-tm .ace_list {\
color:rgb(185, 6, 144);\
}\
.ace-tm .ace_meta.ace_tag {\
color:rgb(0, 22, 142);\
}\
.ace-tm .ace_string.ace_regex {\
color: rgb(255, 0, 0)\
}\
.ace-tm .ace_marker-layer .ace_selection {\
background: rgb(181, 213, 255);\
}\
.ace-tm.ace_multiselect .ace_selection.ace_start {\
box-shadow: 0 0 3px 0px white;\
}\
.ace-tm .ace_marker-layer .ace_step {\
background: rgb(252, 255, 0);\
}\
.ace-tm .ace_marker-layer .ace_stack {\
background: rgb(164, 229, 101);\
}\
.ace-tm .ace_marker-layer .ace_bracket {\
margin: -1px 0 0 -1px;\
border: 1px solid rgb(192, 192, 192);\
}\
.ace-tm .ace_marker-layer .ace_active-line {\
background: rgba(0, 0, 0, 0.07);\
}\
.ace-tm .ace_gutter-active-line {\
background-color : #dcdcdc;\
}\
.ace-tm .ace_marker-layer .ace_selected-word {\
background: rgb(250, 250, 255);\
border: 1px solid rgb(200, 200, 250);\
}\
.ace-tm .ace_indent-guide {\
background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\
}\
";exports.$id="ace/theme/textmate";var dom=require("../lib/dom");dom.importCssString(exports.cssText,exports.cssClass);});ace.define("ace/line_widgets",["require","exports","module","ace/lib/dom"],function(require,exports,module){"use strict";var dom=require("./lib/dom");function LineWidgets(session){this.session=session;this.session.widgetManager=this;this.session.getRowLength=this.getRowLength;this.session.$getWidgetScreenLength=this.$getWidgetScreenLength;this.updateOnChange=this.updateOnChange.bind(this);this.renderWidgets=this.renderWidgets.bind(this);this.measureWidgets=this.measureWidgets.bind(this);this.session._changedWidgets=[];this.$onChangeEditor=this.$onChangeEditor.bind(this);this.session.on("change",this.updateOnChange);this.session.on("changeFold",this.updateOnFold);this.session.on("changeEditor",this.$onChangeEditor);}(function(){this.getRowLength=function(row){var h;if(this.lineWidgets)h=this.lineWidgets[row]&&this.lineWidgets[row].rowCount||0;else h=0;if(!this.$useWrapMode||!this.$wrapData[row]){return 1+h;}else{return this.$wrapData[row].length+1+h;}};this.$getWidgetScreenLength=function(){var screenRows=0;this.lineWidgets.forEach(function(w){if(w&&w.rowCount&&!w.hidden)screenRows+=w.rowCount;});return screenRows;};this.$onChangeEditor=function(e){this.attach(e.editor);};this.attach=function(editor){if(editor&&editor.widgetManager&&editor.widgetManager!=this)editor.widgetManager.detach();if(this.editor==editor)return;this.detach();this.editor=editor;if(editor){editor.widgetManager=this;editor.renderer.on("beforeRender",this.measureWidgets);editor.renderer.on("afterRender",this.renderWidgets);}};this.detach=function(e){var editor=this.editor;if(!editor)return;this.editor=null;editor.widgetManager=null;editor.renderer.off("beforeRender",this.measureWidgets);editor.renderer.off("afterRender",this.renderWidgets);var lineWidgets=this.session.lineWidgets;lineWidgets&&lineWidgets.forEach(function(w){if(w&&w.el&&w.el.parentNode){w._inDocument=false;w.el.parentNode.removeChild(w.el);}});};this.updateOnFold=function(e,session){var lineWidgets=session.lineWidgets;if(!lineWidgets||!e.action)return;var fold=e.data;var start=fold.start.row;var end=fold.end.row;var hide=e.action=="add";for(var i=start+1;i<end;i++){if(lineWidgets[i])lineWidgets[i].hidden=hide;}if(lineWidgets[end]){if(hide){if(!lineWidgets[start])lineWidgets[start]=lineWidgets[end];else lineWidgets[end].hidden=hide;}else{if(lineWidgets[start]==lineWidgets[end])lineWidgets[start]=undefined;lineWidgets[end].hidden=hide;}}};this.updateOnChange=function(delta){var lineWidgets=this.session.lineWidgets;if(!lineWidgets)return;var startRow=delta.start.row;var len=delta.end.row-startRow;if(len===0){}else if(delta.action=="remove"){var removed=lineWidgets.splice(startRow+1,len);if(!lineWidgets[startRow]&&removed[removed.length-1]){lineWidgets[startRow]=removed.pop();}removed.forEach(function(w){w&&this.removeLineWidget(w);},this);this.$updateRows();}else{var args=new Array(len);if(lineWidgets[startRow]&&lineWidgets[startRow].column!=null){if(delta.start.column>lineWidgets[startRow].column)startRow++;}args.unshift(startRow,0);lineWidgets.splice.apply(lineWidgets,args);this.$updateRows();}};this.$updateRows=function(){var lineWidgets=this.session.lineWidgets;if(!lineWidgets)return;var noWidgets=true;lineWidgets.forEach(function(w,i){if(w){noWidgets=false;w.row=i;while(w.$oldWidget){w.$oldWidget.row=i;w=w.$oldWidget;}}});if(noWidgets)this.session.lineWidgets=null;};this.$registerLineWidget=function(w){if(!this.session.lineWidgets)this.session.lineWidgets=new Array(this.session.getLength());var old=this.session.lineWidgets[w.row];if(old){w.$oldWidget=old;if(old.el&&old.el.parentNode){old.el.parentNode.removeChild(old.el);old._inDocument=false;}}this.session.lineWidgets[w.row]=w;return w;};this.addLineWidget=function(w){this.$registerLineWidget(w);w.session=this.session;if(!this.editor)return w;var renderer=this.editor.renderer;if(w.html&&!w.el){w.el=dom.createElement("div");w.el.innerHTML=w.html;}if(w.el){dom.addCssClass(w.el,"ace_lineWidgetContainer");w.el.style.position="absolute";w.el.style.zIndex=5;renderer.container.appendChild(w.el);w._inDocument=true;if(!w.coverGutter){w.el.style.zIndex=3;}if(w.pixelHeight==null){w.pixelHeight=w.el.offsetHeight;}}if(w.rowCount==null){w.rowCount=w.pixelHeight/renderer.layerConfig.lineHeight;}var fold=this.session.getFoldAt(w.row,0);w.$fold=fold;if(fold){var lineWidgets=this.session.lineWidgets;if(w.row==fold.end.row&&!lineWidgets[fold.start.row])lineWidgets[fold.start.row]=w;else w.hidden=true;}this.session._emit("changeFold",{data:{start:{row:w.row}}});this.$updateRows();this.renderWidgets(null,renderer);this.onWidgetChanged(w);return w;};this.removeLineWidget=function(w){w._inDocument=false;w.session=null;if(w.el&&w.el.parentNode)w.el.parentNode.removeChild(w.el);if(w.editor&&w.editor.destroy)try{w.editor.destroy();}catch(e){}if(this.session.lineWidgets){var w1=this.session.lineWidgets[w.row];if(w1==w){this.session.lineWidgets[w.row]=w.$oldWidget;if(w.$oldWidget)this.onWidgetChanged(w.$oldWidget);}else{while(w1){if(w1.$oldWidget==w){w1.$oldWidget=w.$oldWidget;break;}w1=w1.$oldWidget;}}}this.session._emit("changeFold",{data:{start:{row:w.row}}});this.$updateRows();};this.getWidgetsAtRow=function(row){var lineWidgets=this.session.lineWidgets;var w=lineWidgets&&lineWidgets[row];var list=[];while(w){list.push(w);w=w.$oldWidget;}return list;};this.onWidgetChanged=function(w){this.session._changedWidgets.push(w);this.editor&&this.editor.renderer.updateFull();};this.measureWidgets=function(e,renderer){var changedWidgets=this.session._changedWidgets;var config=renderer.layerConfig;if(!changedWidgets||!changedWidgets.length)return;var min=Infinity;for(var i=0;i<changedWidgets.length;i++){var w=changedWidgets[i];if(!w||!w.el)continue;if(w.session!=this.session)continue;if(!w._inDocument){if(this.session.lineWidgets[w.row]!=w)continue;w._inDocument=true;renderer.container.appendChild(w.el);}w.h=w.el.offsetHeight;if(!w.fixedWidth){w.w=w.el.offsetWidth;w.screenWidth=Math.ceil(w.w/config.characterWidth);}var rowCount=w.h/config.lineHeight;if(w.coverLine){rowCount-=this.session.getRowLineCount(w.row);if(rowCount<0)rowCount=0;}if(w.rowCount!=rowCount){w.rowCount=rowCount;if(w.row<min)min=w.row;}}if(min!=Infinity){this.session._emit("changeFold",{data:{start:{row:min}}});this.session.lineWidgetWidth=null;}this.session._changedWidgets=[];};this.renderWidgets=function(e,renderer){var config=renderer.layerConfig;var lineWidgets=this.session.lineWidgets;if(!lineWidgets)return;var first=Math.min(this.firstRow,config.firstRow);var last=Math.max(this.lastRow,config.lastRow,lineWidgets.length);while(first>0&&!lineWidgets[first]){first--;}this.firstRow=config.firstRow;this.lastRow=config.lastRow;renderer.$cursorLayer.config=config;for(var i=first;i<=last;i++){var w=lineWidgets[i];if(!w||!w.el)continue;if(w.hidden){w.el.style.top=-100-(w.pixelHeight||0)+"px";continue;}if(!w._inDocument){w._inDocument=true;renderer.container.appendChild(w.el);}var top=renderer.$cursorLayer.getPixelPosition({row:i,column:0},true).top;if(!w.coverLine)top+=config.lineHeight*this.session.getRowLineCount(w.row);w.el.style.top=top-config.offset+"px";var left=w.coverGutter?0:renderer.gutterWidth;if(!w.fixedWidth)left-=renderer.scrollLeft;w.el.style.left=left+"px";if(w.fullWidth&&w.screenWidth){w.el.style.minWidth=config.width+2*config.padding+"px";}if(w.fixedWidth){w.el.style.right=renderer.scrollBar.getWidth()+"px";}else{w.el.style.right="";}}};}).call(LineWidgets.prototype);exports.LineWidgets=LineWidgets;});ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(require,exports,module){"use strict";var LineWidgets=require("../line_widgets").LineWidgets;var dom=require("../lib/dom");var Range=require("../range").Range;function binarySearch(array,needle,comparator){var first=0;var last=array.length-1;while(first<=last){var mid=first+last>>1;var c=comparator(needle,array[mid]);if(c>0)first=mid+1;else if(c<0)last=mid-1;else return mid;}return-(first+1);}function findAnnotations(session,row,dir){var annotations=session.getAnnotations().sort(Range.comparePoints);if(!annotations.length)return;var i=binarySearch(annotations,{row:row,column:-1},Range.comparePoints);if(i<0)i=-i-1;if(i>=annotations.length)i=dir>0?0:annotations.length-1;else if(i===0&&dir<0)i=annotations.length-1;var annotation=annotations[i];if(!annotation||!dir)return;if(annotation.row===row){do{annotation=annotations[i+=dir];}while(annotation&&annotation.row===row);if(!annotation)return annotations.slice();}var matched=[];row=annotation.row;do{matched[dir<0?"unshift":"push"](annotation);annotation=annotations[i+=dir];}while(annotation&&annotation.row==row);return matched.length&&matched;}exports.showErrorMarker=function(editor,dir){var session=editor.session;if(!session.widgetManager){session.widgetManager=new LineWidgets(session);session.widgetManager.attach(editor);}var pos=editor.getCursorPosition();var row=pos.row;var oldWidget=session.widgetManager.getWidgetsAtRow(row).filter(function(w){return w.type=="errorMarker";})[0];if(oldWidget){oldWidget.destroy();}else{row-=dir;}var annotations=findAnnotations(session,row,dir);var gutterAnno;if(annotations){var annotation=annotations[0];pos.column=(annotation.pos&&typeof annotation.column!="number"?annotation.pos.sc:annotation.column)||0;pos.row=annotation.row;gutterAnno=editor.renderer.$gutterLayer.$annotations[pos.row];}else if(oldWidget){return;}else{gutterAnno={text:["Looks good!"],className:"ace_ok"};}editor.session.unfold(pos.row);editor.selection.moveToPosition(pos);var w={row:pos.row,fixedWidth:true,coverGutter:true,el:dom.createElement("div"),type:"errorMarker"};var el=w.el.appendChild(dom.createElement("div"));var arrow=w.el.appendChild(dom.createElement("div"));arrow.className="error_widget_arrow "+gutterAnno.className;var left=editor.renderer.$cursorLayer.getPixelPosition(pos).left;arrow.style.left=left+editor.renderer.gutterWidth-5+"px";w.el.className="error_widget_wrapper";el.className="error_widget "+gutterAnno.className;el.innerHTML=gutterAnno.text.join("<br>");el.appendChild(dom.createElement("div"));var kb=function kb(_,hashId,keyString){if(hashId===0&&(keyString==="esc"||keyString==="return")){w.destroy();return{command:"null"};}};w.destroy=function(){if(editor.$mouseHandler.isMousePressed)return;editor.keyBinding.removeKeyboardHandler(kb);session.widgetManager.removeLineWidget(w);editor.off("changeSelection",w.destroy);editor.off("changeSession",w.destroy);editor.off("mouseup",w.destroy);editor.off("change",w.destroy);};editor.keyBinding.addKeyboardHandler(kb);editor.on("changeSelection",w.destroy);editor.on("changeSession",w.destroy);editor.on("mouseup",w.destroy);editor.on("change",w.destroy);editor.session.widgetManager.addLineWidget(w);w.el.onmousedown=editor.focus.bind(editor);editor.renderer.scrollCursorIntoView(null,0.5,{bottom:w.el.offsetHeight});};dom.importCssString("\
    .error_widget_wrapper {\
        background: inherit;\
        color: inherit;\
        border:none\
    }\
    .error_widget {\
        border-top: solid 2px;\
        border-bottom: solid 2px;\
        margin: 5px 0;\
        padding: 10px 40px;\
        white-space: pre-wrap;\
    }\
    .error_widget.ace_error, .error_widget_arrow.ace_error{\
        border-color: #ff5a5a\
    }\
    .error_widget.ace_warning, .error_widget_arrow.ace_warning{\
        border-color: #F1D817\
    }\
    .error_widget.ace_info, .error_widget_arrow.ace_info{\
        border-color: #5a5a5a\
    }\
    .error_widget.ace_ok, .error_widget_arrow.ace_ok{\
        border-color: #5aaa5a\
    }\
    .error_widget_arrow {\
        position: absolute;\
        border: solid 5px;\
        border-top-color: transparent!important;\
        border-right-color: transparent!important;\
        border-left-color: transparent!important;\
        top: -5px;\
    }\
","");});ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(require,exports,module){"use strict";require("./lib/fixoldbrowsers");var dom=require("./lib/dom");var event=require("./lib/event");var Range=require("./range").Range;var Editor=require("./editor").Editor;var EditSession=require("./edit_session").EditSession;var UndoManager=require("./undomanager").UndoManager;var Renderer=require("./virtual_renderer").VirtualRenderer;require("./worker/worker_client");require("./keyboard/hash_handler");require("./placeholder");require("./multi_select");require("./mode/folding/fold_mode");require("./theme/textmate");require("./ext/error_marker");exports.config=require("./config");exports.require=require;if(true)exports.define=__webpack_require__(/*! !webpack amd define */ "./node_modules/webpack/buildin/amd-define.js");exports.edit=function(el,options){if(typeof el=="string"){var _id=el;el=document.getElementById(_id);if(!el)throw new Error("ace.edit can't find div #"+_id);}if(el&&el.env&&el.env.editor instanceof Editor)return el.env.editor;var value="";if(el&&/input|textarea/i.test(el.tagName)){var oldNode=el;value=oldNode.value;el=dom.createElement("pre");oldNode.parentNode.replaceChild(el,oldNode);}else if(el){value=el.textContent;el.innerHTML="";}var doc=exports.createEditSession(value);var editor=new Editor(new Renderer(el),doc,options);var env={document:doc,editor:editor,onResize:editor.resize.bind(editor,null)};if(oldNode)env.textarea=oldNode;event.addListener(window,"resize",env.onResize);editor.on("destroy",function(){event.removeListener(window,"resize",env.onResize);env.editor.container.env=null;// prevent memory leak on old ie
});editor.container.env=editor.env=env;return editor;};exports.createEditSession=function(text,mode){var doc=new EditSession(text,mode);doc.setUndoManager(new UndoManager());return doc;};exports.Range=Range;exports.Editor=Editor;exports.EditSession=EditSession;exports.UndoManager=UndoManager;exports.VirtualRenderer=Renderer;exports.version=exports.config.version;});(function(){ace.require(["ace/ace"],function(a){if(a){a.config.init(true);a.define=ace.define;}if(!window.ace)window.ace=a;for(var key in a){if(a.hasOwnProperty(key))window.ace[key]=a[key];}window.ace["default"]=window.ace;if(( false?undefined:_typeof(module))=="object"&&( false?undefined:_typeof(exports))=="object"&&module){module.exports=window.ace;}});})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/ace-builds/src-noconflict/ext-split.js":
/*!*************************************************************!*\
  !*** ./node_modules/ace-builds/src-noconflict/ext-split.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

ace.define("ace/split", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/lib/event_emitter", "ace/editor", "ace/virtual_renderer", "ace/edit_session"], function (require, exports, module) {
  "use strict";

  var oop = require("./lib/oop");

  var lang = require("./lib/lang");

  var EventEmitter = require("./lib/event_emitter").EventEmitter;

  var Editor = require("./editor").Editor;

  var Renderer = require("./virtual_renderer").VirtualRenderer;

  var EditSession = require("./edit_session").EditSession;

  var Split = function Split(container, theme, splits) {
    this.BELOW = 1;
    this.BESIDE = 0;
    this.$container = container;
    this.$theme = theme;
    this.$splits = 0;
    this.$editorCSS = "";
    this.$editors = [];
    this.$orientation = this.BESIDE;
    this.setSplits(splits || 1);
    this.$cEditor = this.$editors[0];
    this.on("focus", function (editor) {
      this.$cEditor = editor;
    }.bind(this));
  };

  (function () {
    oop.implement(this, EventEmitter);

    this.$createEditor = function () {
      var el = document.createElement("div");
      el.className = this.$editorCSS;
      el.style.cssText = "position: absolute; top:0px; bottom:0px";
      this.$container.appendChild(el);
      var editor = new Editor(new Renderer(el, this.$theme));
      editor.on("focus", function () {
        this._emit("focus", editor);
      }.bind(this));
      this.$editors.push(editor);
      editor.setFontSize(this.$fontSize);
      return editor;
    };

    this.setSplits = function (splits) {
      var editor;

      if (splits < 1) {
        throw "The number of splits have to be > 0!";
      }

      if (splits == this.$splits) {
        return;
      } else if (splits > this.$splits) {
        while (this.$splits < this.$editors.length && this.$splits < splits) {
          editor = this.$editors[this.$splits];
          this.$container.appendChild(editor.container);
          editor.setFontSize(this.$fontSize);
          this.$splits++;
        }

        while (this.$splits < splits) {
          this.$createEditor();
          this.$splits++;
        }
      } else {
        while (this.$splits > splits) {
          editor = this.$editors[this.$splits - 1];
          this.$container.removeChild(editor.container);
          this.$splits--;
        }
      }

      this.resize();
    };

    this.getSplits = function () {
      return this.$splits;
    };

    this.getEditor = function (idx) {
      return this.$editors[idx];
    };

    this.getCurrentEditor = function () {
      return this.$cEditor;
    };

    this.focus = function () {
      this.$cEditor.focus();
    };

    this.blur = function () {
      this.$cEditor.blur();
    };

    this.setTheme = function (theme) {
      this.$editors.forEach(function (editor) {
        editor.setTheme(theme);
      });
    };

    this.setKeyboardHandler = function (keybinding) {
      this.$editors.forEach(function (editor) {
        editor.setKeyboardHandler(keybinding);
      });
    };

    this.forEach = function (callback, scope) {
      this.$editors.forEach(callback, scope);
    };

    this.$fontSize = "";

    this.setFontSize = function (size) {
      this.$fontSize = size;
      this.forEach(function (editor) {
        editor.setFontSize(size);
      });
    };

    this.$cloneSession = function (session) {
      var s = new EditSession(session.getDocument(), session.getMode());
      var undoManager = session.getUndoManager();
      s.setUndoManager(undoManager);
      s.setTabSize(session.getTabSize());
      s.setUseSoftTabs(session.getUseSoftTabs());
      s.setOverwrite(session.getOverwrite());
      s.setBreakpoints(session.getBreakpoints());
      s.setUseWrapMode(session.getUseWrapMode());
      s.setUseWorker(session.getUseWorker());
      s.setWrapLimitRange(session.$wrapLimitRange.min, session.$wrapLimitRange.max);
      s.$foldData = session.$cloneFoldData();
      return s;
    };

    this.setSession = function (session, idx) {
      var editor;

      if (idx == null) {
        editor = this.$cEditor;
      } else {
        editor = this.$editors[idx];
      }

      var isUsed = this.$editors.some(function (editor) {
        return editor.session === session;
      });

      if (isUsed) {
        session = this.$cloneSession(session);
      }

      editor.setSession(session);
      return session;
    };

    this.getOrientation = function () {
      return this.$orientation;
    };

    this.setOrientation = function (orientation) {
      if (this.$orientation == orientation) {
        return;
      }

      this.$orientation = orientation;
      this.resize();
    };

    this.resize = function () {
      var width = this.$container.clientWidth;
      var height = this.$container.clientHeight;
      var editor;

      if (this.$orientation == this.BESIDE) {
        var editorWidth = width / this.$splits;

        for (var i = 0; i < this.$splits; i++) {
          editor = this.$editors[i];
          editor.container.style.width = editorWidth + "px";
          editor.container.style.top = "0px";
          editor.container.style.left = i * editorWidth + "px";
          editor.container.style.height = height + "px";
          editor.resize();
        }
      } else {
        var editorHeight = height / this.$splits;

        for (var i = 0; i < this.$splits; i++) {
          editor = this.$editors[i];
          editor.container.style.width = width + "px";
          editor.container.style.top = i * editorHeight + "px";
          editor.container.style.left = "0px";
          editor.container.style.height = editorHeight + "px";
          editor.resize();
        }
      }
    };
  }).call(Split.prototype);
  exports.Split = Split;
});
ace.define("ace/ext/split", ["require", "exports", "module", "ace/split"], function (require, exports, module) {
  "use strict";

  module.exports = require("../split");
});

(function () {
  ace.require(["ace/ext/split"], function (m) {
    if (( false ? undefined : _typeof(module)) == "object" && ( false ? undefined : _typeof(exports)) == "object" && module) {
      module.exports = m;
    }
  });
})();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/diff-match-patch/index.js":
/*!************************************************!*\
  !*** ./node_modules/diff-match-patch/index.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

/**
 * Diff Match and Patch
 * Copyright 2018 The diff-match-patch Authors.
 * https://github.com/google/diff-match-patch
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @fileoverview Computes the difference between two texts to create a patch.
 * Applies the patch onto another text, allowing for errors.
 * @author fraser@google.com (Neil Fraser)
 */

/**
 * Class containing the diff, match and patch methods.
 * @constructor
 */
var diff_match_patch = function diff_match_patch() {
  // Defaults.
  // Redefine these in your program to override the defaults.
  // Number of seconds to map a diff before giving up (0 for infinity).
  this.Diff_Timeout = 1.0; // Cost of an empty edit operation in terms of edit characters.

  this.Diff_EditCost = 4; // At what point is no match declared (0.0 = perfection, 1.0 = very loose).

  this.Match_Threshold = 0.5; // How far to search for a match (0 = exact location, 1000+ = broad match).
  // A match this many characters away from the expected location will add
  // 1.0 to the score (0.0 is a perfect match).

  this.Match_Distance = 1000; // When deleting a large block of text (over ~64 characters), how close do
  // the contents have to be to match the expected contents. (0.0 = perfection,
  // 1.0 = very loose).  Note that Match_Threshold controls how closely the
  // end points of a delete need to match.

  this.Patch_DeleteThreshold = 0.5; // Chunk size for context length.

  this.Patch_Margin = 4; // The number of bits in an int.

  this.Match_MaxBits = 32;
}; //  DIFF FUNCTIONS

/**
 * The data structure representing a diff is an array of tuples:
 * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]
 * which means: delete 'Hello', add 'Goodbye' and keep ' world.'
 */


var DIFF_DELETE = -1;
var DIFF_INSERT = 1;
var DIFF_EQUAL = 0;
/**
 * Class representing one diff tuple.
 * ~Attempts to look like a two-element array (which is what this used to be).~
 * Constructor returns an actual two-element array, to allow destructing @JackuB
 * See https://github.com/JackuB/diff-match-patch/issues/14 for details
 * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.
 * @param {string} text Text to be deleted, inserted, or retained.
 * @constructor
 */

diff_match_patch.Diff = function (op, text) {
  return [op, text];
};
/**
 * Find the differences between two texts.  Simplifies the problem by stripping
 * any common prefix or suffix off the texts before diffing.
 * @param {string} text1 Old string to be diffed.
 * @param {string} text2 New string to be diffed.
 * @param {boolean=} opt_checklines Optional speedup flag. If present and false,
 *     then don't run a line-level diff first to identify the changed areas.
 *     Defaults to true, which does a faster, slightly less optimal diff.
 * @param {number=} opt_deadline Optional time when the diff should be complete
 *     by.  Used internally for recursive calls.  Users should set DiffTimeout
 *     instead.
 * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.
 */


diff_match_patch.prototype.diff_main = function (text1, text2, opt_checklines, opt_deadline) {
  // Set a deadline by which time the diff must be complete.
  if (typeof opt_deadline == 'undefined') {
    if (this.Diff_Timeout <= 0) {
      opt_deadline = Number.MAX_VALUE;
    } else {
      opt_deadline = new Date().getTime() + this.Diff_Timeout * 1000;
    }
  }

  var deadline = opt_deadline; // Check for null inputs.

  if (text1 == null || text2 == null) {
    throw new Error('Null input. (diff_main)');
  } // Check for equality (speedup).


  if (text1 == text2) {
    if (text1) {
      return [new diff_match_patch.Diff(DIFF_EQUAL, text1)];
    }

    return [];
  }

  if (typeof opt_checklines == 'undefined') {
    opt_checklines = true;
  }

  var checklines = opt_checklines; // Trim off common prefix (speedup).

  var commonlength = this.diff_commonPrefix(text1, text2);
  var commonprefix = text1.substring(0, commonlength);
  text1 = text1.substring(commonlength);
  text2 = text2.substring(commonlength); // Trim off common suffix (speedup).

  commonlength = this.diff_commonSuffix(text1, text2);
  var commonsuffix = text1.substring(text1.length - commonlength);
  text1 = text1.substring(0, text1.length - commonlength);
  text2 = text2.substring(0, text2.length - commonlength); // Compute the diff on the middle block.

  var diffs = this.diff_compute_(text1, text2, checklines, deadline); // Restore the prefix and suffix.

  if (commonprefix) {
    diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, commonprefix));
  }

  if (commonsuffix) {
    diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, commonsuffix));
  }

  this.diff_cleanupMerge(diffs);
  return diffs;
};
/**
 * Find the differences between two texts.  Assumes that the texts do not
 * have any common prefix or suffix.
 * @param {string} text1 Old string to be diffed.
 * @param {string} text2 New string to be diffed.
 * @param {boolean} checklines Speedup flag.  If false, then don't run a
 *     line-level diff first to identify the changed areas.
 *     If true, then run a faster, slightly less optimal diff.
 * @param {number} deadline Time when the diff should be complete by.
 * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.
 * @private
 */


diff_match_patch.prototype.diff_compute_ = function (text1, text2, checklines, deadline) {
  var diffs;

  if (!text1) {
    // Just add some text (speedup).
    return [new diff_match_patch.Diff(DIFF_INSERT, text2)];
  }

  if (!text2) {
    // Just delete some text (speedup).
    return [new diff_match_patch.Diff(DIFF_DELETE, text1)];
  }

  var longtext = text1.length > text2.length ? text1 : text2;
  var shorttext = text1.length > text2.length ? text2 : text1;
  var i = longtext.indexOf(shorttext);

  if (i != -1) {
    // Shorter text is inside the longer text (speedup).
    diffs = [new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(0, i)), new diff_match_patch.Diff(DIFF_EQUAL, shorttext), new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(i + shorttext.length))]; // Swap insertions for deletions if diff is reversed.

    if (text1.length > text2.length) {
      diffs[0][0] = diffs[2][0] = DIFF_DELETE;
    }

    return diffs;
  }

  if (shorttext.length == 1) {
    // Single character string.
    // After the previous speedup, the character can't be an equality.
    return [new diff_match_patch.Diff(DIFF_DELETE, text1), new diff_match_patch.Diff(DIFF_INSERT, text2)];
  } // Check to see if the problem can be split in two.


  var hm = this.diff_halfMatch_(text1, text2);

  if (hm) {
    // A half-match was found, sort out the return data.
    var text1_a = hm[0];
    var text1_b = hm[1];
    var text2_a = hm[2];
    var text2_b = hm[3];
    var mid_common = hm[4]; // Send both pairs off for separate processing.

    var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);
    var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline); // Merge the results.

    return diffs_a.concat([new diff_match_patch.Diff(DIFF_EQUAL, mid_common)], diffs_b);
  }

  if (checklines && text1.length > 100 && text2.length > 100) {
    return this.diff_lineMode_(text1, text2, deadline);
  }

  return this.diff_bisect_(text1, text2, deadline);
};
/**
 * Do a quick line-level diff on both strings, then rediff the parts for
 * greater accuracy.
 * This speedup can produce non-minimal diffs.
 * @param {string} text1 Old string to be diffed.
 * @param {string} text2 New string to be diffed.
 * @param {number} deadline Time when the diff should be complete by.
 * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.
 * @private
 */


diff_match_patch.prototype.diff_lineMode_ = function (text1, text2, deadline) {
  // Scan the text on a line-by-line basis first.
  var a = this.diff_linesToChars_(text1, text2);
  text1 = a.chars1;
  text2 = a.chars2;
  var linearray = a.lineArray;
  var diffs = this.diff_main(text1, text2, false, deadline); // Convert the diff back to original text.

  this.diff_charsToLines_(diffs, linearray); // Eliminate freak matches (e.g. blank lines)

  this.diff_cleanupSemantic(diffs); // Rediff any replacement blocks, this time character-by-character.
  // Add a dummy entry at the end.

  diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));
  var pointer = 0;
  var count_delete = 0;
  var count_insert = 0;
  var text_delete = '';
  var text_insert = '';

  while (pointer < diffs.length) {
    switch (diffs[pointer][0]) {
      case DIFF_INSERT:
        count_insert++;
        text_insert += diffs[pointer][1];
        break;

      case DIFF_DELETE:
        count_delete++;
        text_delete += diffs[pointer][1];
        break;

      case DIFF_EQUAL:
        // Upon reaching an equality, check for prior redundancies.
        if (count_delete >= 1 && count_insert >= 1) {
          // Delete the offending records and add the merged ones.
          diffs.splice(pointer - count_delete - count_insert, count_delete + count_insert);
          pointer = pointer - count_delete - count_insert;
          var subDiff = this.diff_main(text_delete, text_insert, false, deadline);

          for (var j = subDiff.length - 1; j >= 0; j--) {
            diffs.splice(pointer, 0, subDiff[j]);
          }

          pointer = pointer + subDiff.length;
        }

        count_insert = 0;
        count_delete = 0;
        text_delete = '';
        text_insert = '';
        break;
    }

    pointer++;
  }

  diffs.pop(); // Remove the dummy entry at the end.

  return diffs;
};
/**
 * Find the 'middle snake' of a diff, split the problem in two
 * and return the recursively constructed diff.
 * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
 * @param {string} text1 Old string to be diffed.
 * @param {string} text2 New string to be diffed.
 * @param {number} deadline Time at which to bail if not yet complete.
 * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.
 * @private
 */


diff_match_patch.prototype.diff_bisect_ = function (text1, text2, deadline) {
  // Cache the text lengths to prevent multiple calls.
  var text1_length = text1.length;
  var text2_length = text2.length;
  var max_d = Math.ceil((text1_length + text2_length) / 2);
  var v_offset = max_d;
  var v_length = 2 * max_d;
  var v1 = new Array(v_length);
  var v2 = new Array(v_length); // Setting all elements to -1 is faster in Chrome & Firefox than mixing
  // integers and undefined.

  for (var x = 0; x < v_length; x++) {
    v1[x] = -1;
    v2[x] = -1;
  }

  v1[v_offset + 1] = 0;
  v2[v_offset + 1] = 0;
  var delta = text1_length - text2_length; // If the total number of characters is odd, then the front path will collide
  // with the reverse path.

  var front = delta % 2 != 0; // Offsets for start and end of k loop.
  // Prevents mapping of space beyond the grid.

  var k1start = 0;
  var k1end = 0;
  var k2start = 0;
  var k2end = 0;

  for (var d = 0; d < max_d; d++) {
    // Bail out if deadline is reached.
    if (new Date().getTime() > deadline) {
      break;
    } // Walk the front path one step.


    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {
      var k1_offset = v_offset + k1;
      var x1;

      if (k1 == -d || k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1]) {
        x1 = v1[k1_offset + 1];
      } else {
        x1 = v1[k1_offset - 1] + 1;
      }

      var y1 = x1 - k1;

      while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) == text2.charAt(y1)) {
        x1++;
        y1++;
      }

      v1[k1_offset] = x1;

      if (x1 > text1_length) {
        // Ran off the right of the graph.
        k1end += 2;
      } else if (y1 > text2_length) {
        // Ran off the bottom of the graph.
        k1start += 2;
      } else if (front) {
        var k2_offset = v_offset + delta - k1;

        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {
          // Mirror x2 onto top-left coordinate system.
          var x2 = text1_length - v2[k2_offset];

          if (x1 >= x2) {
            // Overlap detected.
            return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);
          }
        }
      }
    } // Walk the reverse path one step.


    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {
      var k2_offset = v_offset + k2;
      var x2;

      if (k2 == -d || k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1]) {
        x2 = v2[k2_offset + 1];
      } else {
        x2 = v2[k2_offset - 1] + 1;
      }

      var y2 = x2 - k2;

      while (x2 < text1_length && y2 < text2_length && text1.charAt(text1_length - x2 - 1) == text2.charAt(text2_length - y2 - 1)) {
        x2++;
        y2++;
      }

      v2[k2_offset] = x2;

      if (x2 > text1_length) {
        // Ran off the left of the graph.
        k2end += 2;
      } else if (y2 > text2_length) {
        // Ran off the top of the graph.
        k2start += 2;
      } else if (!front) {
        var k1_offset = v_offset + delta - k2;

        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {
          var x1 = v1[k1_offset];
          var y1 = v_offset + x1 - k1_offset; // Mirror x2 onto top-left coordinate system.

          x2 = text1_length - x2;

          if (x1 >= x2) {
            // Overlap detected.
            return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);
          }
        }
      }
    }
  } // Diff took too long and hit the deadline or
  // number of diffs equals number of characters, no commonality at all.


  return [new diff_match_patch.Diff(DIFF_DELETE, text1), new diff_match_patch.Diff(DIFF_INSERT, text2)];
};
/**
 * Given the location of the 'middle snake', split the diff in two parts
 * and recurse.
 * @param {string} text1 Old string to be diffed.
 * @param {string} text2 New string to be diffed.
 * @param {number} x Index of split point in text1.
 * @param {number} y Index of split point in text2.
 * @param {number} deadline Time at which to bail if not yet complete.
 * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.
 * @private
 */


diff_match_patch.prototype.diff_bisectSplit_ = function (text1, text2, x, y, deadline) {
  var text1a = text1.substring(0, x);
  var text2a = text2.substring(0, y);
  var text1b = text1.substring(x);
  var text2b = text2.substring(y); // Compute both diffs serially.

  var diffs = this.diff_main(text1a, text2a, false, deadline);
  var diffsb = this.diff_main(text1b, text2b, false, deadline);
  return diffs.concat(diffsb);
};
/**
 * Split two texts into an array of strings.  Reduce the texts to a string of
 * hashes where each Unicode character represents one line.
 * @param {string} text1 First string.
 * @param {string} text2 Second string.
 * @return {{chars1: string, chars2: string, lineArray: !Array.<string>}}
 *     An object containing the encoded text1, the encoded text2 and
 *     the array of unique strings.
 *     The zeroth element of the array of unique strings is intentionally blank.
 * @private
 */


diff_match_patch.prototype.diff_linesToChars_ = function (text1, text2) {
  var lineArray = []; // e.g. lineArray[4] == 'Hello\n'

  var lineHash = {}; // e.g. lineHash['Hello\n'] == 4
  // '\x00' is a valid character, but various debuggers don't like it.
  // So we'll insert a junk entry to avoid generating a null character.

  lineArray[0] = '';
  /**
   * Split a text into an array of strings.  Reduce the texts to a string of
   * hashes where each Unicode character represents one line.
   * Modifies linearray and linehash through being a closure.
   * @param {string} text String to encode.
   * @return {string} Encoded string.
   * @private
   */

  function diff_linesToCharsMunge_(text) {
    var chars = ''; // Walk the text, pulling out a substring for each line.
    // text.split('\n') would would temporarily double our memory footprint.
    // Modifying text would create many large strings to garbage collect.

    var lineStart = 0;
    var lineEnd = -1; // Keeping our own length variable is faster than looking it up.

    var lineArrayLength = lineArray.length;

    while (lineEnd < text.length - 1) {
      lineEnd = text.indexOf('\n', lineStart);

      if (lineEnd == -1) {
        lineEnd = text.length - 1;
      }

      var line = text.substring(lineStart, lineEnd + 1);

      if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== undefined) {
        chars += String.fromCharCode(lineHash[line]);
      } else {
        if (lineArrayLength == maxLines) {
          // Bail out at 65535 because
          // String.fromCharCode(65536) == String.fromCharCode(0)
          line = text.substring(lineStart);
          lineEnd = text.length;
        }

        chars += String.fromCharCode(lineArrayLength);
        lineHash[line] = lineArrayLength;
        lineArray[lineArrayLength++] = line;
      }

      lineStart = lineEnd + 1;
    }

    return chars;
  } // Allocate 2/3rds of the space for text1, the rest for text2.


  var maxLines = 40000;
  var chars1 = diff_linesToCharsMunge_(text1);
  maxLines = 65535;
  var chars2 = diff_linesToCharsMunge_(text2);
  return {
    chars1: chars1,
    chars2: chars2,
    lineArray: lineArray
  };
};
/**
 * Rehydrate the text in a diff from a string of line hashes to real lines of
 * text.
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 * @param {!Array.<string>} lineArray Array of unique strings.
 * @private
 */


diff_match_patch.prototype.diff_charsToLines_ = function (diffs, lineArray) {
  for (var i = 0; i < diffs.length; i++) {
    var chars = diffs[i][1];
    var text = [];

    for (var j = 0; j < chars.length; j++) {
      text[j] = lineArray[chars.charCodeAt(j)];
    }

    diffs[i][1] = text.join('');
  }
};
/**
 * Determine the common prefix of two strings.
 * @param {string} text1 First string.
 * @param {string} text2 Second string.
 * @return {number} The number of characters common to the start of each
 *     string.
 */


diff_match_patch.prototype.diff_commonPrefix = function (text1, text2) {
  // Quick check for common null cases.
  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {
    return 0;
  } // Binary search.
  // Performance analysis: https://neil.fraser.name/news/2007/10/09/


  var pointermin = 0;
  var pointermax = Math.min(text1.length, text2.length);
  var pointermid = pointermax;
  var pointerstart = 0;

  while (pointermin < pointermid) {
    if (text1.substring(pointerstart, pointermid) == text2.substring(pointerstart, pointermid)) {
      pointermin = pointermid;
      pointerstart = pointermin;
    } else {
      pointermax = pointermid;
    }

    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
  }

  return pointermid;
};
/**
 * Determine the common suffix of two strings.
 * @param {string} text1 First string.
 * @param {string} text2 Second string.
 * @return {number} The number of characters common to the end of each string.
 */


diff_match_patch.prototype.diff_commonSuffix = function (text1, text2) {
  // Quick check for common null cases.
  if (!text1 || !text2 || text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {
    return 0;
  } // Binary search.
  // Performance analysis: https://neil.fraser.name/news/2007/10/09/


  var pointermin = 0;
  var pointermax = Math.min(text1.length, text2.length);
  var pointermid = pointermax;
  var pointerend = 0;

  while (pointermin < pointermid) {
    if (text1.substring(text1.length - pointermid, text1.length - pointerend) == text2.substring(text2.length - pointermid, text2.length - pointerend)) {
      pointermin = pointermid;
      pointerend = pointermin;
    } else {
      pointermax = pointermid;
    }

    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
  }

  return pointermid;
};
/**
 * Determine if the suffix of one string is the prefix of another.
 * @param {string} text1 First string.
 * @param {string} text2 Second string.
 * @return {number} The number of characters common to the end of the first
 *     string and the start of the second string.
 * @private
 */


diff_match_patch.prototype.diff_commonOverlap_ = function (text1, text2) {
  // Cache the text lengths to prevent multiple calls.
  var text1_length = text1.length;
  var text2_length = text2.length; // Eliminate the null case.

  if (text1_length == 0 || text2_length == 0) {
    return 0;
  } // Truncate the longer string.


  if (text1_length > text2_length) {
    text1 = text1.substring(text1_length - text2_length);
  } else if (text1_length < text2_length) {
    text2 = text2.substring(0, text1_length);
  }

  var text_length = Math.min(text1_length, text2_length); // Quick check for the worst case.

  if (text1 == text2) {
    return text_length;
  } // Start by looking for a single character match
  // and increase length until no match is found.
  // Performance analysis: https://neil.fraser.name/news/2010/11/04/


  var best = 0;
  var length = 1;

  while (true) {
    var pattern = text1.substring(text_length - length);
    var found = text2.indexOf(pattern);

    if (found == -1) {
      return best;
    }

    length += found;

    if (found == 0 || text1.substring(text_length - length) == text2.substring(0, length)) {
      best = length;
      length++;
    }
  }
};
/**
 * Do the two texts share a substring which is at least half the length of the
 * longer text?
 * This speedup can produce non-minimal diffs.
 * @param {string} text1 First string.
 * @param {string} text2 Second string.
 * @return {Array.<string>} Five element Array, containing the prefix of
 *     text1, the suffix of text1, the prefix of text2, the suffix of
 *     text2 and the common middle.  Or null if there was no match.
 * @private
 */


diff_match_patch.prototype.diff_halfMatch_ = function (text1, text2) {
  if (this.Diff_Timeout <= 0) {
    // Don't risk returning a non-optimal diff if we have unlimited time.
    return null;
  }

  var longtext = text1.length > text2.length ? text1 : text2;
  var shorttext = text1.length > text2.length ? text2 : text1;

  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {
    return null; // Pointless.
  }

  var dmp = this; // 'this' becomes 'window' in a closure.

  /**
   * Does a substring of shorttext exist within longtext such that the substring
   * is at least half the length of longtext?
   * Closure, but does not reference any external variables.
   * @param {string} longtext Longer string.
   * @param {string} shorttext Shorter string.
   * @param {number} i Start index of quarter length substring within longtext.
   * @return {Array.<string>} Five element Array, containing the prefix of
   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix
   *     of shorttext and the common middle.  Or null if there was no match.
   * @private
   */

  function diff_halfMatchI_(longtext, shorttext, i) {
    // Start with a 1/4 length substring at position i as a seed.
    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));
    var j = -1;
    var best_common = '';
    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;

    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {
      var prefixLength = dmp.diff_commonPrefix(longtext.substring(i), shorttext.substring(j));
      var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i), shorttext.substring(0, j));

      if (best_common.length < suffixLength + prefixLength) {
        best_common = shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength);
        best_longtext_a = longtext.substring(0, i - suffixLength);
        best_longtext_b = longtext.substring(i + prefixLength);
        best_shorttext_a = shorttext.substring(0, j - suffixLength);
        best_shorttext_b = shorttext.substring(j + prefixLength);
      }
    }

    if (best_common.length * 2 >= longtext.length) {
      return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common];
    } else {
      return null;
    }
  } // First check if the second quarter is the seed for a half-match.


  var hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4)); // Check again based on the third quarter.

  var hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));
  var hm;

  if (!hm1 && !hm2) {
    return null;
  } else if (!hm2) {
    hm = hm1;
  } else if (!hm1) {
    hm = hm2;
  } else {
    // Both matched.  Select the longest.
    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;
  } // A half-match was found, sort out the return data.


  var text1_a, text1_b, text2_a, text2_b;

  if (text1.length > text2.length) {
    text1_a = hm[0];
    text1_b = hm[1];
    text2_a = hm[2];
    text2_b = hm[3];
  } else {
    text2_a = hm[0];
    text2_b = hm[1];
    text1_a = hm[2];
    text1_b = hm[3];
  }

  var mid_common = hm[4];
  return [text1_a, text1_b, text2_a, text2_b, mid_common];
};
/**
 * Reduce the number of edits by eliminating semantically trivial equalities.
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 */


diff_match_patch.prototype.diff_cleanupSemantic = function (diffs) {
  var changes = false;
  var equalities = []; // Stack of indices where equalities are found.

  var equalitiesLength = 0; // Keeping our own length var is faster in JS.

  /** @type {?string} */

  var lastEquality = null; // Always equal to diffs[equalities[equalitiesLength - 1]][1]

  var pointer = 0; // Index of current position.
  // Number of characters that changed prior to the equality.

  var length_insertions1 = 0;
  var length_deletions1 = 0; // Number of characters that changed after the equality.

  var length_insertions2 = 0;
  var length_deletions2 = 0;

  while (pointer < diffs.length) {
    if (diffs[pointer][0] == DIFF_EQUAL) {
      // Equality found.
      equalities[equalitiesLength++] = pointer;
      length_insertions1 = length_insertions2;
      length_deletions1 = length_deletions2;
      length_insertions2 = 0;
      length_deletions2 = 0;
      lastEquality = diffs[pointer][1];
    } else {
      // An insertion or deletion.
      if (diffs[pointer][0] == DIFF_INSERT) {
        length_insertions2 += diffs[pointer][1].length;
      } else {
        length_deletions2 += diffs[pointer][1].length;
      } // Eliminate an equality that is smaller or equal to the edits on both
      // sides of it.


      if (lastEquality && lastEquality.length <= Math.max(length_insertions1, length_deletions1) && lastEquality.length <= Math.max(length_insertions2, length_deletions2)) {
        // Duplicate record.
        diffs.splice(equalities[equalitiesLength - 1], 0, new diff_match_patch.Diff(DIFF_DELETE, lastEquality)); // Change second copy to insert.

        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; // Throw away the equality we just deleted.

        equalitiesLength--; // Throw away the previous equality (it needs to be reevaluated).

        equalitiesLength--;
        pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;
        length_insertions1 = 0; // Reset the counters.

        length_deletions1 = 0;
        length_insertions2 = 0;
        length_deletions2 = 0;
        lastEquality = null;
        changes = true;
      }
    }

    pointer++;
  } // Normalize the diff.


  if (changes) {
    this.diff_cleanupMerge(diffs);
  }

  this.diff_cleanupSemanticLossless(diffs); // Find any overlaps between deletions and insertions.
  // e.g: <del>abcxxx</del><ins>xxxdef</ins>
  //   -> <del>abc</del>xxx<ins>def</ins>
  // e.g: <del>xxxabc</del><ins>defxxx</ins>
  //   -> <ins>def</ins>xxx<del>abc</del>
  // Only extract an overlap if it is as big as the edit ahead or behind it.

  pointer = 1;

  while (pointer < diffs.length) {
    if (diffs[pointer - 1][0] == DIFF_DELETE && diffs[pointer][0] == DIFF_INSERT) {
      var deletion = diffs[pointer - 1][1];
      var insertion = diffs[pointer][1];
      var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);
      var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);

      if (overlap_length1 >= overlap_length2) {
        if (overlap_length1 >= deletion.length / 2 || overlap_length1 >= insertion.length / 2) {
          // Overlap found.  Insert an equality and trim the surrounding edits.
          diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL, insertion.substring(0, overlap_length1)));
          diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlap_length1);
          diffs[pointer + 1][1] = insertion.substring(overlap_length1);
          pointer++;
        }
      } else {
        if (overlap_length2 >= deletion.length / 2 || overlap_length2 >= insertion.length / 2) {
          // Reverse overlap found.
          // Insert an equality and swap and trim the surrounding edits.
          diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL, deletion.substring(0, overlap_length2)));
          diffs[pointer - 1][0] = DIFF_INSERT;
          diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlap_length2);
          diffs[pointer + 1][0] = DIFF_DELETE;
          diffs[pointer + 1][1] = deletion.substring(overlap_length2);
          pointer++;
        }
      }

      pointer++;
    }

    pointer++;
  }
};
/**
 * Look for single edits surrounded on both sides by equalities
 * which can be shifted sideways to align the edit to a word boundary.
 * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 */


diff_match_patch.prototype.diff_cleanupSemanticLossless = function (diffs) {
  /**
   * Given two strings, compute a score representing whether the internal
   * boundary falls on logical boundaries.
   * Scores range from 6 (best) to 0 (worst).
   * Closure, but does not reference any external variables.
   * @param {string} one First string.
   * @param {string} two Second string.
   * @return {number} The score.
   * @private
   */
  function diff_cleanupSemanticScore_(one, two) {
    if (!one || !two) {
      // Edges are the best.
      return 6;
    } // Each port of this function behaves slightly differently due to
    // subtle differences in each language's definition of things like
    // 'whitespace'.  Since this function's purpose is largely cosmetic,
    // the choice has been made to use each language's native features
    // rather than force total conformity.


    var char1 = one.charAt(one.length - 1);
    var char2 = two.charAt(0);
    var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);
    var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);
    var whitespace1 = nonAlphaNumeric1 && char1.match(diff_match_patch.whitespaceRegex_);
    var whitespace2 = nonAlphaNumeric2 && char2.match(diff_match_patch.whitespaceRegex_);
    var lineBreak1 = whitespace1 && char1.match(diff_match_patch.linebreakRegex_);
    var lineBreak2 = whitespace2 && char2.match(diff_match_patch.linebreakRegex_);
    var blankLine1 = lineBreak1 && one.match(diff_match_patch.blanklineEndRegex_);
    var blankLine2 = lineBreak2 && two.match(diff_match_patch.blanklineStartRegex_);

    if (blankLine1 || blankLine2) {
      // Five points for blank lines.
      return 5;
    } else if (lineBreak1 || lineBreak2) {
      // Four points for line breaks.
      return 4;
    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {
      // Three points for end of sentences.
      return 3;
    } else if (whitespace1 || whitespace2) {
      // Two points for whitespace.
      return 2;
    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {
      // One point for non-alphanumeric.
      return 1;
    }

    return 0;
  }

  var pointer = 1; // Intentionally ignore the first and last element (don't need checking).

  while (pointer < diffs.length - 1) {
    if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {
      // This is a single edit surrounded by equalities.
      var equality1 = diffs[pointer - 1][1];
      var edit = diffs[pointer][1];
      var equality2 = diffs[pointer + 1][1]; // First, shift the edit as far left as possible.

      var commonOffset = this.diff_commonSuffix(equality1, edit);

      if (commonOffset) {
        var commonString = edit.substring(edit.length - commonOffset);
        equality1 = equality1.substring(0, equality1.length - commonOffset);
        edit = commonString + edit.substring(0, edit.length - commonOffset);
        equality2 = commonString + equality2;
      } // Second, step character by character right, looking for the best fit.


      var bestEquality1 = equality1;
      var bestEdit = edit;
      var bestEquality2 = equality2;
      var bestScore = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);

      while (edit.charAt(0) === equality2.charAt(0)) {
        equality1 += edit.charAt(0);
        edit = edit.substring(1) + equality2.charAt(0);
        equality2 = equality2.substring(1);
        var score = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2); // The >= encourages trailing rather than leading whitespace on edits.

        if (score >= bestScore) {
          bestScore = score;
          bestEquality1 = equality1;
          bestEdit = edit;
          bestEquality2 = equality2;
        }
      }

      if (diffs[pointer - 1][1] != bestEquality1) {
        // We have an improvement, save it back to the diff.
        if (bestEquality1) {
          diffs[pointer - 1][1] = bestEquality1;
        } else {
          diffs.splice(pointer - 1, 1);
          pointer--;
        }

        diffs[pointer][1] = bestEdit;

        if (bestEquality2) {
          diffs[pointer + 1][1] = bestEquality2;
        } else {
          diffs.splice(pointer + 1, 1);
          pointer--;
        }
      }
    }

    pointer++;
  }
}; // Define some regex patterns for matching boundaries.


diff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;
diff_match_patch.whitespaceRegex_ = /\s/;
diff_match_patch.linebreakRegex_ = /[\r\n]/;
diff_match_patch.blanklineEndRegex_ = /\n\r?\n$/;
diff_match_patch.blanklineStartRegex_ = /^\r?\n\r?\n/;
/**
 * Reduce the number of edits by eliminating operationally trivial equalities.
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 */

diff_match_patch.prototype.diff_cleanupEfficiency = function (diffs) {
  var changes = false;
  var equalities = []; // Stack of indices where equalities are found.

  var equalitiesLength = 0; // Keeping our own length var is faster in JS.

  /** @type {?string} */

  var lastEquality = null; // Always equal to diffs[equalities[equalitiesLength - 1]][1]

  var pointer = 0; // Index of current position.
  // Is there an insertion operation before the last equality.

  var pre_ins = false; // Is there a deletion operation before the last equality.

  var pre_del = false; // Is there an insertion operation after the last equality.

  var post_ins = false; // Is there a deletion operation after the last equality.

  var post_del = false;

  while (pointer < diffs.length) {
    if (diffs[pointer][0] == DIFF_EQUAL) {
      // Equality found.
      if (diffs[pointer][1].length < this.Diff_EditCost && (post_ins || post_del)) {
        // Candidate found.
        equalities[equalitiesLength++] = pointer;
        pre_ins = post_ins;
        pre_del = post_del;
        lastEquality = diffs[pointer][1];
      } else {
        // Not a candidate, and can never become one.
        equalitiesLength = 0;
        lastEquality = null;
      }

      post_ins = post_del = false;
    } else {
      // An insertion or deletion.
      if (diffs[pointer][0] == DIFF_DELETE) {
        post_del = true;
      } else {
        post_ins = true;
      }
      /*
       * Five types to be split:
       * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
       * <ins>A</ins>X<ins>C</ins><del>D</del>
       * <ins>A</ins><del>B</del>X<ins>C</ins>
       * <ins>A</del>X<ins>C</ins><del>D</del>
       * <ins>A</ins><del>B</del>X<del>C</del>
       */


      if (lastEquality && (pre_ins && pre_del && post_ins && post_del || lastEquality.length < this.Diff_EditCost / 2 && pre_ins + pre_del + post_ins + post_del == 3)) {
        // Duplicate record.
        diffs.splice(equalities[equalitiesLength - 1], 0, new diff_match_patch.Diff(DIFF_DELETE, lastEquality)); // Change second copy to insert.

        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;
        equalitiesLength--; // Throw away the equality we just deleted;

        lastEquality = null;

        if (pre_ins && pre_del) {
          // No changes made which could affect previous entry, keep going.
          post_ins = post_del = true;
          equalitiesLength = 0;
        } else {
          equalitiesLength--; // Throw away the previous equality.

          pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;
          post_ins = post_del = false;
        }

        changes = true;
      }
    }

    pointer++;
  }

  if (changes) {
    this.diff_cleanupMerge(diffs);
  }
};
/**
 * Reorder and merge like edit sections.  Merge equalities.
 * Any edit section can move as long as it doesn't cross an equality.
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 */


diff_match_patch.prototype.diff_cleanupMerge = function (diffs) {
  // Add a dummy entry at the end.
  diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));
  var pointer = 0;
  var count_delete = 0;
  var count_insert = 0;
  var text_delete = '';
  var text_insert = '';
  var commonlength;

  while (pointer < diffs.length) {
    switch (diffs[pointer][0]) {
      case DIFF_INSERT:
        count_insert++;
        text_insert += diffs[pointer][1];
        pointer++;
        break;

      case DIFF_DELETE:
        count_delete++;
        text_delete += diffs[pointer][1];
        pointer++;
        break;

      case DIFF_EQUAL:
        // Upon reaching an equality, check for prior redundancies.
        if (count_delete + count_insert > 1) {
          if (count_delete !== 0 && count_insert !== 0) {
            // Factor out any common prefixies.
            commonlength = this.diff_commonPrefix(text_insert, text_delete);

            if (commonlength !== 0) {
              if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] == DIFF_EQUAL) {
                diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength);
              } else {
                diffs.splice(0, 0, new diff_match_patch.Diff(DIFF_EQUAL, text_insert.substring(0, commonlength)));
                pointer++;
              }

              text_insert = text_insert.substring(commonlength);
              text_delete = text_delete.substring(commonlength);
            } // Factor out any common suffixies.


            commonlength = this.diff_commonSuffix(text_insert, text_delete);

            if (commonlength !== 0) {
              diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];
              text_insert = text_insert.substring(0, text_insert.length - commonlength);
              text_delete = text_delete.substring(0, text_delete.length - commonlength);
            }
          } // Delete the offending records and add the merged ones.


          pointer -= count_delete + count_insert;
          diffs.splice(pointer, count_delete + count_insert);

          if (text_delete.length) {
            diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_DELETE, text_delete));
            pointer++;
          }

          if (text_insert.length) {
            diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_INSERT, text_insert));
            pointer++;
          }

          pointer++;
        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {
          // Merge this equality with the previous one.
          diffs[pointer - 1][1] += diffs[pointer][1];
          diffs.splice(pointer, 1);
        } else {
          pointer++;
        }

        count_insert = 0;
        count_delete = 0;
        text_delete = '';
        text_insert = '';
        break;
    }
  }

  if (diffs[diffs.length - 1][1] === '') {
    diffs.pop(); // Remove the dummy entry at the end.
  } // Second pass: look for single edits surrounded on both sides by equalities
  // which can be shifted sideways to eliminate an equality.
  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC


  var changes = false;
  pointer = 1; // Intentionally ignore the first and last element (don't need checking).

  while (pointer < diffs.length - 1) {
    if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {
      // This is a single edit surrounded by equalities.
      if (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {
        // Shift the edit over the previous equality.
        diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length);
        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];
        diffs.splice(pointer - 1, 1);
        changes = true;
      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == diffs[pointer + 1][1]) {
        // Shift the edit over the next equality.
        diffs[pointer - 1][1] += diffs[pointer + 1][1];
        diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];
        diffs.splice(pointer + 1, 1);
        changes = true;
      }
    }

    pointer++;
  } // If shifts were made, the diff needs reordering and another shift sweep.


  if (changes) {
    this.diff_cleanupMerge(diffs);
  }
};
/**
 * loc is a location in text1, compute and return the equivalent location in
 * text2.
 * e.g. 'The cat' vs 'The big cat', 1->1, 5->8
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 * @param {number} loc Location within text1.
 * @return {number} Location within text2.
 */


diff_match_patch.prototype.diff_xIndex = function (diffs, loc) {
  var chars1 = 0;
  var chars2 = 0;
  var last_chars1 = 0;
  var last_chars2 = 0;
  var x;

  for (x = 0; x < diffs.length; x++) {
    if (diffs[x][0] !== DIFF_INSERT) {
      // Equality or deletion.
      chars1 += diffs[x][1].length;
    }

    if (diffs[x][0] !== DIFF_DELETE) {
      // Equality or insertion.
      chars2 += diffs[x][1].length;
    }

    if (chars1 > loc) {
      // Overshot the location.
      break;
    }

    last_chars1 = chars1;
    last_chars2 = chars2;
  } // Was the location was deleted?


  if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {
    return last_chars2;
  } // Add the remaining character length.


  return last_chars2 + (loc - last_chars1);
};
/**
 * Convert a diff array into a pretty HTML report.
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 * @return {string} HTML representation.
 */


diff_match_patch.prototype.diff_prettyHtml = function (diffs) {
  var html = [];
  var pattern_amp = /&/g;
  var pattern_lt = /</g;
  var pattern_gt = />/g;
  var pattern_para = /\n/g;

  for (var x = 0; x < diffs.length; x++) {
    var op = diffs[x][0]; // Operation (insert, delete, equal)

    var data = diffs[x][1]; // Text of change.

    var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;').replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>');

    switch (op) {
      case DIFF_INSERT:
        html[x] = '<ins style="background:#e6ffe6;">' + text + '</ins>';
        break;

      case DIFF_DELETE:
        html[x] = '<del style="background:#ffe6e6;">' + text + '</del>';
        break;

      case DIFF_EQUAL:
        html[x] = '<span>' + text + '</span>';
        break;
    }
  }

  return html.join('');
};
/**
 * Compute and return the source text (all equalities and deletions).
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 * @return {string} Source text.
 */


diff_match_patch.prototype.diff_text1 = function (diffs) {
  var text = [];

  for (var x = 0; x < diffs.length; x++) {
    if (diffs[x][0] !== DIFF_INSERT) {
      text[x] = diffs[x][1];
    }
  }

  return text.join('');
};
/**
 * Compute and return the destination text (all equalities and insertions).
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 * @return {string} Destination text.
 */


diff_match_patch.prototype.diff_text2 = function (diffs) {
  var text = [];

  for (var x = 0; x < diffs.length; x++) {
    if (diffs[x][0] !== DIFF_DELETE) {
      text[x] = diffs[x][1];
    }
  }

  return text.join('');
};
/**
 * Compute the Levenshtein distance; the number of inserted, deleted or
 * substituted characters.
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 * @return {number} Number of changes.
 */


diff_match_patch.prototype.diff_levenshtein = function (diffs) {
  var levenshtein = 0;
  var insertions = 0;
  var deletions = 0;

  for (var x = 0; x < diffs.length; x++) {
    var op = diffs[x][0];
    var data = diffs[x][1];

    switch (op) {
      case DIFF_INSERT:
        insertions += data.length;
        break;

      case DIFF_DELETE:
        deletions += data.length;
        break;

      case DIFF_EQUAL:
        // A deletion and an insertion is one substitution.
        levenshtein += Math.max(insertions, deletions);
        insertions = 0;
        deletions = 0;
        break;
    }
  }

  levenshtein += Math.max(insertions, deletions);
  return levenshtein;
};
/**
 * Crush the diff into an encoded string which describes the operations
 * required to transform text1 into text2.
 * E.g. =3\t-2\t+ing  -> Keep 3 chars, delete 2 chars, insert 'ing'.
 * Operations are tab-separated.  Inserted text is escaped using %xx notation.
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.
 * @return {string} Delta text.
 */


diff_match_patch.prototype.diff_toDelta = function (diffs) {
  var text = [];

  for (var x = 0; x < diffs.length; x++) {
    switch (diffs[x][0]) {
      case DIFF_INSERT:
        text[x] = '+' + encodeURI(diffs[x][1]);
        break;

      case DIFF_DELETE:
        text[x] = '-' + diffs[x][1].length;
        break;

      case DIFF_EQUAL:
        text[x] = '=' + diffs[x][1].length;
        break;
    }
  }

  return text.join('\t').replace(/%20/g, ' ');
};
/**
 * Given the original text1, and an encoded string which describes the
 * operations required to transform text1 into text2, compute the full diff.
 * @param {string} text1 Source string for the diff.
 * @param {string} delta Delta text.
 * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.
 * @throws {!Error} If invalid input.
 */


diff_match_patch.prototype.diff_fromDelta = function (text1, delta) {
  var diffs = [];
  var diffsLength = 0; // Keeping our own length var is faster in JS.

  var pointer = 0; // Cursor in text1

  var tokens = delta.split(/\t/g);

  for (var x = 0; x < tokens.length; x++) {
    // Each token begins with a one character parameter which specifies the
    // operation of this token (delete, insert, equality).
    var param = tokens[x].substring(1);

    switch (tokens[x].charAt(0)) {
      case '+':
        try {
          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_INSERT, decodeURI(param));
        } catch (ex) {
          // Malformed URI sequence.
          throw new Error('Illegal escape in diff_fromDelta: ' + param);
        }

        break;

      case '-': // Fall through.

      case '=':
        var n = parseInt(param, 10);

        if (isNaN(n) || n < 0) {
          throw new Error('Invalid number in diff_fromDelta: ' + param);
        }

        var text = text1.substring(pointer, pointer += n);

        if (tokens[x].charAt(0) == '=') {
          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_EQUAL, text);
        } else {
          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_DELETE, text);
        }

        break;

      default:
        // Blank tokens are ok (from a trailing \t).
        // Anything else is an error.
        if (tokens[x]) {
          throw new Error('Invalid diff operation in diff_fromDelta: ' + tokens[x]);
        }

    }
  }

  if (pointer != text1.length) {
    throw new Error('Delta length (' + pointer + ') does not equal source text length (' + text1.length + ').');
  }

  return diffs;
}; //  MATCH FUNCTIONS

/**
 * Locate the best instance of 'pattern' in 'text' near 'loc'.
 * @param {string} text The text to search.
 * @param {string} pattern The pattern to search for.
 * @param {number} loc The location to search around.
 * @return {number} Best match index or -1.
 */


diff_match_patch.prototype.match_main = function (text, pattern, loc) {
  // Check for null inputs.
  if (text == null || pattern == null || loc == null) {
    throw new Error('Null input. (match_main)');
  }

  loc = Math.max(0, Math.min(loc, text.length));

  if (text == pattern) {
    // Shortcut (potentially not guaranteed by the algorithm)
    return 0;
  } else if (!text.length) {
    // Nothing to match.
    return -1;
  } else if (text.substring(loc, loc + pattern.length) == pattern) {
    // Perfect match at the perfect spot!  (Includes case of null pattern)
    return loc;
  } else {
    // Do a fuzzy compare.
    return this.match_bitap_(text, pattern, loc);
  }
};
/**
 * Locate the best instance of 'pattern' in 'text' near 'loc' using the
 * Bitap algorithm.
 * @param {string} text The text to search.
 * @param {string} pattern The pattern to search for.
 * @param {number} loc The location to search around.
 * @return {number} Best match index or -1.
 * @private
 */


diff_match_patch.prototype.match_bitap_ = function (text, pattern, loc) {
  if (pattern.length > this.Match_MaxBits) {
    throw new Error('Pattern too long for this browser.');
  } // Initialise the alphabet.


  var s = this.match_alphabet_(pattern);
  var dmp = this; // 'this' becomes 'window' in a closure.

  /**
   * Compute and return the score for a match with e errors and x location.
   * Accesses loc and pattern through being a closure.
   * @param {number} e Number of errors in match.
   * @param {number} x Location of match.
   * @return {number} Overall score for match (0.0 = good, 1.0 = bad).
   * @private
   */

  function match_bitapScore_(e, x) {
    var accuracy = e / pattern.length;
    var proximity = Math.abs(loc - x);

    if (!dmp.Match_Distance) {
      // Dodge divide by zero error.
      return proximity ? 1.0 : accuracy;
    }

    return accuracy + proximity / dmp.Match_Distance;
  } // Highest score beyond which we give up.


  var score_threshold = this.Match_Threshold; // Is there a nearby exact match? (speedup)

  var best_loc = text.indexOf(pattern, loc);

  if (best_loc != -1) {
    score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold); // What about in the other direction? (speedup)

    best_loc = text.lastIndexOf(pattern, loc + pattern.length);

    if (best_loc != -1) {
      score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);
    }
  } // Initialise the bit arrays.


  var matchmask = 1 << pattern.length - 1;
  best_loc = -1;
  var bin_min, bin_mid;
  var bin_max = pattern.length + text.length;
  var last_rd;

  for (var d = 0; d < pattern.length; d++) {
    // Scan for the best match; each iteration allows for one more error.
    // Run a binary search to determine how far from 'loc' we can stray at this
    // error level.
    bin_min = 0;
    bin_mid = bin_max;

    while (bin_min < bin_mid) {
      if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {
        bin_min = bin_mid;
      } else {
        bin_max = bin_mid;
      }

      bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);
    } // Use the result from this iteration as the maximum for the next.


    bin_max = bin_mid;
    var start = Math.max(1, loc - bin_mid + 1);
    var finish = Math.min(loc + bin_mid, text.length) + pattern.length;
    var rd = Array(finish + 2);
    rd[finish + 1] = (1 << d) - 1;

    for (var j = finish; j >= start; j--) {
      // The alphabet (s) is a sparse hash, so the following line generates
      // warnings.
      var charMatch = s[text.charAt(j - 1)];

      if (d === 0) {
        // First pass: exact match.
        rd[j] = (rd[j + 1] << 1 | 1) & charMatch;
      } else {
        // Subsequent passes: fuzzy match.
        rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((last_rd[j + 1] | last_rd[j]) << 1 | 1) | last_rd[j + 1];
      }

      if (rd[j] & matchmask) {
        var score = match_bitapScore_(d, j - 1); // This match will almost certainly be better than any existing match.
        // But check anyway.

        if (score <= score_threshold) {
          // Told you so.
          score_threshold = score;
          best_loc = j - 1;

          if (best_loc > loc) {
            // When passing loc, don't exceed our current distance from loc.
            start = Math.max(1, 2 * loc - best_loc);
          } else {
            // Already passed loc, downhill from here on in.
            break;
          }
        }
      }
    } // No hope for a (better) match at greater error levels.


    if (match_bitapScore_(d + 1, loc) > score_threshold) {
      break;
    }

    last_rd = rd;
  }

  return best_loc;
};
/**
 * Initialise the alphabet for the Bitap algorithm.
 * @param {string} pattern The text to encode.
 * @return {!Object} Hash of character locations.
 * @private
 */


diff_match_patch.prototype.match_alphabet_ = function (pattern) {
  var s = {};

  for (var i = 0; i < pattern.length; i++) {
    s[pattern.charAt(i)] = 0;
  }

  for (var i = 0; i < pattern.length; i++) {
    s[pattern.charAt(i)] |= 1 << pattern.length - i - 1;
  }

  return s;
}; //  PATCH FUNCTIONS

/**
 * Increase the context until it is unique,
 * but don't let the pattern expand beyond Match_MaxBits.
 * @param {!diff_match_patch.patch_obj} patch The patch to grow.
 * @param {string} text Source text.
 * @private
 */


diff_match_patch.prototype.patch_addContext_ = function (patch, text) {
  if (text.length == 0) {
    return;
  }

  if (patch.start2 === null) {
    throw Error('patch not initialized');
  }

  var pattern = text.substring(patch.start2, patch.start2 + patch.length1);
  var padding = 0; // Look for the first and last matches of pattern in text.  If two different
  // matches are found, increase the pattern length.

  while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length < this.Match_MaxBits - this.Patch_Margin - this.Patch_Margin) {
    padding += this.Patch_Margin;
    pattern = text.substring(patch.start2 - padding, patch.start2 + patch.length1 + padding);
  } // Add one chunk for good luck.


  padding += this.Patch_Margin; // Add the prefix.

  var prefix = text.substring(patch.start2 - padding, patch.start2);

  if (prefix) {
    patch.diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, prefix));
  } // Add the suffix.


  var suffix = text.substring(patch.start2 + patch.length1, patch.start2 + patch.length1 + padding);

  if (suffix) {
    patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, suffix));
  } // Roll back the start points.


  patch.start1 -= prefix.length;
  patch.start2 -= prefix.length; // Extend the lengths.

  patch.length1 += prefix.length + suffix.length;
  patch.length2 += prefix.length + suffix.length;
};
/**
 * Compute a list of patches to turn text1 into text2.
 * Use diffs if provided, otherwise compute it ourselves.
 * There are four ways to call this function, depending on what data is
 * available to the caller:
 * Method 1:
 * a = text1, b = text2
 * Method 2:
 * a = diffs
 * Method 3 (optimal):
 * a = text1, b = diffs
 * Method 4 (deprecated, use method 3):
 * a = text1, b = text2, c = diffs
 *
 * @param {string|!Array.<!diff_match_patch.Diff>} a text1 (methods 1,3,4) or
 * Array of diff tuples for text1 to text2 (method 2).
 * @param {string|!Array.<!diff_match_patch.Diff>=} opt_b text2 (methods 1,4) or
 * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).
 * @param {string|!Array.<!diff_match_patch.Diff>=} opt_c Array of diff tuples
 * for text1 to text2 (method 4) or undefined (methods 1,2,3).
 * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.
 */


diff_match_patch.prototype.patch_make = function (a, opt_b, opt_c) {
  var text1, diffs;

  if (typeof a == 'string' && typeof opt_b == 'string' && typeof opt_c == 'undefined') {
    // Method 1: text1, text2
    // Compute diffs from text1 and text2.
    text1 =
    /** @type {string} */
    a;
    diffs = this.diff_main(text1,
    /** @type {string} */
    opt_b, true);

    if (diffs.length > 2) {
      this.diff_cleanupSemantic(diffs);
      this.diff_cleanupEfficiency(diffs);
    }
  } else if (a && _typeof(a) == 'object' && typeof opt_b == 'undefined' && typeof opt_c == 'undefined') {
    // Method 2: diffs
    // Compute text1 from diffs.
    diffs =
    /** @type {!Array.<!diff_match_patch.Diff>} */
    a;
    text1 = this.diff_text1(diffs);
  } else if (typeof a == 'string' && opt_b && _typeof(opt_b) == 'object' && typeof opt_c == 'undefined') {
    // Method 3: text1, diffs
    text1 =
    /** @type {string} */
    a;
    diffs =
    /** @type {!Array.<!diff_match_patch.Diff>} */
    opt_b;
  } else if (typeof a == 'string' && typeof opt_b == 'string' && opt_c && _typeof(opt_c) == 'object') {
    // Method 4: text1, text2, diffs
    // text2 is not used.
    text1 =
    /** @type {string} */
    a;
    diffs =
    /** @type {!Array.<!diff_match_patch.Diff>} */
    opt_c;
  } else {
    throw new Error('Unknown call format to patch_make.');
  }

  if (diffs.length === 0) {
    return []; // Get rid of the null case.
  }

  var patches = [];
  var patch = new diff_match_patch.patch_obj();
  var patchDiffLength = 0; // Keeping our own length var is faster in JS.

  var char_count1 = 0; // Number of characters into the text1 string.

  var char_count2 = 0; // Number of characters into the text2 string.
  // Start with text1 (prepatch_text) and apply the diffs until we arrive at
  // text2 (postpatch_text).  We recreate the patches one by one to determine
  // context info.

  var prepatch_text = text1;
  var postpatch_text = text1;

  for (var x = 0; x < diffs.length; x++) {
    var diff_type = diffs[x][0];
    var diff_text = diffs[x][1];

    if (!patchDiffLength && diff_type !== DIFF_EQUAL) {
      // A new patch starts here.
      patch.start1 = char_count1;
      patch.start2 = char_count2;
    }

    switch (diff_type) {
      case DIFF_INSERT:
        patch.diffs[patchDiffLength++] = diffs[x];
        patch.length2 += diff_text.length;
        postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2);
        break;

      case DIFF_DELETE:
        patch.length1 += diff_text.length;
        patch.diffs[patchDiffLength++] = diffs[x];
        postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length);
        break;

      case DIFF_EQUAL:
        if (diff_text.length <= 2 * this.Patch_Margin && patchDiffLength && diffs.length != x + 1) {
          // Small equality inside a patch.
          patch.diffs[patchDiffLength++] = diffs[x];
          patch.length1 += diff_text.length;
          patch.length2 += diff_text.length;
        } else if (diff_text.length >= 2 * this.Patch_Margin) {
          // Time for a new patch.
          if (patchDiffLength) {
            this.patch_addContext_(patch, prepatch_text);
            patches.push(patch);
            patch = new diff_match_patch.patch_obj();
            patchDiffLength = 0; // Unlike Unidiff, our patch lists have a rolling context.
            // https://github.com/google/diff-match-patch/wiki/Unidiff
            // Update prepatch text & pos to reflect the application of the
            // just completed patch.

            prepatch_text = postpatch_text;
            char_count1 = char_count2;
          }
        }

        break;
    } // Update the current character count.


    if (diff_type !== DIFF_INSERT) {
      char_count1 += diff_text.length;
    }

    if (diff_type !== DIFF_DELETE) {
      char_count2 += diff_text.length;
    }
  } // Pick up the leftover patch if not empty.


  if (patchDiffLength) {
    this.patch_addContext_(patch, prepatch_text);
    patches.push(patch);
  }

  return patches;
};
/**
 * Given an array of patches, return another array that is identical.
 * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.
 * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.
 */


diff_match_patch.prototype.patch_deepCopy = function (patches) {
  // Making deep copies is hard in JavaScript.
  var patchesCopy = [];

  for (var x = 0; x < patches.length; x++) {
    var patch = patches[x];
    var patchCopy = new diff_match_patch.patch_obj();
    patchCopy.diffs = [];

    for (var y = 0; y < patch.diffs.length; y++) {
      patchCopy.diffs[y] = new diff_match_patch.Diff(patch.diffs[y][0], patch.diffs[y][1]);
    }

    patchCopy.start1 = patch.start1;
    patchCopy.start2 = patch.start2;
    patchCopy.length1 = patch.length1;
    patchCopy.length2 = patch.length2;
    patchesCopy[x] = patchCopy;
  }

  return patchesCopy;
};
/**
 * Merge a set of patches onto the text.  Return a patched text, as well
 * as a list of true/false values indicating which patches were applied.
 * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.
 * @param {string} text Old text.
 * @return {!Array.<string|!Array.<boolean>>} Two element Array, containing the
 *      new text and an array of boolean values.
 */


diff_match_patch.prototype.patch_apply = function (patches, text) {
  if (patches.length == 0) {
    return [text, []];
  } // Deep copy the patches so that no changes are made to originals.


  patches = this.patch_deepCopy(patches);
  var nullPadding = this.patch_addPadding(patches);
  text = nullPadding + text + nullPadding;
  this.patch_splitMax(patches); // delta keeps track of the offset between the expected and actual location
  // of the previous patch.  If there are patches expected at positions 10 and
  // 20, but the first patch was found at 12, delta is 2 and the second patch
  // has an effective expected position of 22.

  var delta = 0;
  var results = [];

  for (var x = 0; x < patches.length; x++) {
    var expected_loc = patches[x].start2 + delta;
    var text1 = this.diff_text1(patches[x].diffs);
    var start_loc;
    var end_loc = -1;

    if (text1.length > this.Match_MaxBits) {
      // patch_splitMax will only provide an oversized pattern in the case of
      // a monster delete.
      start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits), expected_loc);

      if (start_loc != -1) {
        end_loc = this.match_main(text, text1.substring(text1.length - this.Match_MaxBits), expected_loc + text1.length - this.Match_MaxBits);

        if (end_loc == -1 || start_loc >= end_loc) {
          // Can't find valid trailing context.  Drop this patch.
          start_loc = -1;
        }
      }
    } else {
      start_loc = this.match_main(text, text1, expected_loc);
    }

    if (start_loc == -1) {
      // No match found.  :(
      results[x] = false; // Subtract the delta for this failed patch from subsequent patches.

      delta -= patches[x].length2 - patches[x].length1;
    } else {
      // Found a match.  :)
      results[x] = true;
      delta = start_loc - expected_loc;
      var text2;

      if (end_loc == -1) {
        text2 = text.substring(start_loc, start_loc + text1.length);
      } else {
        text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);
      }

      if (text1 == text2) {
        // Perfect match, just shove the replacement text in.
        text = text.substring(0, start_loc) + this.diff_text2(patches[x].diffs) + text.substring(start_loc + text1.length);
      } else {
        // Imperfect match.  Run a diff to get a framework of equivalent
        // indices.
        var diffs = this.diff_main(text1, text2, false);

        if (text1.length > this.Match_MaxBits && this.diff_levenshtein(diffs) / text1.length > this.Patch_DeleteThreshold) {
          // The end points match, but the content is unacceptably bad.
          results[x] = false;
        } else {
          this.diff_cleanupSemanticLossless(diffs);
          var index1 = 0;
          var index2;

          for (var y = 0; y < patches[x].diffs.length; y++) {
            var mod = patches[x].diffs[y];

            if (mod[0] !== DIFF_EQUAL) {
              index2 = this.diff_xIndex(diffs, index1);
            }

            if (mod[0] === DIFF_INSERT) {
              // Insertion
              text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2);
            } else if (mod[0] === DIFF_DELETE) {
              // Deletion
              text = text.substring(0, start_loc + index2) + text.substring(start_loc + this.diff_xIndex(diffs, index1 + mod[1].length));
            }

            if (mod[0] !== DIFF_DELETE) {
              index1 += mod[1].length;
            }
          }
        }
      }
    }
  } // Strip the padding off.


  text = text.substring(nullPadding.length, text.length - nullPadding.length);
  return [text, results];
};
/**
 * Add some padding on text start and end so that edges can match something.
 * Intended to be called only from within patch_apply.
 * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.
 * @return {string} The padding string added to each side.
 */


diff_match_patch.prototype.patch_addPadding = function (patches) {
  var paddingLength = this.Patch_Margin;
  var nullPadding = '';

  for (var x = 1; x <= paddingLength; x++) {
    nullPadding += String.fromCharCode(x);
  } // Bump all the patches forward.


  for (var x = 0; x < patches.length; x++) {
    patches[x].start1 += paddingLength;
    patches[x].start2 += paddingLength;
  } // Add some padding on start of first diff.


  var patch = patches[0];
  var diffs = patch.diffs;

  if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {
    // Add nullPadding equality.
    diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));
    patch.start1 -= paddingLength; // Should be 0.

    patch.start2 -= paddingLength; // Should be 0.

    patch.length1 += paddingLength;
    patch.length2 += paddingLength;
  } else if (paddingLength > diffs[0][1].length) {
    // Grow first equality.
    var extraLength = paddingLength - diffs[0][1].length;
    diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];
    patch.start1 -= extraLength;
    patch.start2 -= extraLength;
    patch.length1 += extraLength;
    patch.length2 += extraLength;
  } // Add some padding on end of last diff.


  patch = patches[patches.length - 1];
  diffs = patch.diffs;

  if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {
    // Add nullPadding equality.
    diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));
    patch.length1 += paddingLength;
    patch.length2 += paddingLength;
  } else if (paddingLength > diffs[diffs.length - 1][1].length) {
    // Grow last equality.
    var extraLength = paddingLength - diffs[diffs.length - 1][1].length;
    diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);
    patch.length1 += extraLength;
    patch.length2 += extraLength;
  }

  return nullPadding;
};
/**
 * Look through the patches and break up any which are longer than the maximum
 * limit of the match algorithm.
 * Intended to be called only from within patch_apply.
 * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.
 */


diff_match_patch.prototype.patch_splitMax = function (patches) {
  var patch_size = this.Match_MaxBits;

  for (var x = 0; x < patches.length; x++) {
    if (patches[x].length1 <= patch_size) {
      continue;
    }

    var bigpatch = patches[x]; // Remove the big old patch.

    patches.splice(x--, 1);
    var start1 = bigpatch.start1;
    var start2 = bigpatch.start2;
    var precontext = '';

    while (bigpatch.diffs.length !== 0) {
      // Create one of several smaller patches.
      var patch = new diff_match_patch.patch_obj();
      var empty = true;
      patch.start1 = start1 - precontext.length;
      patch.start2 = start2 - precontext.length;

      if (precontext !== '') {
        patch.length1 = patch.length2 = precontext.length;
        patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, precontext));
      }

      while (bigpatch.diffs.length !== 0 && patch.length1 < patch_size - this.Patch_Margin) {
        var diff_type = bigpatch.diffs[0][0];
        var diff_text = bigpatch.diffs[0][1];

        if (diff_type === DIFF_INSERT) {
          // Insertions are harmless.
          patch.length2 += diff_text.length;
          start2 += diff_text.length;
          patch.diffs.push(bigpatch.diffs.shift());
          empty = false;
        } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 && patch.diffs[0][0] == DIFF_EQUAL && diff_text.length > 2 * patch_size) {
          // This is a large deletion.  Let it pass in one chunk.
          patch.length1 += diff_text.length;
          start1 += diff_text.length;
          empty = false;
          patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));
          bigpatch.diffs.shift();
        } else {
          // Deletion or equality.  Only take as much as we can stomach.
          diff_text = diff_text.substring(0, patch_size - patch.length1 - this.Patch_Margin);
          patch.length1 += diff_text.length;
          start1 += diff_text.length;

          if (diff_type === DIFF_EQUAL) {
            patch.length2 += diff_text.length;
            start2 += diff_text.length;
          } else {
            empty = false;
          }

          patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));

          if (diff_text == bigpatch.diffs[0][1]) {
            bigpatch.diffs.shift();
          } else {
            bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length);
          }
        }
      } // Compute the head context for the next patch.


      precontext = this.diff_text2(patch.diffs);
      precontext = precontext.substring(precontext.length - this.Patch_Margin); // Append the end context for this patch.

      var postcontext = this.diff_text1(bigpatch.diffs).substring(0, this.Patch_Margin);

      if (postcontext !== '') {
        patch.length1 += postcontext.length;
        patch.length2 += postcontext.length;

        if (patch.diffs.length !== 0 && patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {
          patch.diffs[patch.diffs.length - 1][1] += postcontext;
        } else {
          patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, postcontext));
        }
      }

      if (!empty) {
        patches.splice(++x, 0, patch);
      }
    }
  }
};
/**
 * Take a list of patches and return a textual representation.
 * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.
 * @return {string} Text representation of patches.
 */


diff_match_patch.prototype.patch_toText = function (patches) {
  var text = [];

  for (var x = 0; x < patches.length; x++) {
    text[x] = patches[x];
  }

  return text.join('');
};
/**
 * Parse a textual representation of patches and return a list of Patch objects.
 * @param {string} textline Text representation of patches.
 * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.
 * @throws {!Error} If invalid input.
 */


diff_match_patch.prototype.patch_fromText = function (textline) {
  var patches = [];

  if (!textline) {
    return patches;
  }

  var text = textline.split('\n');
  var textPointer = 0;
  var patchHeader = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;

  while (textPointer < text.length) {
    var m = text[textPointer].match(patchHeader);

    if (!m) {
      throw new Error('Invalid patch string: ' + text[textPointer]);
    }

    var patch = new diff_match_patch.patch_obj();
    patches.push(patch);
    patch.start1 = parseInt(m[1], 10);

    if (m[2] === '') {
      patch.start1--;
      patch.length1 = 1;
    } else if (m[2] == '0') {
      patch.length1 = 0;
    } else {
      patch.start1--;
      patch.length1 = parseInt(m[2], 10);
    }

    patch.start2 = parseInt(m[3], 10);

    if (m[4] === '') {
      patch.start2--;
      patch.length2 = 1;
    } else if (m[4] == '0') {
      patch.length2 = 0;
    } else {
      patch.start2--;
      patch.length2 = parseInt(m[4], 10);
    }

    textPointer++;

    while (textPointer < text.length) {
      var sign = text[textPointer].charAt(0);

      try {
        var line = decodeURI(text[textPointer].substring(1));
      } catch (ex) {
        // Malformed URI sequence.
        throw new Error('Illegal escape in patch_fromText: ' + line);
      }

      if (sign == '-') {
        // Deletion.
        patch.diffs.push(new diff_match_patch.Diff(DIFF_DELETE, line));
      } else if (sign == '+') {
        // Insertion.
        patch.diffs.push(new diff_match_patch.Diff(DIFF_INSERT, line));
      } else if (sign == ' ') {
        // Minor equality.
        patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, line));
      } else if (sign == '@') {
        // Start of next patch.
        break;
      } else if (sign === '') {// Blank line?  Whatever.
      } else {
        // WTF?
        throw new Error('Invalid patch mode "' + sign + '" in: ' + line);
      }

      textPointer++;
    }
  }

  return patches;
};
/**
 * Class representing one patch operation.
 * @constructor
 */


diff_match_patch.patch_obj = function () {
  /** @type {!Array.<!diff_match_patch.Diff>} */
  this.diffs = [];
  /** @type {?number} */

  this.start1 = null;
  /** @type {?number} */

  this.start2 = null;
  /** @type {number} */

  this.length1 = 0;
  /** @type {number} */

  this.length2 = 0;
};
/**
 * Emulate GNU diff's format.
 * Header: @@ -382,8 +481,9 @@
 * Indices are printed as 1-based, not 0-based.
 * @return {string} The GNU diff string.
 */


diff_match_patch.patch_obj.prototype.toString = function () {
  var coords1, coords2;

  if (this.length1 === 0) {
    coords1 = this.start1 + ',0';
  } else if (this.length1 == 1) {
    coords1 = this.start1 + 1;
  } else {
    coords1 = this.start1 + 1 + ',' + this.length1;
  }

  if (this.length2 === 0) {
    coords2 = this.start2 + ',0';
  } else if (this.length2 == 1) {
    coords2 = this.start2 + 1;
  } else {
    coords2 = this.start2 + 1 + ',' + this.length2;
  }

  var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\n'];
  var op; // Escape the body of the patch with %xx notation.

  for (var x = 0; x < this.diffs.length; x++) {
    switch (this.diffs[x][0]) {
      case DIFF_INSERT:
        op = '+';
        break;

      case DIFF_DELETE:
        op = '-';
        break;

      case DIFF_EQUAL:
        op = ' ';
        break;
    }

    text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\n';
  }

  return text.join('').replace(/%20/g, ' ');
}; // The following export code was added by @ForbesLindesay


module.exports = diff_match_patch;
module.exports['diff_match_patch'] = diff_match_patch;
module.exports['DIFF_DELETE'] = DIFF_DELETE;
module.exports['DIFF_INSERT'] = DIFF_INSERT;
module.exports['DIFF_EQUAL'] = DIFF_EQUAL;

/***/ }),

/***/ "./node_modules/lodash.get/index.js":
/*!******************************************!*\
  !*** ./node_modules/lodash.get/index.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(global) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

/**
 * lodash (Custom Build) <https://lodash.com/>
 * Build: `lodash modularize exports="npm" -o ./`
 * Copyright jQuery Foundation and other contributors <https://jquery.org/>
 * Released under MIT license <https://lodash.com/license>
 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 */

/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';
/** Used to stand-in for `undefined` hash values. */

var HASH_UNDEFINED = '__lodash_hash_undefined__';
/** Used as references for various `Number` constants. */

var INFINITY = 1 / 0;
/** `Object#toString` result references. */

var funcTag = '[object Function]',
    genTag = '[object GeneratorFunction]',
    symbolTag = '[object Symbol]';
/** Used to match property names within property paths. */

var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
    reIsPlainProp = /^\w*$/,
    reLeadingDot = /^\./,
    rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
/**
 * Used to match `RegExp`
 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
 */

var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
/** Used to match backslashes in property paths. */

var reEscapeChar = /\\(\\)?/g;
/** Used to detect host constructors (Safari). */

var reIsHostCtor = /^\[object .+?Constructor\]$/;
/** Detect free variable `global` from Node.js. */

var freeGlobal = (typeof global === "undefined" ? "undefined" : _typeof(global)) == 'object' && global && global.Object === Object && global;
/** Detect free variable `self`. */

var freeSelf = (typeof self === "undefined" ? "undefined" : _typeof(self)) == 'object' && self && self.Object === Object && self;
/** Used as a reference to the global object. */

var root = freeGlobal || freeSelf || Function('return this')();
/**
 * Gets the value at `key` of `object`.
 *
 * @private
 * @param {Object} [object] The object to query.
 * @param {string} key The key of the property to get.
 * @returns {*} Returns the property value.
 */

function getValue(object, key) {
  return object == null ? undefined : object[key];
}
/**
 * Checks if `value` is a host object in IE < 9.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
 */


function isHostObject(value) {
  // Many host objects are `Object` objects that can coerce to strings
  // despite having improperly defined `toString` methods.
  var result = false;

  if (value != null && typeof value.toString != 'function') {
    try {
      result = !!(value + '');
    } catch (e) {}
  }

  return result;
}
/** Used for built-in method references. */


var arrayProto = Array.prototype,
    funcProto = Function.prototype,
    objectProto = Object.prototype;
/** Used to detect overreaching core-js shims. */

var coreJsData = root['__core-js_shared__'];
/** Used to detect methods masquerading as native. */

var maskSrcKey = function () {
  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
  return uid ? 'Symbol(src)_1.' + uid : '';
}();
/** Used to resolve the decompiled source of functions. */


var funcToString = funcProto.toString;
/** Used to check objects for own properties. */

var hasOwnProperty = objectProto.hasOwnProperty;
/**
 * Used to resolve the
 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
 * of values.
 */

var objectToString = objectProto.toString;
/** Used to detect if a method is native. */

var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
/** Built-in value references. */

var _Symbol = root.Symbol,
    splice = arrayProto.splice;
/* Built-in method references that are verified to be native. */

var Map = getNative(root, 'Map'),
    nativeCreate = getNative(Object, 'create');
/** Used to convert symbols to primitives and strings. */

var symbolProto = _Symbol ? _Symbol.prototype : undefined,
    symbolToString = symbolProto ? symbolProto.toString : undefined;
/**
 * Creates a hash object.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

function Hash(entries) {
  var index = -1,
      length = entries ? entries.length : 0;
  this.clear();

  while (++index < length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}
/**
 * Removes all key-value entries from the hash.
 *
 * @private
 * @name clear
 * @memberOf Hash
 */


function hashClear() {
  this.__data__ = nativeCreate ? nativeCreate(null) : {};
}
/**
 * Removes `key` and its value from the hash.
 *
 * @private
 * @name delete
 * @memberOf Hash
 * @param {Object} hash The hash to modify.
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */


function hashDelete(key) {
  return this.has(key) && delete this.__data__[key];
}
/**
 * Gets the hash value for `key`.
 *
 * @private
 * @name get
 * @memberOf Hash
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */


function hashGet(key) {
  var data = this.__data__;

  if (nativeCreate) {
    var result = data[key];
    return result === HASH_UNDEFINED ? undefined : result;
  }

  return hasOwnProperty.call(data, key) ? data[key] : undefined;
}
/**
 * Checks if a hash value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf Hash
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */


function hashHas(key) {
  var data = this.__data__;
  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
}
/**
 * Sets the hash `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf Hash
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the hash instance.
 */


function hashSet(key, value) {
  var data = this.__data__;
  data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;
  return this;
} // Add methods to `Hash`.


Hash.prototype.clear = hashClear;
Hash.prototype['delete'] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
/**
 * Creates an list cache object.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

function ListCache(entries) {
  var index = -1,
      length = entries ? entries.length : 0;
  this.clear();

  while (++index < length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}
/**
 * Removes all key-value entries from the list cache.
 *
 * @private
 * @name clear
 * @memberOf ListCache
 */


function listCacheClear() {
  this.__data__ = [];
}
/**
 * Removes `key` and its value from the list cache.
 *
 * @private
 * @name delete
 * @memberOf ListCache
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */


function listCacheDelete(key) {
  var data = this.__data__,
      index = assocIndexOf(data, key);

  if (index < 0) {
    return false;
  }

  var lastIndex = data.length - 1;

  if (index == lastIndex) {
    data.pop();
  } else {
    splice.call(data, index, 1);
  }

  return true;
}
/**
 * Gets the list cache value for `key`.
 *
 * @private
 * @name get
 * @memberOf ListCache
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */


function listCacheGet(key) {
  var data = this.__data__,
      index = assocIndexOf(data, key);
  return index < 0 ? undefined : data[index][1];
}
/**
 * Checks if a list cache value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf ListCache
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */


function listCacheHas(key) {
  return assocIndexOf(this.__data__, key) > -1;
}
/**
 * Sets the list cache `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf ListCache
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the list cache instance.
 */


function listCacheSet(key, value) {
  var data = this.__data__,
      index = assocIndexOf(data, key);

  if (index < 0) {
    data.push([key, value]);
  } else {
    data[index][1] = value;
  }

  return this;
} // Add methods to `ListCache`.


ListCache.prototype.clear = listCacheClear;
ListCache.prototype['delete'] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;
/**
 * Creates a map cache object to store key-value pairs.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

function MapCache(entries) {
  var index = -1,
      length = entries ? entries.length : 0;
  this.clear();

  while (++index < length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}
/**
 * Removes all key-value entries from the map.
 *
 * @private
 * @name clear
 * @memberOf MapCache
 */


function mapCacheClear() {
  this.__data__ = {
    'hash': new Hash(),
    'map': new (Map || ListCache)(),
    'string': new Hash()
  };
}
/**
 * Removes `key` and its value from the map.
 *
 * @private
 * @name delete
 * @memberOf MapCache
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */


function mapCacheDelete(key) {
  return getMapData(this, key)['delete'](key);
}
/**
 * Gets the map value for `key`.
 *
 * @private
 * @name get
 * @memberOf MapCache
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */


function mapCacheGet(key) {
  return getMapData(this, key).get(key);
}
/**
 * Checks if a map value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf MapCache
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */


function mapCacheHas(key) {
  return getMapData(this, key).has(key);
}
/**
 * Sets the map `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf MapCache
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the map cache instance.
 */


function mapCacheSet(key, value) {
  getMapData(this, key).set(key, value);
  return this;
} // Add methods to `MapCache`.


MapCache.prototype.clear = mapCacheClear;
MapCache.prototype['delete'] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;
/**
 * Gets the index at which the `key` is found in `array` of key-value pairs.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} key The key to search for.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */

function assocIndexOf(array, key) {
  var length = array.length;

  while (length--) {
    if (eq(array[length][0], key)) {
      return length;
    }
  }

  return -1;
}
/**
 * The base implementation of `_.get` without support for default values.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Array|string} path The path of the property to get.
 * @returns {*} Returns the resolved value.
 */


function baseGet(object, path) {
  path = isKey(path, object) ? [path] : castPath(path);
  var index = 0,
      length = path.length;

  while (object != null && index < length) {
    object = object[toKey(path[index++])];
  }

  return index && index == length ? object : undefined;
}
/**
 * The base implementation of `_.isNative` without bad shim checks.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a native function,
 *  else `false`.
 */


function baseIsNative(value) {
  if (!isObject(value) || isMasked(value)) {
    return false;
  }

  var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
  return pattern.test(toSource(value));
}
/**
 * The base implementation of `_.toString` which doesn't convert nullish
 * values to empty strings.
 *
 * @private
 * @param {*} value The value to process.
 * @returns {string} Returns the string.
 */


function baseToString(value) {
  // Exit early for strings to avoid a performance hit in some environments.
  if (typeof value == 'string') {
    return value;
  }

  if (isSymbol(value)) {
    return symbolToString ? symbolToString.call(value) : '';
  }

  var result = value + '';
  return result == '0' && 1 / value == -INFINITY ? '-0' : result;
}
/**
 * Casts `value` to a path array if it's not one.
 *
 * @private
 * @param {*} value The value to inspect.
 * @returns {Array} Returns the cast property path array.
 */


function castPath(value) {
  return isArray(value) ? value : stringToPath(value);
}
/**
 * Gets the data for `map`.
 *
 * @private
 * @param {Object} map The map to query.
 * @param {string} key The reference key.
 * @returns {*} Returns the map data.
 */


function getMapData(map, key) {
  var data = map.__data__;
  return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;
}
/**
 * Gets the native function at `key` of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {string} key The key of the method to get.
 * @returns {*} Returns the function if it's native, else `undefined`.
 */


function getNative(object, key) {
  var value = getValue(object, key);
  return baseIsNative(value) ? value : undefined;
}
/**
 * Checks if `value` is a property name and not a property path.
 *
 * @private
 * @param {*} value The value to check.
 * @param {Object} [object] The object to query keys on.
 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
 */


function isKey(value, object) {
  if (isArray(value)) {
    return false;
  }

  var type = _typeof(value);

  if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {
    return true;
  }

  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
}
/**
 * Checks if `value` is suitable for use as unique object key.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
 */


function isKeyable(value) {
  var type = _typeof(value);

  return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;
}
/**
 * Checks if `func` has its source masked.
 *
 * @private
 * @param {Function} func The function to check.
 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
 */


function isMasked(func) {
  return !!maskSrcKey && maskSrcKey in func;
}
/**
 * Converts `string` to a property path array.
 *
 * @private
 * @param {string} string The string to convert.
 * @returns {Array} Returns the property path array.
 */


var stringToPath = memoize(function (string) {
  string = toString(string);
  var result = [];

  if (reLeadingDot.test(string)) {
    result.push('');
  }

  string.replace(rePropName, function (match, number, quote, string) {
    result.push(quote ? string.replace(reEscapeChar, '$1') : number || match);
  });
  return result;
});
/**
 * Converts `value` to a string key if it's not a string or symbol.
 *
 * @private
 * @param {*} value The value to inspect.
 * @returns {string|symbol} Returns the key.
 */

function toKey(value) {
  if (typeof value == 'string' || isSymbol(value)) {
    return value;
  }

  var result = value + '';
  return result == '0' && 1 / value == -INFINITY ? '-0' : result;
}
/**
 * Converts `func` to its source code.
 *
 * @private
 * @param {Function} func The function to process.
 * @returns {string} Returns the source code.
 */


function toSource(func) {
  if (func != null) {
    try {
      return funcToString.call(func);
    } catch (e) {}

    try {
      return func + '';
    } catch (e) {}
  }

  return '';
}
/**
 * Creates a function that memoizes the result of `func`. If `resolver` is
 * provided, it determines the cache key for storing the result based on the
 * arguments provided to the memoized function. By default, the first argument
 * provided to the memoized function is used as the map cache key. The `func`
 * is invoked with the `this` binding of the memoized function.
 *
 * **Note:** The cache is exposed as the `cache` property on the memoized
 * function. Its creation may be customized by replacing the `_.memoize.Cache`
 * constructor with one whose instances implement the
 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
 * method interface of `delete`, `get`, `has`, and `set`.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Function
 * @param {Function} func The function to have its output memoized.
 * @param {Function} [resolver] The function to resolve the cache key.
 * @returns {Function} Returns the new memoized function.
 * @example
 *
 * var object = { 'a': 1, 'b': 2 };
 * var other = { 'c': 3, 'd': 4 };
 *
 * var values = _.memoize(_.values);
 * values(object);
 * // => [1, 2]
 *
 * values(other);
 * // => [3, 4]
 *
 * object.a = 2;
 * values(object);
 * // => [1, 2]
 *
 * // Modify the result cache.
 * values.cache.set(object, ['a', 'b']);
 * values(object);
 * // => ['a', 'b']
 *
 * // Replace `_.memoize.Cache`.
 * _.memoize.Cache = WeakMap;
 */


function memoize(func, resolver) {
  if (typeof func != 'function' || resolver && typeof resolver != 'function') {
    throw new TypeError(FUNC_ERROR_TEXT);
  }

  var memoized = function memoized() {
    var args = arguments,
        key = resolver ? resolver.apply(this, args) : args[0],
        cache = memoized.cache;

    if (cache.has(key)) {
      return cache.get(key);
    }

    var result = func.apply(this, args);
    memoized.cache = cache.set(key, result);
    return result;
  };

  memoized.cache = new (memoize.Cache || MapCache)();
  return memoized;
} // Assign cache to `_.memoize`.


memoize.Cache = MapCache;
/**
 * Performs a
 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 * comparison between two values to determine if they are equivalent.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 * @example
 *
 * var object = { 'a': 1 };
 * var other = { 'a': 1 };
 *
 * _.eq(object, object);
 * // => true
 *
 * _.eq(object, other);
 * // => false
 *
 * _.eq('a', 'a');
 * // => true
 *
 * _.eq('a', Object('a'));
 * // => false
 *
 * _.eq(NaN, NaN);
 * // => true
 */

function eq(value, other) {
  return value === other || value !== value && other !== other;
}
/**
 * Checks if `value` is classified as an `Array` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
 * @example
 *
 * _.isArray([1, 2, 3]);
 * // => true
 *
 * _.isArray(document.body.children);
 * // => false
 *
 * _.isArray('abc');
 * // => false
 *
 * _.isArray(_.noop);
 * // => false
 */


var isArray = Array.isArray;
/**
 * Checks if `value` is classified as a `Function` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
 * @example
 *
 * _.isFunction(_);
 * // => true
 *
 * _.isFunction(/abc/);
 * // => false
 */

function isFunction(value) {
  // The use of `Object#toString` avoids issues with the `typeof` operator
  // in Safari 8-9 which returns 'object' for typed array and other constructors.
  var tag = isObject(value) ? objectToString.call(value) : '';
  return tag == funcTag || tag == genTag;
}
/**
 * Checks if `value` is the
 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
 * @example
 *
 * _.isObject({});
 * // => true
 *
 * _.isObject([1, 2, 3]);
 * // => true
 *
 * _.isObject(_.noop);
 * // => true
 *
 * _.isObject(null);
 * // => false
 */


function isObject(value) {
  var type = _typeof(value);

  return !!value && (type == 'object' || type == 'function');
}
/**
 * Checks if `value` is object-like. A value is object-like if it's not `null`
 * and has a `typeof` result of "object".
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
 * @example
 *
 * _.isObjectLike({});
 * // => true
 *
 * _.isObjectLike([1, 2, 3]);
 * // => true
 *
 * _.isObjectLike(_.noop);
 * // => false
 *
 * _.isObjectLike(null);
 * // => false
 */


function isObjectLike(value) {
  return !!value && _typeof(value) == 'object';
}
/**
 * Checks if `value` is classified as a `Symbol` primitive or object.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
 * @example
 *
 * _.isSymbol(Symbol.iterator);
 * // => true
 *
 * _.isSymbol('abc');
 * // => false
 */


function isSymbol(value) {
  return _typeof(value) == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;
}
/**
 * Converts `value` to a string. An empty string is returned for `null`
 * and `undefined` values. The sign of `-0` is preserved.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to process.
 * @returns {string} Returns the string.
 * @example
 *
 * _.toString(null);
 * // => ''
 *
 * _.toString(-0);
 * // => '-0'
 *
 * _.toString([1, 2, 3]);
 * // => '1,2,3'
 */


function toString(value) {
  return value == null ? '' : baseToString(value);
}
/**
 * Gets the value at `path` of `object`. If the resolved value is
 * `undefined`, the `defaultValue` is returned in its place.
 *
 * @static
 * @memberOf _
 * @since 3.7.0
 * @category Object
 * @param {Object} object The object to query.
 * @param {Array|string} path The path of the property to get.
 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
 * @returns {*} Returns the resolved value.
 * @example
 *
 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
 *
 * _.get(object, 'a[0].b.c');
 * // => 3
 *
 * _.get(object, ['a', '0', 'b', 'c']);
 * // => 3
 *
 * _.get(object, 'a.b.c', 'default');
 * // => 'default'
 */


function get(object, path, defaultValue) {
  var result = object == null ? undefined : baseGet(object, path);
  return result === undefined ? defaultValue : result;
}

module.exports = get;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))

/***/ }),

/***/ "./node_modules/lodash.isequal/index.js":
/*!**********************************************!*\
  !*** ./node_modules/lodash.isequal/index.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(global, module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

/**
 * Lodash (Custom Build) <https://lodash.com/>
 * Build: `lodash modularize exports="npm" -o ./`
 * Copyright JS Foundation and other contributors <https://js.foundation/>
 * Released under MIT license <https://lodash.com/license>
 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 */

/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
/** Used to stand-in for `undefined` hash values. */

var HASH_UNDEFINED = '__lodash_hash_undefined__';
/** Used to compose bitmasks for value comparisons. */

var COMPARE_PARTIAL_FLAG = 1,
    COMPARE_UNORDERED_FLAG = 2;
/** Used as references for various `Number` constants. */

var MAX_SAFE_INTEGER = 9007199254740991;
/** `Object#toString` result references. */

var argsTag = '[object Arguments]',
    arrayTag = '[object Array]',
    asyncTag = '[object AsyncFunction]',
    boolTag = '[object Boolean]',
    dateTag = '[object Date]',
    errorTag = '[object Error]',
    funcTag = '[object Function]',
    genTag = '[object GeneratorFunction]',
    mapTag = '[object Map]',
    numberTag = '[object Number]',
    nullTag = '[object Null]',
    objectTag = '[object Object]',
    promiseTag = '[object Promise]',
    proxyTag = '[object Proxy]',
    regexpTag = '[object RegExp]',
    setTag = '[object Set]',
    stringTag = '[object String]',
    symbolTag = '[object Symbol]',
    undefinedTag = '[object Undefined]',
    weakMapTag = '[object WeakMap]';
var arrayBufferTag = '[object ArrayBuffer]',
    dataViewTag = '[object DataView]',
    float32Tag = '[object Float32Array]',
    float64Tag = '[object Float64Array]',
    int8Tag = '[object Int8Array]',
    int16Tag = '[object Int16Array]',
    int32Tag = '[object Int32Array]',
    uint8Tag = '[object Uint8Array]',
    uint8ClampedTag = '[object Uint8ClampedArray]',
    uint16Tag = '[object Uint16Array]',
    uint32Tag = '[object Uint32Array]';
/**
 * Used to match `RegExp`
 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
 */

var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
/** Used to detect host constructors (Safari). */

var reIsHostCtor = /^\[object .+?Constructor\]$/;
/** Used to detect unsigned integer values. */

var reIsUint = /^(?:0|[1-9]\d*)$/;
/** Used to identify `toStringTag` values of typed arrays. */

var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
/** Detect free variable `global` from Node.js. */

var freeGlobal = (typeof global === "undefined" ? "undefined" : _typeof(global)) == 'object' && global && global.Object === Object && global;
/** Detect free variable `self`. */

var freeSelf = (typeof self === "undefined" ? "undefined" : _typeof(self)) == 'object' && self && self.Object === Object && self;
/** Used as a reference to the global object. */

var root = freeGlobal || freeSelf || Function('return this')();
/** Detect free variable `exports`. */

var freeExports = ( false ? undefined : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;
/** Detect free variable `module`. */

var freeModule = freeExports && ( false ? undefined : _typeof(module)) == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */

var moduleExports = freeModule && freeModule.exports === freeExports;
/** Detect free variable `process` from Node.js. */

var freeProcess = moduleExports && freeGlobal.process;
/** Used to access faster Node.js helpers. */

var nodeUtil = function () {
  try {
    return freeProcess && freeProcess.binding && freeProcess.binding('util');
  } catch (e) {}
}();
/* Node.js helper references. */


var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
/**
 * A specialized version of `_.filter` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {Array} Returns the new filtered array.
 */

function arrayFilter(array, predicate) {
  var index = -1,
      length = array == null ? 0 : array.length,
      resIndex = 0,
      result = [];

  while (++index < length) {
    var value = array[index];

    if (predicate(value, index, array)) {
      result[resIndex++] = value;
    }
  }

  return result;
}
/**
 * Appends the elements of `values` to `array`.
 *
 * @private
 * @param {Array} array The array to modify.
 * @param {Array} values The values to append.
 * @returns {Array} Returns `array`.
 */


function arrayPush(array, values) {
  var index = -1,
      length = values.length,
      offset = array.length;

  while (++index < length) {
    array[offset + index] = values[index];
  }

  return array;
}
/**
 * A specialized version of `_.some` for arrays without support for iteratee
 * shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {boolean} Returns `true` if any element passes the predicate check,
 *  else `false`.
 */


function arraySome(array, predicate) {
  var index = -1,
      length = array == null ? 0 : array.length;

  while (++index < length) {
    if (predicate(array[index], index, array)) {
      return true;
    }
  }

  return false;
}
/**
 * The base implementation of `_.times` without support for iteratee shorthands
 * or max array length checks.
 *
 * @private
 * @param {number} n The number of times to invoke `iteratee`.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the array of results.
 */


function baseTimes(n, iteratee) {
  var index = -1,
      result = Array(n);

  while (++index < n) {
    result[index] = iteratee(index);
  }

  return result;
}
/**
 * The base implementation of `_.unary` without support for storing metadata.
 *
 * @private
 * @param {Function} func The function to cap arguments for.
 * @returns {Function} Returns the new capped function.
 */


function baseUnary(func) {
  return function (value) {
    return func(value);
  };
}
/**
 * Checks if a `cache` value for `key` exists.
 *
 * @private
 * @param {Object} cache The cache to query.
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */


function cacheHas(cache, key) {
  return cache.has(key);
}
/**
 * Gets the value at `key` of `object`.
 *
 * @private
 * @param {Object} [object] The object to query.
 * @param {string} key The key of the property to get.
 * @returns {*} Returns the property value.
 */


function getValue(object, key) {
  return object == null ? undefined : object[key];
}
/**
 * Converts `map` to its key-value pairs.
 *
 * @private
 * @param {Object} map The map to convert.
 * @returns {Array} Returns the key-value pairs.
 */


function mapToArray(map) {
  var index = -1,
      result = Array(map.size);
  map.forEach(function (value, key) {
    result[++index] = [key, value];
  });
  return result;
}
/**
 * Creates a unary function that invokes `func` with its argument transformed.
 *
 * @private
 * @param {Function} func The function to wrap.
 * @param {Function} transform The argument transform.
 * @returns {Function} Returns the new function.
 */


function overArg(func, transform) {
  return function (arg) {
    return func(transform(arg));
  };
}
/**
 * Converts `set` to an array of its values.
 *
 * @private
 * @param {Object} set The set to convert.
 * @returns {Array} Returns the values.
 */


function setToArray(set) {
  var index = -1,
      result = Array(set.size);
  set.forEach(function (value) {
    result[++index] = value;
  });
  return result;
}
/** Used for built-in method references. */


var arrayProto = Array.prototype,
    funcProto = Function.prototype,
    objectProto = Object.prototype;
/** Used to detect overreaching core-js shims. */

var coreJsData = root['__core-js_shared__'];
/** Used to resolve the decompiled source of functions. */

var funcToString = funcProto.toString;
/** Used to check objects for own properties. */

var hasOwnProperty = objectProto.hasOwnProperty;
/** Used to detect methods masquerading as native. */

var maskSrcKey = function () {
  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
  return uid ? 'Symbol(src)_1.' + uid : '';
}();
/**
 * Used to resolve the
 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
 * of values.
 */


var nativeObjectToString = objectProto.toString;
/** Used to detect if a method is native. */

var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
/** Built-in value references. */

var Buffer = moduleExports ? root.Buffer : undefined,
    _Symbol = root.Symbol,
    Uint8Array = root.Uint8Array,
    propertyIsEnumerable = objectProto.propertyIsEnumerable,
    splice = arrayProto.splice,
    symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
/* Built-in method references for those with the same name as other `lodash` methods. */

var nativeGetSymbols = Object.getOwnPropertySymbols,
    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
    nativeKeys = overArg(Object.keys, Object);
/* Built-in method references that are verified to be native. */

var DataView = getNative(root, 'DataView'),
    Map = getNative(root, 'Map'),
    Promise = getNative(root, 'Promise'),
    Set = getNative(root, 'Set'),
    WeakMap = getNative(root, 'WeakMap'),
    nativeCreate = getNative(Object, 'create');
/** Used to detect maps, sets, and weakmaps. */

var dataViewCtorString = toSource(DataView),
    mapCtorString = toSource(Map),
    promiseCtorString = toSource(Promise),
    setCtorString = toSource(Set),
    weakMapCtorString = toSource(WeakMap);
/** Used to convert symbols to primitives and strings. */

var symbolProto = _Symbol ? _Symbol.prototype : undefined,
    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
/**
 * Creates a hash object.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

function Hash(entries) {
  var index = -1,
      length = entries == null ? 0 : entries.length;
  this.clear();

  while (++index < length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}
/**
 * Removes all key-value entries from the hash.
 *
 * @private
 * @name clear
 * @memberOf Hash
 */


function hashClear() {
  this.__data__ = nativeCreate ? nativeCreate(null) : {};
  this.size = 0;
}
/**
 * Removes `key` and its value from the hash.
 *
 * @private
 * @name delete
 * @memberOf Hash
 * @param {Object} hash The hash to modify.
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */


function hashDelete(key) {
  var result = this.has(key) && delete this.__data__[key];
  this.size -= result ? 1 : 0;
  return result;
}
/**
 * Gets the hash value for `key`.
 *
 * @private
 * @name get
 * @memberOf Hash
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */


function hashGet(key) {
  var data = this.__data__;

  if (nativeCreate) {
    var result = data[key];
    return result === HASH_UNDEFINED ? undefined : result;
  }

  return hasOwnProperty.call(data, key) ? data[key] : undefined;
}
/**
 * Checks if a hash value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf Hash
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */


function hashHas(key) {
  var data = this.__data__;
  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
}
/**
 * Sets the hash `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf Hash
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the hash instance.
 */


function hashSet(key, value) {
  var data = this.__data__;
  this.size += this.has(key) ? 0 : 1;
  data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;
  return this;
} // Add methods to `Hash`.


Hash.prototype.clear = hashClear;
Hash.prototype['delete'] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
/**
 * Creates an list cache object.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

function ListCache(entries) {
  var index = -1,
      length = entries == null ? 0 : entries.length;
  this.clear();

  while (++index < length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}
/**
 * Removes all key-value entries from the list cache.
 *
 * @private
 * @name clear
 * @memberOf ListCache
 */


function listCacheClear() {
  this.__data__ = [];
  this.size = 0;
}
/**
 * Removes `key` and its value from the list cache.
 *
 * @private
 * @name delete
 * @memberOf ListCache
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */


function listCacheDelete(key) {
  var data = this.__data__,
      index = assocIndexOf(data, key);

  if (index < 0) {
    return false;
  }

  var lastIndex = data.length - 1;

  if (index == lastIndex) {
    data.pop();
  } else {
    splice.call(data, index, 1);
  }

  --this.size;
  return true;
}
/**
 * Gets the list cache value for `key`.
 *
 * @private
 * @name get
 * @memberOf ListCache
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */


function listCacheGet(key) {
  var data = this.__data__,
      index = assocIndexOf(data, key);
  return index < 0 ? undefined : data[index][1];
}
/**
 * Checks if a list cache value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf ListCache
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */


function listCacheHas(key) {
  return assocIndexOf(this.__data__, key) > -1;
}
/**
 * Sets the list cache `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf ListCache
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the list cache instance.
 */


function listCacheSet(key, value) {
  var data = this.__data__,
      index = assocIndexOf(data, key);

  if (index < 0) {
    ++this.size;
    data.push([key, value]);
  } else {
    data[index][1] = value;
  }

  return this;
} // Add methods to `ListCache`.


ListCache.prototype.clear = listCacheClear;
ListCache.prototype['delete'] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;
/**
 * Creates a map cache object to store key-value pairs.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

function MapCache(entries) {
  var index = -1,
      length = entries == null ? 0 : entries.length;
  this.clear();

  while (++index < length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}
/**
 * Removes all key-value entries from the map.
 *
 * @private
 * @name clear
 * @memberOf MapCache
 */


function mapCacheClear() {
  this.size = 0;
  this.__data__ = {
    'hash': new Hash(),
    'map': new (Map || ListCache)(),
    'string': new Hash()
  };
}
/**
 * Removes `key` and its value from the map.
 *
 * @private
 * @name delete
 * @memberOf MapCache
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */


function mapCacheDelete(key) {
  var result = getMapData(this, key)['delete'](key);
  this.size -= result ? 1 : 0;
  return result;
}
/**
 * Gets the map value for `key`.
 *
 * @private
 * @name get
 * @memberOf MapCache
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */


function mapCacheGet(key) {
  return getMapData(this, key).get(key);
}
/**
 * Checks if a map value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf MapCache
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */


function mapCacheHas(key) {
  return getMapData(this, key).has(key);
}
/**
 * Sets the map `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf MapCache
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the map cache instance.
 */


function mapCacheSet(key, value) {
  var data = getMapData(this, key),
      size = data.size;
  data.set(key, value);
  this.size += data.size == size ? 0 : 1;
  return this;
} // Add methods to `MapCache`.


MapCache.prototype.clear = mapCacheClear;
MapCache.prototype['delete'] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;
/**
 *
 * Creates an array cache object to store unique values.
 *
 * @private
 * @constructor
 * @param {Array} [values] The values to cache.
 */

function SetCache(values) {
  var index = -1,
      length = values == null ? 0 : values.length;
  this.__data__ = new MapCache();

  while (++index < length) {
    this.add(values[index]);
  }
}
/**
 * Adds `value` to the array cache.
 *
 * @private
 * @name add
 * @memberOf SetCache
 * @alias push
 * @param {*} value The value to cache.
 * @returns {Object} Returns the cache instance.
 */


function setCacheAdd(value) {
  this.__data__.set(value, HASH_UNDEFINED);

  return this;
}
/**
 * Checks if `value` is in the array cache.
 *
 * @private
 * @name has
 * @memberOf SetCache
 * @param {*} value The value to search for.
 * @returns {number} Returns `true` if `value` is found, else `false`.
 */


function setCacheHas(value) {
  return this.__data__.has(value);
} // Add methods to `SetCache`.


SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;
/**
 * Creates a stack cache object to store key-value pairs.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

function Stack(entries) {
  var data = this.__data__ = new ListCache(entries);
  this.size = data.size;
}
/**
 * Removes all key-value entries from the stack.
 *
 * @private
 * @name clear
 * @memberOf Stack
 */


function stackClear() {
  this.__data__ = new ListCache();
  this.size = 0;
}
/**
 * Removes `key` and its value from the stack.
 *
 * @private
 * @name delete
 * @memberOf Stack
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */


function stackDelete(key) {
  var data = this.__data__,
      result = data['delete'](key);
  this.size = data.size;
  return result;
}
/**
 * Gets the stack value for `key`.
 *
 * @private
 * @name get
 * @memberOf Stack
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */


function stackGet(key) {
  return this.__data__.get(key);
}
/**
 * Checks if a stack value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf Stack
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */


function stackHas(key) {
  return this.__data__.has(key);
}
/**
 * Sets the stack `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf Stack
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the stack cache instance.
 */


function stackSet(key, value) {
  var data = this.__data__;

  if (data instanceof ListCache) {
    var pairs = data.__data__;

    if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {
      pairs.push([key, value]);
      this.size = ++data.size;
      return this;
    }

    data = this.__data__ = new MapCache(pairs);
  }

  data.set(key, value);
  this.size = data.size;
  return this;
} // Add methods to `Stack`.


Stack.prototype.clear = stackClear;
Stack.prototype['delete'] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;
/**
 * Creates an array of the enumerable property names of the array-like `value`.
 *
 * @private
 * @param {*} value The value to query.
 * @param {boolean} inherited Specify returning inherited property names.
 * @returns {Array} Returns the array of property names.
 */

function arrayLikeKeys(value, inherited) {
  var isArr = isArray(value),
      isArg = !isArr && isArguments(value),
      isBuff = !isArr && !isArg && isBuffer(value),
      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
      skipIndexes = isArr || isArg || isBuff || isType,
      result = skipIndexes ? baseTimes(value.length, String) : [],
      length = result.length;

  for (var key in value) {
    if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.
    key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers.
    isBuff && (key == 'offset' || key == 'parent') || // PhantomJS 2 has enumerable non-index properties on typed arrays.
    isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.
    isIndex(key, length)))) {
      result.push(key);
    }
  }

  return result;
}
/**
 * Gets the index at which the `key` is found in `array` of key-value pairs.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} key The key to search for.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */


function assocIndexOf(array, key) {
  var length = array.length;

  while (length--) {
    if (eq(array[length][0], key)) {
      return length;
    }
  }

  return -1;
}
/**
 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
 * symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Function} keysFunc The function to get the keys of `object`.
 * @param {Function} symbolsFunc The function to get the symbols of `object`.
 * @returns {Array} Returns the array of property names and symbols.
 */


function baseGetAllKeys(object, keysFunc, symbolsFunc) {
  var result = keysFunc(object);
  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
}
/**
 * The base implementation of `getTag` without fallbacks for buggy environments.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the `toStringTag`.
 */


function baseGetTag(value) {
  if (value == null) {
    return value === undefined ? undefinedTag : nullTag;
  }

  return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
}
/**
 * The base implementation of `_.isArguments`.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 */


function baseIsArguments(value) {
  return isObjectLike(value) && baseGetTag(value) == argsTag;
}
/**
 * The base implementation of `_.isEqual` which supports partial comparisons
 * and tracks traversed objects.
 *
 * @private
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @param {boolean} bitmask The bitmask flags.
 *  1 - Unordered comparison
 *  2 - Partial comparison
 * @param {Function} [customizer] The function to customize comparisons.
 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 */


function baseIsEqual(value, other, bitmask, customizer, stack) {
  if (value === other) {
    return true;
  }

  if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
    return value !== value && other !== other;
  }

  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}
/**
 * A specialized version of `baseIsEqual` for arrays and objects which performs
 * deep comparisons and tracks traversed objects enabling objects with circular
 * references to be compared.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */


function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
  var objIsArr = isArray(object),
      othIsArr = isArray(other),
      objTag = objIsArr ? arrayTag : getTag(object),
      othTag = othIsArr ? arrayTag : getTag(other);
  objTag = objTag == argsTag ? objectTag : objTag;
  othTag = othTag == argsTag ? objectTag : othTag;
  var objIsObj = objTag == objectTag,
      othIsObj = othTag == objectTag,
      isSameTag = objTag == othTag;

  if (isSameTag && isBuffer(object)) {
    if (!isBuffer(other)) {
      return false;
    }

    objIsArr = true;
    objIsObj = false;
  }

  if (isSameTag && !objIsObj) {
    stack || (stack = new Stack());
    return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
  }

  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');

    if (objIsWrapped || othIsWrapped) {
      var objUnwrapped = objIsWrapped ? object.value() : object,
          othUnwrapped = othIsWrapped ? other.value() : other;
      stack || (stack = new Stack());
      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
    }
  }

  if (!isSameTag) {
    return false;
  }

  stack || (stack = new Stack());
  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}
/**
 * The base implementation of `_.isNative` without bad shim checks.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a native function,
 *  else `false`.
 */


function baseIsNative(value) {
  if (!isObject(value) || isMasked(value)) {
    return false;
  }

  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
  return pattern.test(toSource(value));
}
/**
 * The base implementation of `_.isTypedArray` without Node.js optimizations.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 */


function baseIsTypedArray(value) {
  return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
/**
 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names.
 */


function baseKeys(object) {
  if (!isPrototype(object)) {
    return nativeKeys(object);
  }

  var result = [];

  for (var key in Object(object)) {
    if (hasOwnProperty.call(object, key) && key != 'constructor') {
      result.push(key);
    }
  }

  return result;
}
/**
 * A specialized version of `baseIsEqualDeep` for arrays with support for
 * partial deep comparisons.
 *
 * @private
 * @param {Array} array The array to compare.
 * @param {Array} other The other array to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `array` and `other` objects.
 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
 */


function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
      arrLength = array.length,
      othLength = other.length;

  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
    return false;
  } // Assume cyclic values are equal.


  var stacked = stack.get(array);

  if (stacked && stack.get(other)) {
    return stacked == other;
  }

  var index = -1,
      result = true,
      seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;
  stack.set(array, other);
  stack.set(other, array); // Ignore non-index properties.

  while (++index < arrLength) {
    var arrValue = array[index],
        othValue = other[index];

    if (customizer) {
      var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
    }

    if (compared !== undefined) {
      if (compared) {
        continue;
      }

      result = false;
      break;
    } // Recursively compare arrays (susceptible to call stack limits).


    if (seen) {
      if (!arraySome(other, function (othValue, othIndex) {
        if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
          return seen.push(othIndex);
        }
      })) {
        result = false;
        break;
      }
    } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
      result = false;
      break;
    }
  }

  stack['delete'](array);
  stack['delete'](other);
  return result;
}
/**
 * A specialized version of `baseIsEqualDeep` for comparing objects of
 * the same `toStringTag`.
 *
 * **Note:** This function only supports comparing values with tags of
 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {string} tag The `toStringTag` of the objects to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */


function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
  switch (tag) {
    case dataViewTag:
      if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
        return false;
      }

      object = object.buffer;
      other = other.buffer;

    case arrayBufferTag:
      if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
        return false;
      }

      return true;

    case boolTag:
    case dateTag:
    case numberTag:
      // Coerce booleans to `1` or `0` and dates to milliseconds.
      // Invalid dates are coerced to `NaN`.
      return eq(+object, +other);

    case errorTag:
      return object.name == other.name && object.message == other.message;

    case regexpTag:
    case stringTag:
      // Coerce regexes to strings and treat strings, primitives and objects,
      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
      // for more details.
      return object == other + '';

    case mapTag:
      var convert = mapToArray;

    case setTag:
      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
      convert || (convert = setToArray);

      if (object.size != other.size && !isPartial) {
        return false;
      } // Assume cyclic values are equal.


      var stacked = stack.get(object);

      if (stacked) {
        return stacked == other;
      }

      bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).

      stack.set(object, other);
      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
      stack['delete'](object);
      return result;

    case symbolTag:
      if (symbolValueOf) {
        return symbolValueOf.call(object) == symbolValueOf.call(other);
      }

  }

  return false;
}
/**
 * A specialized version of `baseIsEqualDeep` for objects with support for
 * partial deep comparisons.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */


function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
      objProps = getAllKeys(object),
      objLength = objProps.length,
      othProps = getAllKeys(other),
      othLength = othProps.length;

  if (objLength != othLength && !isPartial) {
    return false;
  }

  var index = objLength;

  while (index--) {
    var key = objProps[index];

    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
      return false;
    }
  } // Assume cyclic values are equal.


  var stacked = stack.get(object);

  if (stacked && stack.get(other)) {
    return stacked == other;
  }

  var result = true;
  stack.set(object, other);
  stack.set(other, object);
  var skipCtor = isPartial;

  while (++index < objLength) {
    key = objProps[index];
    var objValue = object[key],
        othValue = other[key];

    if (customizer) {
      var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
    } // Recursively compare objects (susceptible to call stack limits).


    if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
      result = false;
      break;
    }

    skipCtor || (skipCtor = key == 'constructor');
  }

  if (result && !skipCtor) {
    var objCtor = object.constructor,
        othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.

    if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {
      result = false;
    }
  }

  stack['delete'](object);
  stack['delete'](other);
  return result;
}
/**
 * Creates an array of own enumerable property names and symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names and symbols.
 */


function getAllKeys(object) {
  return baseGetAllKeys(object, keys, getSymbols);
}
/**
 * Gets the data for `map`.
 *
 * @private
 * @param {Object} map The map to query.
 * @param {string} key The reference key.
 * @returns {*} Returns the map data.
 */


function getMapData(map, key) {
  var data = map.__data__;
  return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;
}
/**
 * Gets the native function at `key` of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {string} key The key of the method to get.
 * @returns {*} Returns the function if it's native, else `undefined`.
 */


function getNative(object, key) {
  var value = getValue(object, key);
  return baseIsNative(value) ? value : undefined;
}
/**
 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the raw `toStringTag`.
 */


function getRawTag(value) {
  var isOwn = hasOwnProperty.call(value, symToStringTag),
      tag = value[symToStringTag];

  try {
    value[symToStringTag] = undefined;
    var unmasked = true;
  } catch (e) {}

  var result = nativeObjectToString.call(value);

  if (unmasked) {
    if (isOwn) {
      value[symToStringTag] = tag;
    } else {
      delete value[symToStringTag];
    }
  }

  return result;
}
/**
 * Creates an array of the own enumerable symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of symbols.
 */


var getSymbols = !nativeGetSymbols ? stubArray : function (object) {
  if (object == null) {
    return [];
  }

  object = Object(object);
  return arrayFilter(nativeGetSymbols(object), function (symbol) {
    return propertyIsEnumerable.call(object, symbol);
  });
};
/**
 * Gets the `toStringTag` of `value`.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the `toStringTag`.
 */

var getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.

if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
  getTag = function getTag(value) {
    var result = baseGetTag(value),
        Ctor = result == objectTag ? value.constructor : undefined,
        ctorString = Ctor ? toSource(Ctor) : '';

    if (ctorString) {
      switch (ctorString) {
        case dataViewCtorString:
          return dataViewTag;

        case mapCtorString:
          return mapTag;

        case promiseCtorString:
          return promiseTag;

        case setCtorString:
          return setTag;

        case weakMapCtorString:
          return weakMapTag;
      }
    }

    return result;
  };
}
/**
 * Checks if `value` is a valid array-like index.
 *
 * @private
 * @param {*} value The value to check.
 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
 */


function isIndex(value, length) {
  length = length == null ? MAX_SAFE_INTEGER : length;
  return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;
}
/**
 * Checks if `value` is suitable for use as unique object key.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
 */


function isKeyable(value) {
  var type = _typeof(value);

  return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;
}
/**
 * Checks if `func` has its source masked.
 *
 * @private
 * @param {Function} func The function to check.
 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
 */


function isMasked(func) {
  return !!maskSrcKey && maskSrcKey in func;
}
/**
 * Checks if `value` is likely a prototype object.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
 */


function isPrototype(value) {
  var Ctor = value && value.constructor,
      proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;
  return value === proto;
}
/**
 * Converts `value` to a string using `Object.prototype.toString`.
 *
 * @private
 * @param {*} value The value to convert.
 * @returns {string} Returns the converted string.
 */


function objectToString(value) {
  return nativeObjectToString.call(value);
}
/**
 * Converts `func` to its source code.
 *
 * @private
 * @param {Function} func The function to convert.
 * @returns {string} Returns the source code.
 */


function toSource(func) {
  if (func != null) {
    try {
      return funcToString.call(func);
    } catch (e) {}

    try {
      return func + '';
    } catch (e) {}
  }

  return '';
}
/**
 * Performs a
 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 * comparison between two values to determine if they are equivalent.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 * @example
 *
 * var object = { 'a': 1 };
 * var other = { 'a': 1 };
 *
 * _.eq(object, object);
 * // => true
 *
 * _.eq(object, other);
 * // => false
 *
 * _.eq('a', 'a');
 * // => true
 *
 * _.eq('a', Object('a'));
 * // => false
 *
 * _.eq(NaN, NaN);
 * // => true
 */


function eq(value, other) {
  return value === other || value !== value && other !== other;
}
/**
 * Checks if `value` is likely an `arguments` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 *  else `false`.
 * @example
 *
 * _.isArguments(function() { return arguments; }());
 * // => true
 *
 * _.isArguments([1, 2, 3]);
 * // => false
 */


var isArguments = baseIsArguments(function () {
  return arguments;
}()) ? baseIsArguments : function (value) {
  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
};
/**
 * Checks if `value` is classified as an `Array` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
 * @example
 *
 * _.isArray([1, 2, 3]);
 * // => true
 *
 * _.isArray(document.body.children);
 * // => false
 *
 * _.isArray('abc');
 * // => false
 *
 * _.isArray(_.noop);
 * // => false
 */

var isArray = Array.isArray;
/**
 * Checks if `value` is array-like. A value is considered array-like if it's
 * not a function and has a `value.length` that's an integer greater than or
 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
 * @example
 *
 * _.isArrayLike([1, 2, 3]);
 * // => true
 *
 * _.isArrayLike(document.body.children);
 * // => true
 *
 * _.isArrayLike('abc');
 * // => true
 *
 * _.isArrayLike(_.noop);
 * // => false
 */

function isArrayLike(value) {
  return value != null && isLength(value.length) && !isFunction(value);
}
/**
 * Checks if `value` is a buffer.
 *
 * @static
 * @memberOf _
 * @since 4.3.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
 * @example
 *
 * _.isBuffer(new Buffer(2));
 * // => true
 *
 * _.isBuffer(new Uint8Array(2));
 * // => false
 */


var isBuffer = nativeIsBuffer || stubFalse;
/**
 * Performs a deep comparison between two values to determine if they are
 * equivalent.
 *
 * **Note:** This method supports comparing arrays, array buffers, booleans,
 * date objects, error objects, maps, numbers, `Object` objects, regexes,
 * sets, strings, symbols, and typed arrays. `Object` objects are compared
 * by their own, not inherited, enumerable properties. Functions and DOM
 * nodes are compared by strict equality, i.e. `===`.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 * @example
 *
 * var object = { 'a': 1 };
 * var other = { 'a': 1 };
 *
 * _.isEqual(object, other);
 * // => true
 *
 * object === other;
 * // => false
 */

function isEqual(value, other) {
  return baseIsEqual(value, other);
}
/**
 * Checks if `value` is classified as a `Function` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
 * @example
 *
 * _.isFunction(_);
 * // => true
 *
 * _.isFunction(/abc/);
 * // => false
 */


function isFunction(value) {
  if (!isObject(value)) {
    return false;
  } // The use of `Object#toString` avoids issues with the `typeof` operator
  // in Safari 9 which returns 'object' for typed arrays and other constructors.


  var tag = baseGetTag(value);
  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
}
/**
 * Checks if `value` is a valid array-like length.
 *
 * **Note:** This method is loosely based on
 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
 * @example
 *
 * _.isLength(3);
 * // => true
 *
 * _.isLength(Number.MIN_VALUE);
 * // => false
 *
 * _.isLength(Infinity);
 * // => false
 *
 * _.isLength('3');
 * // => false
 */


function isLength(value) {
  return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
/**
 * Checks if `value` is the
 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
 * @example
 *
 * _.isObject({});
 * // => true
 *
 * _.isObject([1, 2, 3]);
 * // => true
 *
 * _.isObject(_.noop);
 * // => true
 *
 * _.isObject(null);
 * // => false
 */


function isObject(value) {
  var type = _typeof(value);

  return value != null && (type == 'object' || type == 'function');
}
/**
 * Checks if `value` is object-like. A value is object-like if it's not `null`
 * and has a `typeof` result of "object".
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
 * @example
 *
 * _.isObjectLike({});
 * // => true
 *
 * _.isObjectLike([1, 2, 3]);
 * // => true
 *
 * _.isObjectLike(_.noop);
 * // => false
 *
 * _.isObjectLike(null);
 * // => false
 */


function isObjectLike(value) {
  return value != null && _typeof(value) == 'object';
}
/**
 * Checks if `value` is classified as a typed array.
 *
 * @static
 * @memberOf _
 * @since 3.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 * @example
 *
 * _.isTypedArray(new Uint8Array);
 * // => true
 *
 * _.isTypedArray([]);
 * // => false
 */


var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
/**
 * Creates an array of the own enumerable property names of `object`.
 *
 * **Note:** Non-object values are coerced to objects. See the
 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
 * for more details.
 *
 * @static
 * @since 0.1.0
 * @memberOf _
 * @category Object
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names.
 * @example
 *
 * function Foo() {
 *   this.a = 1;
 *   this.b = 2;
 * }
 *
 * Foo.prototype.c = 3;
 *
 * _.keys(new Foo);
 * // => ['a', 'b'] (iteration order is not guaranteed)
 *
 * _.keys('hi');
 * // => ['0', '1']
 */

function keys(object) {
  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
/**
 * This method returns a new empty array.
 *
 * @static
 * @memberOf _
 * @since 4.13.0
 * @category Util
 * @returns {Array} Returns the new empty array.
 * @example
 *
 * var arrays = _.times(2, _.stubArray);
 *
 * console.log(arrays);
 * // => [[], []]
 *
 * console.log(arrays[0] === arrays[1]);
 * // => false
 */


function stubArray() {
  return [];
}
/**
 * This method returns `false`.
 *
 * @static
 * @memberOf _
 * @since 4.13.0
 * @category Util
 * @returns {boolean} Returns `false`.
 * @example
 *
 * _.times(2, _.stubFalse);
 * // => [false, false]
 */


function stubFalse() {
  return false;
}

module.exports = isEqual;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"), __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/object-assign/index.js":
/*!*********************************************!*\
  !*** ./node_modules/object-assign/index.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/

/* eslint-disable no-unused-vars */

var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;

function toObject(val) {
  if (val === null || val === undefined) {
    throw new TypeError('Object.assign cannot be called with null or undefined');
  }

  return Object(val);
}

function shouldUseNative() {
  try {
    if (!Object.assign) {
      return false;
    } // Detect buggy property enumeration order in older V8 versions.
    // https://bugs.chromium.org/p/v8/issues/detail?id=4118


    var test1 = new String('abc'); // eslint-disable-line no-new-wrappers

    test1[5] = 'de';

    if (Object.getOwnPropertyNames(test1)[0] === '5') {
      return false;
    } // https://bugs.chromium.org/p/v8/issues/detail?id=3056


    var test2 = {};

    for (var i = 0; i < 10; i++) {
      test2['_' + String.fromCharCode(i)] = i;
    }

    var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
      return test2[n];
    });

    if (order2.join('') !== '0123456789') {
      return false;
    } // https://bugs.chromium.org/p/v8/issues/detail?id=3056


    var test3 = {};
    'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
      test3[letter] = letter;
    });

    if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {
      return false;
    }

    return true;
  } catch (err) {
    // We don't expect any of the above to throw, but better to be safe.
    return false;
  }
}

module.exports = shouldUseNative() ? Object.assign : function (target, source) {
  var from;
  var to = toObject(target);
  var symbols;

  for (var s = 1; s < arguments.length; s++) {
    from = Object(arguments[s]);

    for (var key in from) {
      if (hasOwnProperty.call(from, key)) {
        to[key] = from[key];
      }
    }

    if (getOwnPropertySymbols) {
      symbols = getOwnPropertySymbols(from);

      for (var i = 0; i < symbols.length; i++) {
        if (propIsEnumerable.call(from, symbols[i])) {
          to[symbols[i]] = from[symbols[i]];
        }
      }
    }
  }

  return to;
};

/***/ }),

/***/ "./node_modules/prop-types/checkPropTypes.js":
/*!***************************************************!*\
  !*** ./node_modules/prop-types/checkPropTypes.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */


function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

var printWarning = function printWarning() {};

if (true) {
  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");

  var loggedTypeFailures = {};
  var has = Function.call.bind(Object.prototype.hasOwnProperty);

  printWarning = function printWarning(text) {
    var message = 'Warning: ' + text;

    if (typeof console !== 'undefined') {
      console.error(message);
    }

    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  };
}
/**
 * Assert that the values match with the type specs.
 * Error messages are memorized and will only be shown once.
 *
 * @param {object} typeSpecs Map of name to a ReactPropType
 * @param {object} values Runtime values that need to be type-checked
 * @param {string} location e.g. "prop", "context", "child context"
 * @param {string} componentName Name of the component for error messages.
 * @param {?Function} getStack Returns the component stack.
 * @private
 */


function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
  if (true) {
    for (var typeSpecName in typeSpecs) {
      if (has(typeSpecs, typeSpecName)) {
        var error; // Prop type validation may throw. In case they do, we don't want to
        // fail the render phase where it didn't fail before. So we log it.
        // After these have been cleaned up, we'll let them throw.

        try {
          // This is intentionally an invariant that gets caught. It's the same
          // behavior as without this statement except with a better message.
          if (typeof typeSpecs[typeSpecName] !== 'function') {
            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + _typeof(typeSpecs[typeSpecName]) + '`.');
            err.name = 'Invariant Violation';
            throw err;
          }

          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
        } catch (ex) {
          error = ex;
        }

        if (error && !(error instanceof Error)) {
          printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + _typeof(error) + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');
        }

        if (error instanceof Error && !(error.message in loggedTypeFailures)) {
          // Only monitor this failure once because there tends to be a lot of the
          // same error.
          loggedTypeFailures[error.message] = true;
          var stack = getStack ? getStack() : '';
          printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));
        }
      }
    }
  }
}
/**
 * Resets warning cache when testing.
 *
 * @private
 */


checkPropTypes.resetWarningCache = function () {
  if (true) {
    loggedTypeFailures = {};
  }
};

module.exports = checkPropTypes;

/***/ }),

/***/ "./node_modules/prop-types/factoryWithTypeCheckers.js":
/*!************************************************************!*\
  !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */


function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js");

var assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");

var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");

var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js");

var has = Function.call.bind(Object.prototype.hasOwnProperty);

var printWarning = function printWarning() {};

if (true) {
  printWarning = function printWarning(text) {
    var message = 'Warning: ' + text;

    if (typeof console !== 'undefined') {
      console.error(message);
    }

    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  };
}

function emptyFunctionThatReturnsNull() {
  return null;
}

module.exports = function (isValidElement, throwOnDirectAccess) {
  /* global Symbol */
  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.

  /**
   * Returns the iterator method function contained on the iterable object.
   *
   * Be sure to invoke the function with the iterable as context:
   *
   *     var iteratorFn = getIteratorFn(myIterable);
   *     if (iteratorFn) {
   *       var iterator = iteratorFn.call(myIterable);
   *       ...
   *     }
   *
   * @param {?object} maybeIterable
   * @return {?function}
   */

  function getIteratorFn(maybeIterable) {
    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);

    if (typeof iteratorFn === 'function') {
      return iteratorFn;
    }
  }
  /**
   * Collection of methods that allow declaration and validation of props that are
   * supplied to React components. Example usage:
   *
   *   var Props = require('ReactPropTypes');
   *   var MyArticle = React.createClass({
   *     propTypes: {
   *       // An optional string prop named "description".
   *       description: Props.string,
   *
   *       // A required enum prop named "category".
   *       category: Props.oneOf(['News','Photos']).isRequired,
   *
   *       // A prop named "dialog" that requires an instance of Dialog.
   *       dialog: Props.instanceOf(Dialog).isRequired
   *     },
   *     render: function() { ... }
   *   });
   *
   * A more formal specification of how these methods are used:
   *
   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
   *   decl := ReactPropTypes.{type}(.isRequired)?
   *
   * Each and every declaration produces a function with the same signature. This
   * allows the creation of custom validation functions. For example:
   *
   *  var MyLink = React.createClass({
   *    propTypes: {
   *      // An optional string or URI prop named "href".
   *      href: function(props, propName, componentName) {
   *        var propValue = props[propName];
   *        if (propValue != null && typeof propValue !== 'string' &&
   *            !(propValue instanceof URI)) {
   *          return new Error(
   *            'Expected a string or an URI for ' + propName + ' in ' +
   *            componentName
   *          );
   *        }
   *      }
   *    },
   *    render: function() {...}
   *  });
   *
   * @internal
   */


  var ANONYMOUS = '<<anonymous>>'; // Important!
  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.

  var ReactPropTypes = {
    array: createPrimitiveTypeChecker('array'),
    bool: createPrimitiveTypeChecker('boolean'),
    func: createPrimitiveTypeChecker('function'),
    number: createPrimitiveTypeChecker('number'),
    object: createPrimitiveTypeChecker('object'),
    string: createPrimitiveTypeChecker('string'),
    symbol: createPrimitiveTypeChecker('symbol'),
    any: createAnyTypeChecker(),
    arrayOf: createArrayOfTypeChecker,
    element: createElementTypeChecker(),
    elementType: createElementTypeTypeChecker(),
    instanceOf: createInstanceTypeChecker,
    node: createNodeChecker(),
    objectOf: createObjectOfTypeChecker,
    oneOf: createEnumTypeChecker,
    oneOfType: createUnionTypeChecker,
    shape: createShapeTypeChecker,
    exact: createStrictShapeTypeChecker
  };
  /**
   * inlined Object.is polyfill to avoid requiring consumers ship their own
   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
   */

  /*eslint-disable no-self-compare*/

  function is(x, y) {
    // SameValue algorithm
    if (x === y) {
      // Steps 1-5, 7-10
      // Steps 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
      // Step 6.a: NaN == NaN
      return x !== x && y !== y;
    }
  }
  /*eslint-enable no-self-compare*/

  /**
   * We use an Error-like object for backward compatibility as people may call
   * PropTypes directly and inspect their output. However, we don't use real
   * Errors anymore. We don't inspect their stack anyway, and creating them
   * is prohibitively expensive if they are created too often, such as what
   * happens in oneOfType() for any type before the one that matched.
   */


  function PropTypeError(message) {
    this.message = message;
    this.stack = '';
  } // Make `instanceof Error` still work for returned errors.


  PropTypeError.prototype = Error.prototype;

  function createChainableTypeChecker(validate) {
    if (true) {
      var manualPropTypeCallCache = {};
      var manualPropTypeWarningCount = 0;
    }

    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
      componentName = componentName || ANONYMOUS;
      propFullName = propFullName || propName;

      if (secret !== ReactPropTypesSecret) {
        if (throwOnDirectAccess) {
          // New behavior only for users of `prop-types` package
          var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');
          err.name = 'Invariant Violation';
          throw err;
        } else if ( true && typeof console !== 'undefined') {
          // Old behavior for people using React.PropTypes
          var cacheKey = componentName + ':' + propName;

          if (!manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors
          manualPropTypeWarningCount < 3) {
            printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');
            manualPropTypeCallCache[cacheKey] = true;
            manualPropTypeWarningCount++;
          }
        }
      }

      if (props[propName] == null) {
        if (isRequired) {
          if (props[propName] === null) {
            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
          }

          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
        }

        return null;
      } else {
        return validate(props, propName, componentName, location, propFullName);
      }
    }

    var chainedCheckType = checkType.bind(null, false);
    chainedCheckType.isRequired = checkType.bind(null, true);
    return chainedCheckType;
  }

  function createPrimitiveTypeChecker(expectedType) {
    function validate(props, propName, componentName, location, propFullName, secret) {
      var propValue = props[propName];
      var propType = getPropType(propValue);

      if (propType !== expectedType) {
        // `propValue` being instance of, say, date/regexp, pass the 'object'
        // check, but we can offer a more precise error message here rather than
        // 'of type `object`'.
        var preciseType = getPreciseType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
      }

      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function createAnyTypeChecker() {
    return createChainableTypeChecker(emptyFunctionThatReturnsNull);
  }

  function createArrayOfTypeChecker(typeChecker) {
    function validate(props, propName, componentName, location, propFullName) {
      if (typeof typeChecker !== 'function') {
        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
      }

      var propValue = props[propName];

      if (!Array.isArray(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
      }

      for (var i = 0; i < propValue.length; i++) {
        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);

        if (error instanceof Error) {
          return error;
        }
      }

      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function createElementTypeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];

      if (!isValidElement(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
      }

      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function createElementTypeTypeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];

      if (!ReactIs.isValidElementType(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
      }

      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function createInstanceTypeChecker(expectedClass) {
    function validate(props, propName, componentName, location, propFullName) {
      if (!(props[propName] instanceof expectedClass)) {
        var expectedClassName = expectedClass.name || ANONYMOUS;
        var actualClassName = getClassName(props[propName]);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
      }

      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function createEnumTypeChecker(expectedValues) {
    if (!Array.isArray(expectedValues)) {
      if (true) {
        if (arguments.length > 1) {
          printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');
        } else {
          printWarning('Invalid argument supplied to oneOf, expected an array.');
        }
      }

      return emptyFunctionThatReturnsNull;
    }

    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];

      for (var i = 0; i < expectedValues.length; i++) {
        if (is(propValue, expectedValues[i])) {
          return null;
        }
      }

      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
        var type = getPreciseType(value);

        if (type === 'symbol') {
          return String(value);
        }

        return value;
      });
      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
    }

    return createChainableTypeChecker(validate);
  }

  function createObjectOfTypeChecker(typeChecker) {
    function validate(props, propName, componentName, location, propFullName) {
      if (typeof typeChecker !== 'function') {
        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
      }

      var propValue = props[propName];
      var propType = getPropType(propValue);

      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
      }

      for (var key in propValue) {
        if (has(propValue, key)) {
          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);

          if (error instanceof Error) {
            return error;
          }
        }
      }

      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function createUnionTypeChecker(arrayOfTypeCheckers) {
    if (!Array.isArray(arrayOfTypeCheckers)) {
       true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : undefined;
      return emptyFunctionThatReturnsNull;
    }

    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
      var checker = arrayOfTypeCheckers[i];

      if (typeof checker !== 'function') {
        printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');
        return emptyFunctionThatReturnsNull;
      }
    }

    function validate(props, propName, componentName, location, propFullName) {
      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
        var checker = arrayOfTypeCheckers[i];

        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
          return null;
        }
      }

      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
    }

    return createChainableTypeChecker(validate);
  }

  function createNodeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      if (!isNode(props[propName])) {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
      }

      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function createShapeTypeChecker(shapeTypes) {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      var propType = getPropType(propValue);

      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
      }

      for (var key in shapeTypes) {
        var checker = shapeTypes[key];

        if (!checker) {
          continue;
        }

        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);

        if (error) {
          return error;
        }
      }

      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function createStrictShapeTypeChecker(shapeTypes) {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      var propType = getPropType(propValue);

      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
      } // We need to check all keys in case some are required but missing from
      // props.


      var allKeys = assign({}, props[propName], shapeTypes);

      for (var key in allKeys) {
        var checker = shapeTypes[key];

        if (!checker) {
          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\nBad object: ' + JSON.stringify(props[propName], null, '  ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  '));
        }

        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);

        if (error) {
          return error;
        }
      }

      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function isNode(propValue) {
    switch (_typeof(propValue)) {
      case 'number':
      case 'string':
      case 'undefined':
        return true;

      case 'boolean':
        return !propValue;

      case 'object':
        if (Array.isArray(propValue)) {
          return propValue.every(isNode);
        }

        if (propValue === null || isValidElement(propValue)) {
          return true;
        }

        var iteratorFn = getIteratorFn(propValue);

        if (iteratorFn) {
          var iterator = iteratorFn.call(propValue);
          var step;

          if (iteratorFn !== propValue.entries) {
            while (!(step = iterator.next()).done) {
              if (!isNode(step.value)) {
                return false;
              }
            }
          } else {
            // Iterator will provide entry [k,v] tuples rather than values.
            while (!(step = iterator.next()).done) {
              var entry = step.value;

              if (entry) {
                if (!isNode(entry[1])) {
                  return false;
                }
              }
            }
          }
        } else {
          return false;
        }

        return true;

      default:
        return false;
    }
  }

  function isSymbol(propType, propValue) {
    // Native Symbol.
    if (propType === 'symbol') {
      return true;
    } // falsy value can't be a Symbol


    if (!propValue) {
      return false;
    } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'


    if (propValue['@@toStringTag'] === 'Symbol') {
      return true;
    } // Fallback for non-spec compliant Symbols which are polyfilled.


    if (typeof Symbol === 'function' && propValue instanceof Symbol) {
      return true;
    }

    return false;
  } // Equivalent of `typeof` but with special handling for array and regexp.


  function getPropType(propValue) {
    var propType = _typeof(propValue);

    if (Array.isArray(propValue)) {
      return 'array';
    }

    if (propValue instanceof RegExp) {
      // Old webkits (at least until Android 4.0) return 'function' rather than
      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
      // passes PropTypes.object.
      return 'object';
    }

    if (isSymbol(propType, propValue)) {
      return 'symbol';
    }

    return propType;
  } // This handles more types than `getPropType`. Only used for error messages.
  // See `createPrimitiveTypeChecker`.


  function getPreciseType(propValue) {
    if (typeof propValue === 'undefined' || propValue === null) {
      return '' + propValue;
    }

    var propType = getPropType(propValue);

    if (propType === 'object') {
      if (propValue instanceof Date) {
        return 'date';
      } else if (propValue instanceof RegExp) {
        return 'regexp';
      }
    }

    return propType;
  } // Returns a string that is postfixed to a warning about an invalid type.
  // For example, "undefined" or "of type array"


  function getPostfixForTypeWarning(value) {
    var type = getPreciseType(value);

    switch (type) {
      case 'array':
      case 'object':
        return 'an ' + type;

      case 'boolean':
      case 'date':
      case 'regexp':
        return 'a ' + type;

      default:
        return type;
    }
  } // Returns class name of the object, if any.


  function getClassName(propValue) {
    if (!propValue.constructor || !propValue.constructor.name) {
      return ANONYMOUS;
    }

    return propValue.constructor.name;
  }

  ReactPropTypes.checkPropTypes = checkPropTypes;
  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
  ReactPropTypes.PropTypes = ReactPropTypes;
  return ReactPropTypes;
};

/***/ }),

/***/ "./node_modules/prop-types/index.js":
/*!******************************************!*\
  !*** ./node_modules/prop-types/index.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
if (true) {
  var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js"); // By explicitly using `prop-types` you are opting into new development behavior.
  // http://fb.me/prop-types-in-prod


  var throwOnDirectAccess = true;
  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "./node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess);
} else {}

/***/ }),

/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
/*!*************************************************************!*\
  !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */


var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
module.exports = ReactPropTypesSecret;

/***/ }),

/***/ "./node_modules/react-ace/lib/ace.js":
/*!*******************************************!*\
  !*** ./node_modules/react-ace/lib/ace.js ***!
  \*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var __extends = this && this.__extends || function () {
  var _extendStatics = function extendStatics(d, b) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (d, b) {
      d.__proto__ = b;
    } || function (d, b) {
      for (var p in b) {
        if (b.hasOwnProperty(p)) d[p] = b[p];
      }
    };

    return _extendStatics(d, b);
  };

  return function (d, b) {
    _extendStatics(d, b);

    function __() {
      this.constructor = d;
    }

    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  };
}();

var __assign = this && this.__assign || function () {
  __assign = Object.assign || function (t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
      s = arguments[i];

      for (var p in s) {
        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
      }
    }

    return t;
  };

  return __assign.apply(this, arguments);
};

Object.defineProperty(exports, "__esModule", {
  value: true
});

var PropTypes = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");

var React = __webpack_require__(/*! react */ "react");

var isEqual = __webpack_require__(/*! lodash.isequal */ "./node_modules/lodash.isequal/index.js");

var editorOptions_1 = __webpack_require__(/*! ./editorOptions */ "./node_modules/react-ace/lib/editorOptions.js");

var ace = editorOptions_1.getAceInstance();

var Range = ace.require("ace/range").Range;

var ReactAce =
/** @class */
function (_super) {
  __extends(ReactAce, _super);

  function ReactAce(props) {
    var _this = _super.call(this, props) || this;

    editorOptions_1.editorEvents.forEach(function (method) {
      _this[method] = _this[method].bind(_this);
    });
    _this.debounce = editorOptions_1.debounce;
    return _this;
  }

  ReactAce.prototype.isInShadow = function (node) {
    var parent = node && node.parentNode;

    while (parent) {
      if (parent.toString() === "[object ShadowRoot]") {
        return true;
      }

      parent = parent.parentNode;
    }

    return false;
  };

  ReactAce.prototype.componentDidMount = function () {
    var _this = this;

    var _a = this.props,
        className = _a.className,
        onBeforeLoad = _a.onBeforeLoad,
        onValidate = _a.onValidate,
        mode = _a.mode,
        focus = _a.focus,
        theme = _a.theme,
        fontSize = _a.fontSize,
        value = _a.value,
        defaultValue = _a.defaultValue,
        showGutter = _a.showGutter,
        wrapEnabled = _a.wrapEnabled,
        showPrintMargin = _a.showPrintMargin,
        _b = _a.scrollMargin,
        scrollMargin = _b === void 0 ? [0, 0, 0, 0] : _b,
        keyboardHandler = _a.keyboardHandler,
        onLoad = _a.onLoad,
        commands = _a.commands,
        annotations = _a.annotations,
        markers = _a.markers,
        placeholder = _a.placeholder;
    this.editor = ace.edit(this.refEditor);

    if (onBeforeLoad) {
      onBeforeLoad(ace);
    }

    var editorProps = Object.keys(this.props.editorProps);

    for (var i = 0; i < editorProps.length; i++) {
      this.editor[editorProps[i]] = this.props.editorProps[editorProps[i]];
    }

    if (this.props.debounceChangePeriod) {
      this.onChange = this.debounce(this.onChange, this.props.debounceChangePeriod);
    }

    this.editor.renderer.setScrollMargin(scrollMargin[0], scrollMargin[1], scrollMargin[2], scrollMargin[3]);

    if (this.isInShadow(this.refEditor)) {
      this.editor.renderer.attachToShadowRoot();
    }

    this.editor.getSession().setMode("ace/mode/" + mode);
    this.editor.setTheme("ace/theme/" + theme);
    this.editor.setFontSize(typeof fontSize === "number" ? fontSize + "px" : fontSize);
    this.editor.getSession().setValue(!defaultValue ? value || "" : defaultValue);

    if (this.props.navigateToFileEnd) {
      this.editor.navigateFileEnd();
    }

    this.editor.renderer.setShowGutter(showGutter);
    this.editor.getSession().setUseWrapMode(wrapEnabled);
    this.editor.setShowPrintMargin(showPrintMargin);
    this.editor.on("focus", this.onFocus);
    this.editor.on("blur", this.onBlur);
    this.editor.on("copy", this.onCopy);
    this.editor.on("paste", this.onPaste);
    this.editor.on("change", this.onChange);
    this.editor.on("input", this.onInput);

    if (placeholder) {
      this.updatePlaceholder();
    }

    this.editor.getSession().selection.on("changeSelection", this.onSelectionChange);
    this.editor.getSession().selection.on("changeCursor", this.onCursorChange);

    if (onValidate) {
      // @ts-ignore types don't include
      this.editor.getSession().on("changeAnnotation", function () {
        // tslint:disable-next-line:no-shadowed-variable
        var annotations = _this.editor.getSession().getAnnotations();

        _this.props.onValidate(annotations);
      });
    }

    this.editor.session.on("changeScrollTop", this.onScroll);
    this.editor.getSession().setAnnotations(annotations || []);

    if (markers && markers.length > 0) {
      this.handleMarkers(markers);
    } // get a list of possible options to avoid 'misspelled option errors'


    var availableOptions = this.editor.$options;
    editorOptions_1.editorOptions.forEach(function (option) {
      if (availableOptions.hasOwnProperty(option)) {
        // @ts-ignore
        _this.editor.setOption(option, _this.props[option]);
      } else if (_this.props[option]) {
        console.warn("ReactAce: editor option " + option + " was activated but not found. Did you need to import a related tool or did you possibly mispell the option?");
      }
    });
    this.handleOptions(this.props);

    if (Array.isArray(commands)) {
      commands.forEach(function (command) {
        if (typeof command.exec === "string") {
          _this.editor.commands.bindKey(command.bindKey, command.exec);
        } else {
          _this.editor.commands.addCommand(command);
        }
      });
    }

    if (keyboardHandler) {
      this.editor.setKeyboardHandler("ace/keyboard/" + keyboardHandler);
    }

    if (className) {
      this.refEditor.className += " " + className;
    }

    if (onLoad) {
      onLoad(this.editor);
    }

    this.editor.resize();

    if (focus) {
      this.editor.focus();
    }
  };

  ReactAce.prototype.componentDidUpdate = function (prevProps) {
    var oldProps = prevProps;
    var nextProps = this.props;

    for (var i = 0; i < editorOptions_1.editorOptions.length; i++) {
      var option = editorOptions_1.editorOptions[i];

      if (nextProps[option] !== oldProps[option]) {
        // @ts-ignore
        this.editor.setOption(option, nextProps[option]);
      }
    }

    if (nextProps.className !== oldProps.className) {
      var appliedClasses = this.refEditor.className;
      var appliedClassesArray_1 = appliedClasses.trim().split(" ");
      var oldClassesArray = oldProps.className.trim().split(" ");
      oldClassesArray.forEach(function (oldClass) {
        var index = appliedClassesArray_1.indexOf(oldClass);
        appliedClassesArray_1.splice(index, 1);
      });
      this.refEditor.className = " " + nextProps.className + " " + appliedClassesArray_1.join(" ");
    } // First process editor value, as it may create a new session (see issue #300)


    if (this.editor && nextProps.value != null && this.editor.getValue() !== nextProps.value) {
      // editor.setValue is a synchronous function call, change event is emitted before setValue return.
      this.silent = true;
      var pos = this.editor.session.selection.toJSON();
      this.editor.setValue(nextProps.value, nextProps.cursorStart);
      this.editor.session.selection.fromJSON(pos);
      this.silent = false;
    }

    if (nextProps.placeholder !== oldProps.placeholder) {
      this.updatePlaceholder();
    }

    if (nextProps.mode !== oldProps.mode) {
      this.editor.getSession().setMode("ace/mode/" + nextProps.mode);
    }

    if (nextProps.theme !== oldProps.theme) {
      this.editor.setTheme("ace/theme/" + nextProps.theme);
    }

    if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {
      if (nextProps.keyboardHandler) {
        this.editor.setKeyboardHandler("ace/keyboard/" + nextProps.keyboardHandler);
      } else {
        this.editor.setKeyboardHandler(null);
      }
    }

    if (nextProps.fontSize !== oldProps.fontSize) {
      this.editor.setFontSize(typeof nextProps.fontSize === "number" ? nextProps.fontSize + "px" : nextProps.fontSize);
    }

    if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {
      this.editor.getSession().setUseWrapMode(nextProps.wrapEnabled);
    }

    if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {
      this.editor.setShowPrintMargin(nextProps.showPrintMargin);
    }

    if (nextProps.showGutter !== oldProps.showGutter) {
      this.editor.renderer.setShowGutter(nextProps.showGutter);
    }

    if (!isEqual(nextProps.setOptions, oldProps.setOptions)) {
      this.handleOptions(nextProps);
    }

    if (!isEqual(nextProps.annotations, oldProps.annotations)) {
      this.editor.getSession().setAnnotations(nextProps.annotations || []);
    }

    if (!isEqual(nextProps.markers, oldProps.markers) && Array.isArray(nextProps.markers)) {
      this.handleMarkers(nextProps.markers);
    } // this doesn't look like it works at all....


    if (!isEqual(nextProps.scrollMargin, oldProps.scrollMargin)) {
      this.handleScrollMargins(nextProps.scrollMargin);
    }

    if (prevProps.height !== this.props.height || prevProps.width !== this.props.width) {
      this.editor.resize();
    }

    if (this.props.focus && !prevProps.focus) {
      this.editor.focus();
    }
  };

  ReactAce.prototype.handleScrollMargins = function (margins) {
    if (margins === void 0) {
      margins = [0, 0, 0, 0];
    }

    this.editor.renderer.setScrollMargin(margins[0], margins[1], margins[2], margins[3]);
  };

  ReactAce.prototype.componentWillUnmount = function () {
    this.editor.destroy();
    this.editor = null;
  };

  ReactAce.prototype.onChange = function (event) {
    if (this.props.onChange && !this.silent) {
      var value = this.editor.getValue();
      this.props.onChange(value, event);
    }
  };

  ReactAce.prototype.onSelectionChange = function (event) {
    if (this.props.onSelectionChange) {
      var value = this.editor.getSelection();
      this.props.onSelectionChange(value, event);
    }
  };

  ReactAce.prototype.onCursorChange = function (event) {
    if (this.props.onCursorChange) {
      var value = this.editor.getSelection();
      this.props.onCursorChange(value, event);
    }
  };

  ReactAce.prototype.onInput = function (event) {
    if (this.props.onInput) {
      this.props.onInput(event);
    }

    if (this.props.placeholder) {
      this.updatePlaceholder();
    }
  };

  ReactAce.prototype.onFocus = function (event) {
    if (this.props.onFocus) {
      this.props.onFocus(event, this.editor);
    }
  };

  ReactAce.prototype.onBlur = function (event) {
    if (this.props.onBlur) {
      this.props.onBlur(event, this.editor);
    }
  };

  ReactAce.prototype.onCopy = function (_a) {
    var text = _a.text;

    if (this.props.onCopy) {
      this.props.onCopy(text);
    }
  };

  ReactAce.prototype.onPaste = function (_a) {
    var text = _a.text;

    if (this.props.onPaste) {
      this.props.onPaste(text);
    }
  };

  ReactAce.prototype.onScroll = function () {
    if (this.props.onScroll) {
      this.props.onScroll(this.editor);
    }
  };

  ReactAce.prototype.handleOptions = function (props) {
    var setOptions = Object.keys(props.setOptions);

    for (var y = 0; y < setOptions.length; y++) {
      // @ts-ignore
      this.editor.setOption(setOptions[y], props.setOptions[setOptions[y]]);
    }
  };

  ReactAce.prototype.handleMarkers = function (markers) {
    var _this = this; // remove foreground markers


    var currentMarkers = this.editor.getSession().getMarkers(true);

    for (var i in currentMarkers) {
      if (currentMarkers.hasOwnProperty(i)) {
        this.editor.getSession().removeMarker(currentMarkers[i].id);
      }
    } // remove background markers except active line marker and selected word marker


    currentMarkers = this.editor.getSession().getMarkers(false);

    for (var i in currentMarkers) {
      if (currentMarkers.hasOwnProperty(i) && currentMarkers[i].clazz !== "ace_active-line" && currentMarkers[i].clazz !== "ace_selected-word") {
        this.editor.getSession().removeMarker(currentMarkers[i].id);
      }
    } // add new markers


    markers.forEach(function (_a) {
      var startRow = _a.startRow,
          startCol = _a.startCol,
          endRow = _a.endRow,
          endCol = _a.endCol,
          className = _a.className,
          type = _a.type,
          _b = _a.inFront,
          inFront = _b === void 0 ? false : _b;
      var range = new Range(startRow, startCol, endRow, endCol);

      _this.editor.getSession().addMarker(range, className, type, inFront);
    });
  };

  ReactAce.prototype.updatePlaceholder = function () {
    // Adapted from https://stackoverflow.com/questions/26695708/how-can-i-add-placeholder-text-when-the-editor-is-empty
    var editor = this.editor;
    var placeholder = this.props.placeholder;
    var showPlaceholder = !editor.session.getValue().length;
    var node = editor.renderer.placeholderNode;

    if (!showPlaceholder && node) {
      editor.renderer.scroller.removeChild(editor.renderer.placeholderNode);
      editor.renderer.placeholderNode = null;
    } else if (showPlaceholder && !node) {
      node = editor.renderer.placeholderNode = document.createElement("div");
      node.textContent = placeholder || "";
      node.className = "ace_comment ace_placeholder";
      node.style.padding = "0 9px";
      node.style.position = "absolute";
      node.style.zIndex = "3";
      editor.renderer.scroller.appendChild(node);
    } else if (showPlaceholder && node) {
      node.textContent = placeholder;
    }
  };

  ReactAce.prototype.updateRef = function (item) {
    this.refEditor = item;
  };

  ReactAce.prototype.render = function () {
    var _a = this.props,
        name = _a.name,
        width = _a.width,
        height = _a.height,
        style = _a.style;

    var divStyle = __assign({
      width: width,
      height: height
    }, style);

    return React.createElement("div", {
      ref: this.updateRef,
      id: name,
      style: divStyle
    });
  };

  ReactAce.propTypes = {
    mode: PropTypes.string,
    focus: PropTypes.bool,
    theme: PropTypes.string,
    name: PropTypes.string,
    className: PropTypes.string,
    height: PropTypes.string,
    width: PropTypes.string,
    fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
    showGutter: PropTypes.bool,
    onChange: PropTypes.func,
    onCopy: PropTypes.func,
    onPaste: PropTypes.func,
    onFocus: PropTypes.func,
    onInput: PropTypes.func,
    onBlur: PropTypes.func,
    onScroll: PropTypes.func,
    value: PropTypes.string,
    defaultValue: PropTypes.string,
    onLoad: PropTypes.func,
    onSelectionChange: PropTypes.func,
    onCursorChange: PropTypes.func,
    onBeforeLoad: PropTypes.func,
    onValidate: PropTypes.func,
    minLines: PropTypes.number,
    maxLines: PropTypes.number,
    readOnly: PropTypes.bool,
    highlightActiveLine: PropTypes.bool,
    tabSize: PropTypes.number,
    showPrintMargin: PropTypes.bool,
    cursorStart: PropTypes.number,
    debounceChangePeriod: PropTypes.number,
    editorProps: PropTypes.object,
    setOptions: PropTypes.object,
    style: PropTypes.object,
    scrollMargin: PropTypes.array,
    annotations: PropTypes.array,
    markers: PropTypes.array,
    keyboardHandler: PropTypes.string,
    wrapEnabled: PropTypes.bool,
    enableSnippets: PropTypes.bool,
    enableBasicAutocompletion: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),
    enableLiveAutocompletion: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),
    navigateToFileEnd: PropTypes.bool,
    commands: PropTypes.array,
    placeholder: PropTypes.string
  };
  ReactAce.defaultProps = {
    name: "ace-editor",
    focus: false,
    mode: "",
    theme: "",
    height: "500px",
    width: "500px",
    fontSize: 12,
    enableSnippets: false,
    showGutter: true,
    onChange: null,
    onPaste: null,
    onLoad: null,
    onScroll: null,
    minLines: null,
    maxLines: null,
    readOnly: false,
    highlightActiveLine: true,
    showPrintMargin: true,
    tabSize: 4,
    cursorStart: 1,
    editorProps: {},
    style: {},
    scrollMargin: [0, 0, 0, 0],
    setOptions: {},
    wrapEnabled: false,
    enableBasicAutocompletion: false,
    enableLiveAutocompletion: false,
    placeholder: null,
    navigateToFileEnd: true
  };
  return ReactAce;
}(React.Component);

exports["default"] = ReactAce;

/***/ }),

/***/ "./node_modules/react-ace/lib/diff.js":
/*!********************************************!*\
  !*** ./node_modules/react-ace/lib/diff.js ***!
  \********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var __extends = this && this.__extends || function () {
  var _extendStatics = function extendStatics(d, b) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (d, b) {
      d.__proto__ = b;
    } || function (d, b) {
      for (var p in b) {
        if (b.hasOwnProperty(p)) d[p] = b[p];
      }
    };

    return _extendStatics(d, b);
  };

  return function (d, b) {
    _extendStatics(d, b);

    function __() {
      this.constructor = d;
    }

    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  };
}();

Object.defineProperty(exports, "__esModule", {
  value: true
});

var PropTypes = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");

var React = __webpack_require__(/*! react */ "react");

var split_1 = __webpack_require__(/*! ./split */ "./node_modules/react-ace/lib/split.js");

var DiffMatchPatch = __webpack_require__(/*! diff-match-patch */ "./node_modules/diff-match-patch/index.js");

var DiffComponent =
/** @class */
function (_super) {
  __extends(DiffComponent, _super);

  function DiffComponent(props) {
    var _this = _super.call(this, props) || this;

    _this.state = {
      value: _this.props.value
    };
    _this.onChange = _this.onChange.bind(_this);
    _this.diff = _this.diff.bind(_this);
    return _this;
  }

  DiffComponent.prototype.componentDidUpdate = function () {
    var value = this.props.value;

    if (value !== this.state.value) {
      this.setState({
        value: value
      });
    }
  };

  DiffComponent.prototype.onChange = function (value) {
    this.setState({
      value: value
    });

    if (this.props.onChange) {
      this.props.onChange(value);
    }
  };

  DiffComponent.prototype.diff = function () {
    var dmp = new DiffMatchPatch();
    var lhString = this.state.value[0];
    var rhString = this.state.value[1];

    if (lhString.length === 0 && rhString.length === 0) {
      return [];
    }

    var diff = dmp.diff_main(lhString, rhString);
    dmp.diff_cleanupSemantic(diff);
    var diffedLines = this.generateDiffedLines(diff);
    var codeEditorSettings = this.setCodeMarkers(diffedLines);
    return codeEditorSettings;
  };

  DiffComponent.prototype.generateDiffedLines = function (diff) {
    var C = {
      DIFF_EQUAL: 0,
      DIFF_DELETE: -1,
      DIFF_INSERT: 1
    };
    var diffedLines = {
      left: [],
      right: []
    };
    var cursor = {
      left: 1,
      right: 1
    };
    diff.forEach(function (chunk) {
      var chunkType = chunk[0];
      var text = chunk[1];
      var lines = text.split("\n").length - 1; // diff-match-patch sometimes returns empty strings at random

      if (text.length === 0) {
        return;
      }

      var firstChar = text[0];
      var lastChar = text[text.length - 1];
      var linesToHighlight = 0;

      switch (chunkType) {
        case C.DIFF_EQUAL:
          cursor.left += lines;
          cursor.right += lines;
          break;

        case C.DIFF_DELETE:
          // If the deletion starts with a newline, push the cursor down to that line
          if (firstChar === "\n") {
            cursor.left++;
            lines--;
          }

          linesToHighlight = lines; // If the deletion does not include a newline, highlight the same line on the right

          if (linesToHighlight === 0) {
            diffedLines.right.push({
              startLine: cursor.right,
              endLine: cursor.right
            });
          } // If the last character is a newline, we don't want to highlight that line


          if (lastChar === "\n") {
            linesToHighlight -= 1;
          }

          diffedLines.left.push({
            startLine: cursor.left,
            endLine: cursor.left + linesToHighlight
          });
          cursor.left += lines;
          break;

        case C.DIFF_INSERT:
          // If the insertion starts with a newline, push the cursor down to that line
          if (firstChar === "\n") {
            cursor.right++;
            lines--;
          }

          linesToHighlight = lines; // If the insertion does not include a newline, highlight the same line on the left

          if (linesToHighlight === 0) {
            diffedLines.left.push({
              startLine: cursor.left,
              endLine: cursor.left
            });
          } // If the last character is a newline, we don't want to highlight that line


          if (lastChar === "\n") {
            linesToHighlight -= 1;
          }

          diffedLines.right.push({
            startLine: cursor.right,
            endLine: cursor.right + linesToHighlight
          });
          cursor.right += lines;
          break;

        default:
          throw new Error("Diff type was not defined.");
      }
    });
    return diffedLines;
  }; // Receives a collection of line numbers and iterates through them to highlight appropriately
  // Returns an object that tells the render() method how to display the code editors


  DiffComponent.prototype.setCodeMarkers = function (diffedLines) {
    if (diffedLines === void 0) {
      diffedLines = {
        left: [],
        right: []
      };
    }

    var codeEditorSettings = [];
    var newMarkerSet = {
      left: [],
      right: []
    };

    for (var i = 0; i < diffedLines.left.length; i++) {
      var markerObj = {
        startRow: diffedLines.left[i].startLine - 1,
        endRow: diffedLines.left[i].endLine,
        type: "text",
        className: "codeMarker"
      };
      newMarkerSet.left.push(markerObj);
    }

    for (var i = 0; i < diffedLines.right.length; i++) {
      var markerObj = {
        startRow: diffedLines.right[i].startLine - 1,
        endRow: diffedLines.right[i].endLine,
        type: "text",
        className: "codeMarker"
      };
      newMarkerSet.right.push(markerObj);
    }

    codeEditorSettings[0] = newMarkerSet.left;
    codeEditorSettings[1] = newMarkerSet.right;
    return codeEditorSettings;
  };

  DiffComponent.prototype.render = function () {
    var markers = this.diff();
    return React.createElement(split_1["default"], {
      name: this.props.name,
      className: this.props.className,
      focus: this.props.focus,
      orientation: this.props.orientation,
      splits: this.props.splits,
      mode: this.props.mode,
      theme: this.props.theme,
      height: this.props.height,
      width: this.props.width,
      fontSize: this.props.fontSize,
      showGutter: this.props.showGutter,
      onChange: this.onChange,
      onPaste: this.props.onPaste,
      onLoad: this.props.onLoad,
      onScroll: this.props.onScroll,
      minLines: this.props.minLines,
      maxLines: this.props.maxLines,
      readOnly: this.props.readOnly,
      highlightActiveLine: this.props.highlightActiveLine,
      showPrintMargin: this.props.showPrintMargin,
      tabSize: this.props.tabSize,
      cursorStart: this.props.cursorStart,
      editorProps: this.props.editorProps,
      style: this.props.style,
      scrollMargin: this.props.scrollMargin,
      setOptions: this.props.setOptions,
      wrapEnabled: this.props.wrapEnabled,
      enableBasicAutocompletion: this.props.enableBasicAutocompletion,
      enableLiveAutocompletion: this.props.enableLiveAutocompletion,
      value: this.state.value,
      markers: markers
    });
  };

  DiffComponent.propTypes = {
    cursorStart: PropTypes.number,
    editorProps: PropTypes.object,
    enableBasicAutocompletion: PropTypes.bool,
    enableLiveAutocompletion: PropTypes.bool,
    focus: PropTypes.bool,
    fontSize: PropTypes.number,
    height: PropTypes.string,
    highlightActiveLine: PropTypes.bool,
    maxLines: PropTypes.number,
    minLines: PropTypes.number,
    mode: PropTypes.string,
    name: PropTypes.string,
    className: PropTypes.string,
    onLoad: PropTypes.func,
    onPaste: PropTypes.func,
    onScroll: PropTypes.func,
    onChange: PropTypes.func,
    orientation: PropTypes.string,
    readOnly: PropTypes.bool,
    scrollMargin: PropTypes.array,
    setOptions: PropTypes.object,
    showGutter: PropTypes.bool,
    showPrintMargin: PropTypes.bool,
    splits: PropTypes.number,
    style: PropTypes.object,
    tabSize: PropTypes.number,
    theme: PropTypes.string,
    value: PropTypes.array,
    width: PropTypes.string,
    wrapEnabled: PropTypes.bool
  };
  DiffComponent.defaultProps = {
    cursorStart: 1,
    editorProps: {},
    enableBasicAutocompletion: false,
    enableLiveAutocompletion: false,
    focus: false,
    fontSize: 12,
    height: "500px",
    highlightActiveLine: true,
    maxLines: null,
    minLines: null,
    mode: "",
    name: "ace-editor",
    onLoad: null,
    onScroll: null,
    onPaste: null,
    onChange: null,
    orientation: "beside",
    readOnly: false,
    scrollMargin: [0, 0, 0, 0],
    setOptions: {},
    showGutter: true,
    showPrintMargin: true,
    splits: 2,
    style: {},
    tabSize: 4,
    theme: "github",
    value: ["", ""],
    width: "500px",
    wrapEnabled: true
  };
  return DiffComponent;
}(React.Component);

exports["default"] = DiffComponent;

/***/ }),

/***/ "./node_modules/react-ace/lib/editorOptions.js":
/*!*****************************************************!*\
  !*** ./node_modules/react-ace/lib/editorOptions.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/* WEBPACK VAR INJECTION */(function(global) {

Object.defineProperty(exports, "__esModule", {
  value: true
});
var editorOptions = ["minLines", "maxLines", "readOnly", "highlightActiveLine", "tabSize", "enableBasicAutocompletion", "enableLiveAutocompletion", "enableSnippets"];
exports.editorOptions = editorOptions;
var editorEvents = ["onChange", "onFocus", "onInput", "onBlur", "onCopy", "onPaste", "onSelectionChange", "onCursorChange", "onScroll", "handleOptions", "updateRef"];
exports.editorEvents = editorEvents;

var getAceInstance = function getAceInstance() {
  var ace;

  if (typeof window === "undefined") {
    // ace-builds just needs some window object to attach ace to.
    // During SSR even just an empty object will work.
    global.window = {};
    ace = __webpack_require__(/*! ace-builds */ "./node_modules/ace-builds/src-noconflict/ace.js"); // And it can be discarded immediately afterward to avoid confusing
    // other libraries that might detect SSR the same way we did.

    delete global.window;
  } else if (window.ace) {
    // Fallback for ace.require when vanilla ACE is hosted over a CDN
    ace = window.ace;
    ace.acequire = window.ace.require || window.ace.acequire;
  } else {
    ace = __webpack_require__(/*! ace-builds */ "./node_modules/ace-builds/src-noconflict/ace.js");
  }

  return ace;
};

exports.getAceInstance = getAceInstance;

var debounce = function debounce(fn, delay) {
  var timer = null; // tslint:disable-next-line

  return function () {
    var context = this;
    var args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  };
};

exports.debounce = debounce;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))

/***/ }),

/***/ "./node_modules/react-ace/lib/index.js":
/*!*********************************************!*\
  !*** ./node_modules/react-ace/lib/index.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var ace_1 = __webpack_require__(/*! ./ace */ "./node_modules/react-ace/lib/ace.js");

var diff_1 = __webpack_require__(/*! ./diff */ "./node_modules/react-ace/lib/diff.js");

exports.diff = diff_1["default"];

var split_1 = __webpack_require__(/*! ./split */ "./node_modules/react-ace/lib/split.js");

exports.split = split_1["default"];
exports["default"] = ace_1["default"];

/***/ }),

/***/ "./node_modules/react-ace/lib/split.js":
/*!*********************************************!*\
  !*** ./node_modules/react-ace/lib/split.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var __extends = this && this.__extends || function () {
  var _extendStatics = function extendStatics(d, b) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (d, b) {
      d.__proto__ = b;
    } || function (d, b) {
      for (var p in b) {
        if (b.hasOwnProperty(p)) d[p] = b[p];
      }
    };

    return _extendStatics(d, b);
  };

  return function (d, b) {
    _extendStatics(d, b);

    function __() {
      this.constructor = d;
    }

    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  };
}();

var __assign = this && this.__assign || function () {
  __assign = Object.assign || function (t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
      s = arguments[i];

      for (var p in s) {
        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
      }
    }

    return t;
  };

  return __assign.apply(this, arguments);
};

Object.defineProperty(exports, "__esModule", {
  value: true
});

var editorOptions_1 = __webpack_require__(/*! ./editorOptions */ "./node_modules/react-ace/lib/editorOptions.js");

var ace = editorOptions_1.getAceInstance();

var ace_builds_1 = __webpack_require__(/*! ace-builds */ "./node_modules/ace-builds/src-noconflict/ace.js");

var ext_split_1 = __webpack_require__(/*! ace-builds/src-noconflict/ext-split */ "./node_modules/ace-builds/src-noconflict/ext-split.js");

var PropTypes = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");

var React = __webpack_require__(/*! react */ "react");

var isEqual = __webpack_require__(/*! lodash.isequal */ "./node_modules/lodash.isequal/index.js");

var get = __webpack_require__(/*! lodash.get */ "./node_modules/lodash.get/index.js");

var SplitComponent =
/** @class */
function (_super) {
  __extends(SplitComponent, _super);

  function SplitComponent(props) {
    var _this = _super.call(this, props) || this;

    editorOptions_1.editorEvents.forEach(function (method) {
      _this[method] = _this[method].bind(_this);
    });
    _this.debounce = editorOptions_1.debounce;
    return _this;
  }

  SplitComponent.prototype.isInShadow = function (node) {
    var parent = node && node.parentNode;

    while (parent) {
      if (parent.toString() === "[object ShadowRoot]") {
        return true;
      }

      parent = parent.parentNode;
    }

    return false;
  };

  SplitComponent.prototype.componentDidMount = function () {
    var _this = this;

    var _a = this.props,
        className = _a.className,
        onBeforeLoad = _a.onBeforeLoad,
        mode = _a.mode,
        focus = _a.focus,
        theme = _a.theme,
        fontSize = _a.fontSize,
        value = _a.value,
        defaultValue = _a.defaultValue,
        cursorStart = _a.cursorStart,
        showGutter = _a.showGutter,
        wrapEnabled = _a.wrapEnabled,
        showPrintMargin = _a.showPrintMargin,
        _b = _a.scrollMargin,
        scrollMargin = _b === void 0 ? [0, 0, 0, 0] : _b,
        keyboardHandler = _a.keyboardHandler,
        onLoad = _a.onLoad,
        commands = _a.commands,
        annotations = _a.annotations,
        markers = _a.markers,
        splits = _a.splits;
    this.editor = ace.edit(this.refEditor);

    if (this.isInShadow(this.refEditor)) {
      this.editor.renderer.attachToShadowRoot();
    }

    this.editor.setTheme("ace/theme/" + theme);

    if (onBeforeLoad) {
      onBeforeLoad(ace);
    }

    var editorProps = Object.keys(this.props.editorProps);
    var split = new ext_split_1.Split(this.editor.container, "ace/theme/" + theme, splits);
    this.editor.env.split = split;
    this.splitEditor = split.getEditor(0);
    this.split = split; // in a split scenario we don't want a print margin for the entire application

    this.editor.setShowPrintMargin(false);
    this.editor.renderer.setShowGutter(false); // get a list of possible options to avoid 'misspelled option errors'

    var availableOptions = this.splitEditor.$options;

    if (this.props.debounceChangePeriod) {
      this.onChange = this.debounce(this.onChange, this.props.debounceChangePeriod);
    }

    split.forEach(function (editor, index) {
      for (var i = 0; i < editorProps.length; i++) {
        editor[editorProps[i]] = _this.props.editorProps[editorProps[i]];
      }

      var defaultValueForEditor = get(defaultValue, index);
      var valueForEditor = get(value, index, "");
      editor.session.setUndoManager(new ace.UndoManager());
      editor.setTheme("ace/theme/" + theme);
      editor.renderer.setScrollMargin(scrollMargin[0], scrollMargin[1], scrollMargin[2], scrollMargin[3]);
      editor.getSession().setMode("ace/mode/" + mode);
      editor.setFontSize(fontSize);
      editor.renderer.setShowGutter(showGutter);
      editor.getSession().setUseWrapMode(wrapEnabled);
      editor.setShowPrintMargin(showPrintMargin);
      editor.on("focus", _this.onFocus);
      editor.on("blur", _this.onBlur);
      editor.on("input", _this.onInput);
      editor.on("copy", _this.onCopy);
      editor.on("paste", _this.onPaste);
      editor.on("change", _this.onChange);
      editor.getSession().selection.on("changeSelection", _this.onSelectionChange);
      editor.getSession().selection.on("changeCursor", _this.onCursorChange);
      editor.session.on("changeScrollTop", _this.onScroll);
      editor.setValue(defaultValueForEditor === undefined ? valueForEditor : defaultValueForEditor, cursorStart);
      var newAnnotations = get(annotations, index, []);
      var newMarkers = get(markers, index, []);
      editor.getSession().setAnnotations(newAnnotations);

      if (newMarkers && newMarkers.length > 0) {
        _this.handleMarkers(newMarkers, editor);
      }

      for (var i = 0; i < editorOptions_1.editorOptions.length; i++) {
        var option = editorOptions_1.editorOptions[i];

        if (availableOptions.hasOwnProperty(option)) {
          editor.setOption(option, _this.props[option]);
        } else if (_this.props[option]) {
          console.warn("ReaceAce: editor option " + option + " was activated but not found. Did you need to import a related tool or did you possibly mispell the option?");
        }
      }

      _this.handleOptions(_this.props, editor);

      if (Array.isArray(commands)) {
        commands.forEach(function (command) {
          if (typeof command.exec === "string") {
            editor.commands.bindKey(command.bindKey, command.exec);
          } else {
            editor.commands.addCommand(command);
          }
        });
      }

      if (keyboardHandler) {
        editor.setKeyboardHandler("ace/keyboard/" + keyboardHandler);
      }
    });

    if (className) {
      this.refEditor.className += " " + className;
    }

    if (focus) {
      this.splitEditor.focus();
    }

    var sp = this.editor.env.split;
    sp.setOrientation(this.props.orientation === "below" ? sp.BELOW : sp.BESIDE);
    sp.resize(true);

    if (onLoad) {
      onLoad(sp);
    }
  };

  SplitComponent.prototype.componentDidUpdate = function (prevProps) {
    var _this = this;

    var oldProps = prevProps;
    var nextProps = this.props;
    var split = this.editor.env.split;

    if (nextProps.splits !== oldProps.splits) {
      split.setSplits(nextProps.splits);
    }

    if (nextProps.orientation !== oldProps.orientation) {
      split.setOrientation(nextProps.orientation === "below" ? split.BELOW : split.BESIDE);
    }

    split.forEach(function (editor, index) {
      if (nextProps.mode !== oldProps.mode) {
        editor.getSession().setMode("ace/mode/" + nextProps.mode);
      }

      if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {
        if (nextProps.keyboardHandler) {
          editor.setKeyboardHandler("ace/keyboard/" + nextProps.keyboardHandler);
        } else {
          editor.setKeyboardHandler(null);
        }
      }

      if (nextProps.fontSize !== oldProps.fontSize) {
        editor.setFontSize(nextProps.fontSize);
      }

      if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {
        editor.getSession().setUseWrapMode(nextProps.wrapEnabled);
      }

      if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {
        editor.setShowPrintMargin(nextProps.showPrintMargin);
      }

      if (nextProps.showGutter !== oldProps.showGutter) {
        editor.renderer.setShowGutter(nextProps.showGutter);
      }

      for (var i = 0; i < editorOptions_1.editorOptions.length; i++) {
        var option = editorOptions_1.editorOptions[i];

        if (nextProps[option] !== oldProps[option]) {
          editor.setOption(option, nextProps[option]);
        }
      }

      if (!isEqual(nextProps.setOptions, oldProps.setOptions)) {
        _this.handleOptions(nextProps, editor);
      }

      var nextValue = get(nextProps.value, index, "");

      if (editor.getValue() !== nextValue) {
        // editor.setValue is a synchronous function call, change event is emitted before setValue return.
        _this.silent = true;
        var pos = editor.session.selection.toJSON();
        editor.setValue(nextValue, nextProps.cursorStart);
        editor.session.selection.fromJSON(pos);
        _this.silent = false;
      }

      var newAnnotations = get(nextProps.annotations, index, []);
      var oldAnnotations = get(oldProps.annotations, index, []);

      if (!isEqual(newAnnotations, oldAnnotations)) {
        editor.getSession().setAnnotations(newAnnotations);
      }

      var newMarkers = get(nextProps.markers, index, []);
      var oldMarkers = get(oldProps.markers, index, []);

      if (!isEqual(newMarkers, oldMarkers) && Array.isArray(newMarkers)) {
        _this.handleMarkers(newMarkers, editor);
      }
    });

    if (nextProps.className !== oldProps.className) {
      var appliedClasses = this.refEditor.className;
      var appliedClassesArray_1 = appliedClasses.trim().split(" ");
      var oldClassesArray = oldProps.className.trim().split(" ");
      oldClassesArray.forEach(function (oldClass) {
        var index = appliedClassesArray_1.indexOf(oldClass);
        appliedClassesArray_1.splice(index, 1);
      });
      this.refEditor.className = " " + nextProps.className + " " + appliedClassesArray_1.join(" ");
    }

    if (nextProps.theme !== oldProps.theme) {
      split.setTheme("ace/theme/" + nextProps.theme);
    }

    if (nextProps.focus && !oldProps.focus) {
      this.splitEditor.focus();
    }

    if (nextProps.height !== this.props.height || nextProps.width !== this.props.width) {
      this.editor.resize();
    }
  };

  SplitComponent.prototype.componentWillUnmount = function () {
    this.editor.destroy();
    this.editor = null;
  };

  SplitComponent.prototype.onChange = function (event) {
    if (this.props.onChange && !this.silent) {
      var value_1 = [];
      this.editor.env.split.forEach(function (editor) {
        value_1.push(editor.getValue());
      });
      this.props.onChange(value_1, event);
    }
  };

  SplitComponent.prototype.onSelectionChange = function (event) {
    if (this.props.onSelectionChange) {
      var value_2 = [];
      this.editor.env.split.forEach(function (editor) {
        value_2.push(editor.getSelection());
      });
      this.props.onSelectionChange(value_2, event);
    }
  };

  SplitComponent.prototype.onCursorChange = function (event) {
    if (this.props.onCursorChange) {
      var value_3 = [];
      this.editor.env.split.forEach(function (editor) {
        value_3.push(editor.getSelection());
      });
      this.props.onCursorChange(value_3, event);
    }
  };

  SplitComponent.prototype.onFocus = function (event) {
    if (this.props.onFocus) {
      this.props.onFocus(event);
    }
  };

  SplitComponent.prototype.onInput = function (event) {
    if (this.props.onInput) {
      this.props.onInput(event);
    }
  };

  SplitComponent.prototype.onBlur = function (event) {
    if (this.props.onBlur) {
      this.props.onBlur(event);
    }
  };

  SplitComponent.prototype.onCopy = function (text) {
    if (this.props.onCopy) {
      this.props.onCopy(text);
    }
  };

  SplitComponent.prototype.onPaste = function (text) {
    if (this.props.onPaste) {
      this.props.onPaste(text);
    }
  };

  SplitComponent.prototype.onScroll = function () {
    if (this.props.onScroll) {
      this.props.onScroll(this.editor);
    }
  };

  SplitComponent.prototype.handleOptions = function (props, editor) {
    var setOptions = Object.keys(props.setOptions);

    for (var y = 0; y < setOptions.length; y++) {
      editor.setOption(setOptions[y], props.setOptions[setOptions[y]]);
    }
  };

  SplitComponent.prototype.handleMarkers = function (markers, editor) {
    // remove foreground markers
    var currentMarkers = editor.getSession().getMarkers(true);

    for (var i in currentMarkers) {
      if (currentMarkers.hasOwnProperty(i)) {
        editor.getSession().removeMarker(currentMarkers[i].id);
      }
    } // remove background markers


    currentMarkers = editor.getSession().getMarkers(false);

    for (var i in currentMarkers) {
      if (currentMarkers.hasOwnProperty(i)) {
        editor.getSession().removeMarker(currentMarkers[i].id);
      }
    } // add new markers


    markers.forEach(function (_a) {
      var startRow = _a.startRow,
          startCol = _a.startCol,
          endRow = _a.endRow,
          endCol = _a.endCol,
          className = _a.className,
          type = _a.type,
          _b = _a.inFront,
          inFront = _b === void 0 ? false : _b;
      var range = new ace_builds_1.Range(startRow, startCol, endRow, endCol);
      editor.getSession().addMarker(range, className, type, inFront);
    });
  };

  SplitComponent.prototype.updateRef = function (item) {
    this.refEditor = item;
  };

  SplitComponent.prototype.render = function () {
    var _a = this.props,
        name = _a.name,
        width = _a.width,
        height = _a.height,
        style = _a.style;

    var divStyle = __assign({
      width: width,
      height: height
    }, style);

    return React.createElement("div", {
      ref: this.updateRef,
      id: name,
      style: divStyle
    });
  };

  SplitComponent.propTypes = {
    className: PropTypes.string,
    debounceChangePeriod: PropTypes.number,
    defaultValue: PropTypes.arrayOf(PropTypes.string),
    focus: PropTypes.bool,
    fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
    height: PropTypes.string,
    mode: PropTypes.string,
    name: PropTypes.string,
    onBlur: PropTypes.func,
    onChange: PropTypes.func,
    onCopy: PropTypes.func,
    onFocus: PropTypes.func,
    onInput: PropTypes.func,
    onLoad: PropTypes.func,
    onPaste: PropTypes.func,
    onScroll: PropTypes.func,
    orientation: PropTypes.string,
    showGutter: PropTypes.bool,
    splits: PropTypes.number,
    theme: PropTypes.string,
    value: PropTypes.arrayOf(PropTypes.string),
    width: PropTypes.string,
    onSelectionChange: PropTypes.func,
    onCursorChange: PropTypes.func,
    onBeforeLoad: PropTypes.func,
    minLines: PropTypes.number,
    maxLines: PropTypes.number,
    readOnly: PropTypes.bool,
    highlightActiveLine: PropTypes.bool,
    tabSize: PropTypes.number,
    showPrintMargin: PropTypes.bool,
    cursorStart: PropTypes.number,
    editorProps: PropTypes.object,
    setOptions: PropTypes.object,
    style: PropTypes.object,
    scrollMargin: PropTypes.array,
    annotations: PropTypes.array,
    markers: PropTypes.array,
    keyboardHandler: PropTypes.string,
    wrapEnabled: PropTypes.bool,
    enableBasicAutocompletion: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),
    enableLiveAutocompletion: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),
    commands: PropTypes.array
  };
  SplitComponent.defaultProps = {
    name: "ace-editor",
    focus: false,
    orientation: "beside",
    splits: 2,
    mode: "",
    theme: "",
    height: "500px",
    width: "500px",
    value: [],
    fontSize: 12,
    showGutter: true,
    onChange: null,
    onPaste: null,
    onLoad: null,
    onScroll: null,
    minLines: null,
    maxLines: null,
    readOnly: false,
    highlightActiveLine: true,
    showPrintMargin: true,
    tabSize: 4,
    cursorStart: 1,
    editorProps: {},
    style: {},
    scrollMargin: [0, 0, 0, 0],
    setOptions: {},
    wrapEnabled: false,
    enableBasicAutocompletion: false,
    enableLiveAutocompletion: false
  };
  return SplitComponent;
}(React.Component);

exports["default"] = SplitComponent;

/***/ }),

/***/ "./node_modules/react-is/cjs/react-is.development.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-is/cjs/react-is.development.js ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/** @license React v16.13.1
 * react-is.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */


function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

if (true) {
  (function () {
    'use strict'; // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
    // nor polyfill, then a plain number is used for performance.

    var hasSymbol = typeof Symbol === 'function' && Symbol["for"];
    var REACT_ELEMENT_TYPE = hasSymbol ? Symbol["for"]('react.element') : 0xeac7;
    var REACT_PORTAL_TYPE = hasSymbol ? Symbol["for"]('react.portal') : 0xeaca;
    var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol["for"]('react.fragment') : 0xeacb;
    var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol["for"]('react.strict_mode') : 0xeacc;
    var REACT_PROFILER_TYPE = hasSymbol ? Symbol["for"]('react.profiler') : 0xead2;
    var REACT_PROVIDER_TYPE = hasSymbol ? Symbol["for"]('react.provider') : 0xeacd;
    var REACT_CONTEXT_TYPE = hasSymbol ? Symbol["for"]('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
    // (unstable) APIs that have been removed. Can we remove the symbols?

    var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol["for"]('react.async_mode') : 0xeacf;
    var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol["for"]('react.concurrent_mode') : 0xeacf;
    var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol["for"]('react.forward_ref') : 0xead0;
    var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol["for"]('react.suspense') : 0xead1;
    var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol["for"]('react.suspense_list') : 0xead8;
    var REACT_MEMO_TYPE = hasSymbol ? Symbol["for"]('react.memo') : 0xead3;
    var REACT_LAZY_TYPE = hasSymbol ? Symbol["for"]('react.lazy') : 0xead4;
    var REACT_BLOCK_TYPE = hasSymbol ? Symbol["for"]('react.block') : 0xead9;
    var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol["for"]('react.fundamental') : 0xead5;
    var REACT_RESPONDER_TYPE = hasSymbol ? Symbol["for"]('react.responder') : 0xead6;
    var REACT_SCOPE_TYPE = hasSymbol ? Symbol["for"]('react.scope') : 0xead7;

    function isValidElementType(type) {
      return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
      type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || _typeof(type) === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
    }

    function typeOf(object) {
      if (_typeof(object) === 'object' && object !== null) {
        var $$typeof = object.$$typeof;

        switch ($$typeof) {
          case REACT_ELEMENT_TYPE:
            var type = object.type;

            switch (type) {
              case REACT_ASYNC_MODE_TYPE:
              case REACT_CONCURRENT_MODE_TYPE:
              case REACT_FRAGMENT_TYPE:
              case REACT_PROFILER_TYPE:
              case REACT_STRICT_MODE_TYPE:
              case REACT_SUSPENSE_TYPE:
                return type;

              default:
                var $$typeofType = type && type.$$typeof;

                switch ($$typeofType) {
                  case REACT_CONTEXT_TYPE:
                  case REACT_FORWARD_REF_TYPE:
                  case REACT_LAZY_TYPE:
                  case REACT_MEMO_TYPE:
                  case REACT_PROVIDER_TYPE:
                    return $$typeofType;

                  default:
                    return $$typeof;
                }

            }

          case REACT_PORTAL_TYPE:
            return $$typeof;
        }
      }

      return undefined;
    } // AsyncMode is deprecated along with isAsyncMode


    var AsyncMode = REACT_ASYNC_MODE_TYPE;
    var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
    var ContextConsumer = REACT_CONTEXT_TYPE;
    var ContextProvider = REACT_PROVIDER_TYPE;
    var Element = REACT_ELEMENT_TYPE;
    var ForwardRef = REACT_FORWARD_REF_TYPE;
    var Fragment = REACT_FRAGMENT_TYPE;
    var Lazy = REACT_LAZY_TYPE;
    var Memo = REACT_MEMO_TYPE;
    var Portal = REACT_PORTAL_TYPE;
    var Profiler = REACT_PROFILER_TYPE;
    var StrictMode = REACT_STRICT_MODE_TYPE;
    var Suspense = REACT_SUSPENSE_TYPE;
    var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated

    function isAsyncMode(object) {
      {
        if (!hasWarnedAboutDeprecatedIsAsyncMode) {
          hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint

          console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
        }
      }
      return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
    }

    function isConcurrentMode(object) {
      return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
    }

    function isContextConsumer(object) {
      return typeOf(object) === REACT_CONTEXT_TYPE;
    }

    function isContextProvider(object) {
      return typeOf(object) === REACT_PROVIDER_TYPE;
    }

    function isElement(object) {
      return _typeof(object) === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
    }

    function isForwardRef(object) {
      return typeOf(object) === REACT_FORWARD_REF_TYPE;
    }

    function isFragment(object) {
      return typeOf(object) === REACT_FRAGMENT_TYPE;
    }

    function isLazy(object) {
      return typeOf(object) === REACT_LAZY_TYPE;
    }

    function isMemo(object) {
      return typeOf(object) === REACT_MEMO_TYPE;
    }

    function isPortal(object) {
      return typeOf(object) === REACT_PORTAL_TYPE;
    }

    function isProfiler(object) {
      return typeOf(object) === REACT_PROFILER_TYPE;
    }

    function isStrictMode(object) {
      return typeOf(object) === REACT_STRICT_MODE_TYPE;
    }

    function isSuspense(object) {
      return typeOf(object) === REACT_SUSPENSE_TYPE;
    }

    exports.AsyncMode = AsyncMode;
    exports.ConcurrentMode = ConcurrentMode;
    exports.ContextConsumer = ContextConsumer;
    exports.ContextProvider = ContextProvider;
    exports.Element = Element;
    exports.ForwardRef = ForwardRef;
    exports.Fragment = Fragment;
    exports.Lazy = Lazy;
    exports.Memo = Memo;
    exports.Portal = Portal;
    exports.Profiler = Profiler;
    exports.StrictMode = StrictMode;
    exports.Suspense = Suspense;
    exports.isAsyncMode = isAsyncMode;
    exports.isConcurrentMode = isConcurrentMode;
    exports.isContextConsumer = isContextConsumer;
    exports.isContextProvider = isContextProvider;
    exports.isElement = isElement;
    exports.isForwardRef = isForwardRef;
    exports.isFragment = isFragment;
    exports.isLazy = isLazy;
    exports.isMemo = isMemo;
    exports.isPortal = isPortal;
    exports.isProfiler = isProfiler;
    exports.isStrictMode = isStrictMode;
    exports.isSuspense = isSuspense;
    exports.isValidElementType = isValidElementType;
    exports.typeOf = typeOf;
  })();
}

/***/ }),

/***/ "./node_modules/react-is/index.js":
/*!****************************************!*\
  !*** ./node_modules/react-is/index.js ***!
  \****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


if (false) {} else {
  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "./node_modules/react-is/cjs/react-is.development.js");
}

/***/ }),

/***/ "./node_modules/webpack/buildin/amd-define.js":
/*!***************************************!*\
  !*** (webpack)/buildin/amd-define.js ***!
  \***************************************/
/*! no static exports found */
/***/ (function(module, exports) {

module.exports = function() {
	throw new Error("define cannot be used indirect");
};


/***/ }),

/***/ "./node_modules/webpack/buildin/global.js":
/*!***********************************!*\
  !*** (webpack)/buildin/global.js ***!
  \***********************************/
/*! no static exports found */
/***/ (function(module, exports) {

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

var g; // This works in non-strict mode

g = function () {
  return this;
}();

try {
  // This works if eval is allowed (see CSP)
  g = g || new Function("return this")();
} catch (e) {
  // This works if the window reference is available
  if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === "object") g = window;
} // g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}


module.exports = g;

/***/ }),

/***/ "./node_modules/webpack/buildin/module.js":
/*!***********************************!*\
  !*** (webpack)/buildin/module.js ***!
  \***********************************/
/*! no static exports found */
/***/ (function(module, exports) {

module.exports = function (module) {
  if (!module.webpackPolyfill) {
    module.deprecate = function () {};

    module.paths = []; // module.parent = undefined by default

    if (!module.children) module.children = [];
    Object.defineProperty(module, "loaded", {
      enumerable: true,
      get: function get() {
        return module.l;
      }
    });
    Object.defineProperty(module, "id", {
      enumerable: true,
      get: function get() {
        return module.i;
      }
    });
    module.webpackPolyfill = 1;
  }

  return module;
};

/***/ }),

/***/ "./srcjs/A/index.js":
/*!**************************!*\
  !*** ./srcjs/A/index.js ***!
  \**************************/
/*! exports provided: utf8_to_base64, prettify, format */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utf8_to_base64", function() { return utf8_to_base64; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prettify", function() { return prettify; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "format", function() { return format; });
/* jshint esversion: 6 */
var utf8_to_base64 = function utf8_to_base64(str) {
  return btoa(unescape(encodeURIComponent(str)));
};
var prettify = function prettify(code, parser, tabSize) {
  var prettyCode = null,
      error = null;

  try {
    prettyCode = prettier.format(code, {
      parser: parser,
      plugins: prettierPlugins,
      trailingComma: "none",
      tabWidth: tabSize
    });
  } catch (err) {
    error = err.message;
  }

  return {
    prettyCode: prettyCode,
    error: error
  };
};
var format = function format(code, mode, tabSize) {
  var prettyCode = null,
      error = null;
  var tabString = " ".repeat(tabSize);

  try {
    switch (mode) {
      case "javascript":
        prettyCode = indent.js(code, {
          tabString: tabString
        });
        break;

      case "css":
        prettyCode = indent.css(code, {
          tabString: tabString
        });
        break;

      case "html":
        prettyCode = indent.html(code, {
          tabString: tabString
        });
        break;
    }
  } catch (err) {
    error = err.message;
  }

  return {
    prettyCode: prettyCode,
    error: error
  };
};

/***/ }),

/***/ "./srcjs/aceEditor.jsx":
/*!*****************************!*\
  !*** ./srcjs/aceEditor.jsx ***!
  \*****************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var reactR__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reactR */ "reactR");
/* harmony import */ var reactR__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(reactR__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _A__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./A */ "./srcjs/A/index.js");
/* harmony import */ var react_ace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-ace */ "./node_modules/react-ace/lib/index.js");
/* harmony import */ var react_ace__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_ace__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ace_builds_src_min_noconflict_ext_language_tools__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ace-builds/src-min-noconflict/ext-language_tools */ "./node_modules/ace-builds/src-min-noconflict/ext-language_tools.js");
/* harmony import */ var ace_builds_src_min_noconflict_ext_language_tools__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_ext_language_tools__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ace_builds_src_min_noconflict_ext_searchbox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ace-builds/src-min-noconflict/ext-searchbox */ "./node_modules/ace-builds/src-min-noconflict/ext-searchbox.js");
/* harmony import */ var ace_builds_src_min_noconflict_ext_searchbox__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_ext_searchbox__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_c_cpp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/c_cpp */ "./node_modules/ace-builds/src-min-noconflict/snippets/c_cpp.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_c_cpp__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_c_cpp__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/css */ "./node_modules/ace-builds/src-min-noconflict/snippets/css.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_css__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_css__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_fortran__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/fortran */ "./node_modules/ace-builds/src-min-noconflict/snippets/fortran.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_fortran__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_fortran__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_glsl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/glsl */ "./node_modules/ace-builds/src-min-noconflict/snippets/glsl.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_glsl__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_glsl__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_haskell__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/haskell */ "./node_modules/ace-builds/src-min-noconflict/snippets/haskell.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_haskell__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_haskell__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_html__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/html */ "./node_modules/ace-builds/src-min-noconflict/snippets/html.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_html__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_html__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_java__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/java */ "./node_modules/ace-builds/src-min-noconflict/snippets/java.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_java__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_java__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_javascript__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/javascript */ "./node_modules/ace-builds/src-min-noconflict/snippets/javascript.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_javascript__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_javascript__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_json__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/json */ "./node_modules/ace-builds/src-min-noconflict/snippets/json.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_json__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_json__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_jsx__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/jsx */ "./node_modules/ace-builds/src-min-noconflict/snippets/jsx.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_jsx__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_jsx__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_julia__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/julia */ "./node_modules/ace-builds/src-min-noconflict/snippets/julia.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_julia__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_julia__WEBPACK_IMPORTED_MODULE_15__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_latex__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/latex */ "./node_modules/ace-builds/src-min-noconflict/snippets/latex.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_latex__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_latex__WEBPACK_IMPORTED_MODULE_16__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_markdown__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/markdown */ "./node_modules/ace-builds/src-min-noconflict/snippets/markdown.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_markdown__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_markdown__WEBPACK_IMPORTED_MODULE_17__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_python__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/python */ "./node_modules/ace-builds/src-min-noconflict/snippets/python.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_python__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_python__WEBPACK_IMPORTED_MODULE_18__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_r__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/r */ "./node_modules/ace-builds/src-min-noconflict/snippets/r.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_r__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_r__WEBPACK_IMPORTED_MODULE_19__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_rhtml__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/rhtml */ "./node_modules/ace-builds/src-min-noconflict/snippets/rhtml.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_rhtml__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_rhtml__WEBPACK_IMPORTED_MODULE_20__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_scss__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/scss */ "./node_modules/ace-builds/src-min-noconflict/snippets/scss.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_scss__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_scss__WEBPACK_IMPORTED_MODULE_21__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_sql__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/sql */ "./node_modules/ace-builds/src-min-noconflict/snippets/sql.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_sql__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_sql__WEBPACK_IMPORTED_MODULE_22__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_svg__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/svg */ "./node_modules/ace-builds/src-min-noconflict/snippets/svg.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_svg__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_svg__WEBPACK_IMPORTED_MODULE_23__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_tex__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/tex */ "./node_modules/ace-builds/src-min-noconflict/snippets/tex.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_tex__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_tex__WEBPACK_IMPORTED_MODULE_24__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_text__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/text */ "./node_modules/ace-builds/src-min-noconflict/snippets/text.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_text__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_text__WEBPACK_IMPORTED_MODULE_25__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_typescript__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/typescript */ "./node_modules/ace-builds/src-min-noconflict/snippets/typescript.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_typescript__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_typescript__WEBPACK_IMPORTED_MODULE_26__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_xml__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/xml */ "./node_modules/ace-builds/src-min-noconflict/snippets/xml.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_xml__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_xml__WEBPACK_IMPORTED_MODULE_27__);
/* harmony import */ var ace_builds_src_min_noconflict_snippets_yaml__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ace-builds/src-min-noconflict/snippets/yaml */ "./node_modules/ace-builds/src-min-noconflict/snippets/yaml.js");
/* harmony import */ var ace_builds_src_min_noconflict_snippets_yaml__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_snippets_yaml__WEBPACK_IMPORTED_MODULE_28__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_abap__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-abap */ "./node_modules/ace-builds/src-min-noconflict/mode-abap.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_abap__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_abap__WEBPACK_IMPORTED_MODULE_29__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_abc__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-abc */ "./node_modules/ace-builds/src-min-noconflict/mode-abc.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_abc__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_abc__WEBPACK_IMPORTED_MODULE_30__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_actionscript__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-actionscript */ "./node_modules/ace-builds/src-min-noconflict/mode-actionscript.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_actionscript__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_actionscript__WEBPACK_IMPORTED_MODULE_31__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_ada__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-ada */ "./node_modules/ace-builds/src-min-noconflict/mode-ada.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_ada__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_ada__WEBPACK_IMPORTED_MODULE_32__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_alda__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-alda */ "./node_modules/ace-builds/src-min-noconflict/mode-alda.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_alda__WEBPACK_IMPORTED_MODULE_33___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_alda__WEBPACK_IMPORTED_MODULE_33__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_apache_conf__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-apache_conf */ "./node_modules/ace-builds/src-min-noconflict/mode-apache_conf.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_apache_conf__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_apache_conf__WEBPACK_IMPORTED_MODULE_34__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_apex__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-apex */ "./node_modules/ace-builds/src-min-noconflict/mode-apex.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_apex__WEBPACK_IMPORTED_MODULE_35___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_apex__WEBPACK_IMPORTED_MODULE_35__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_applescript__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-applescript */ "./node_modules/ace-builds/src-min-noconflict/mode-applescript.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_applescript__WEBPACK_IMPORTED_MODULE_36___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_applescript__WEBPACK_IMPORTED_MODULE_36__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_aql__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-aql */ "./node_modules/ace-builds/src-min-noconflict/mode-aql.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_aql__WEBPACK_IMPORTED_MODULE_37___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_aql__WEBPACK_IMPORTED_MODULE_37__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_asciidoc__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-asciidoc */ "./node_modules/ace-builds/src-min-noconflict/mode-asciidoc.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_asciidoc__WEBPACK_IMPORTED_MODULE_38___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_asciidoc__WEBPACK_IMPORTED_MODULE_38__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_asl__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-asl */ "./node_modules/ace-builds/src-min-noconflict/mode-asl.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_asl__WEBPACK_IMPORTED_MODULE_39___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_asl__WEBPACK_IMPORTED_MODULE_39__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_assembly_x86__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-assembly_x86 */ "./node_modules/ace-builds/src-min-noconflict/mode-assembly_x86.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_assembly_x86__WEBPACK_IMPORTED_MODULE_40___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_assembly_x86__WEBPACK_IMPORTED_MODULE_40__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_autohotkey__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-autohotkey */ "./node_modules/ace-builds/src-min-noconflict/mode-autohotkey.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_autohotkey__WEBPACK_IMPORTED_MODULE_41___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_autohotkey__WEBPACK_IMPORTED_MODULE_41__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_batchfile__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-batchfile */ "./node_modules/ace-builds/src-min-noconflict/mode-batchfile.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_batchfile__WEBPACK_IMPORTED_MODULE_42___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_batchfile__WEBPACK_IMPORTED_MODULE_42__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_c_cpp__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-c_cpp */ "./node_modules/ace-builds/src-min-noconflict/mode-c_cpp.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_c_cpp__WEBPACK_IMPORTED_MODULE_43___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_c_cpp__WEBPACK_IMPORTED_MODULE_43__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_c9search__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-c9search */ "./node_modules/ace-builds/src-min-noconflict/mode-c9search.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_c9search__WEBPACK_IMPORTED_MODULE_44___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_c9search__WEBPACK_IMPORTED_MODULE_44__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_cirru__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-cirru */ "./node_modules/ace-builds/src-min-noconflict/mode-cirru.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_cirru__WEBPACK_IMPORTED_MODULE_45___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_cirru__WEBPACK_IMPORTED_MODULE_45__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_clojure__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-clojure */ "./node_modules/ace-builds/src-min-noconflict/mode-clojure.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_clojure__WEBPACK_IMPORTED_MODULE_46___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_clojure__WEBPACK_IMPORTED_MODULE_46__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_cobol__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-cobol */ "./node_modules/ace-builds/src-min-noconflict/mode-cobol.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_cobol__WEBPACK_IMPORTED_MODULE_47___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_cobol__WEBPACK_IMPORTED_MODULE_47__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_coffee__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-coffee */ "./node_modules/ace-builds/src-min-noconflict/mode-coffee.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_coffee__WEBPACK_IMPORTED_MODULE_48___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_coffee__WEBPACK_IMPORTED_MODULE_48__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_coldfusion__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-coldfusion */ "./node_modules/ace-builds/src-min-noconflict/mode-coldfusion.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_coldfusion__WEBPACK_IMPORTED_MODULE_49___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_coldfusion__WEBPACK_IMPORTED_MODULE_49__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_crystal__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-crystal */ "./node_modules/ace-builds/src-min-noconflict/mode-crystal.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_crystal__WEBPACK_IMPORTED_MODULE_50___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_crystal__WEBPACK_IMPORTED_MODULE_50__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_csharp__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-csharp */ "./node_modules/ace-builds/src-min-noconflict/mode-csharp.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_csharp__WEBPACK_IMPORTED_MODULE_51___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_csharp__WEBPACK_IMPORTED_MODULE_51__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_csound_document__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-csound_document */ "./node_modules/ace-builds/src-min-noconflict/mode-csound_document.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_csound_document__WEBPACK_IMPORTED_MODULE_52___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_csound_document__WEBPACK_IMPORTED_MODULE_52__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_csound_orchestra__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-csound_orchestra */ "./node_modules/ace-builds/src-min-noconflict/mode-csound_orchestra.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_csound_orchestra__WEBPACK_IMPORTED_MODULE_53___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_csound_orchestra__WEBPACK_IMPORTED_MODULE_53__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_csound_score__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-csound_score */ "./node_modules/ace-builds/src-min-noconflict/mode-csound_score.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_csound_score__WEBPACK_IMPORTED_MODULE_54___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_csound_score__WEBPACK_IMPORTED_MODULE_54__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_csp__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-csp */ "./node_modules/ace-builds/src-min-noconflict/mode-csp.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_csp__WEBPACK_IMPORTED_MODULE_55___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_csp__WEBPACK_IMPORTED_MODULE_55__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_css__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-css */ "./node_modules/ace-builds/src-min-noconflict/mode-css.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_css__WEBPACK_IMPORTED_MODULE_56___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_css__WEBPACK_IMPORTED_MODULE_56__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_curly__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-curly */ "./node_modules/ace-builds/src-min-noconflict/mode-curly.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_curly__WEBPACK_IMPORTED_MODULE_57___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_curly__WEBPACK_IMPORTED_MODULE_57__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_d__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-d */ "./node_modules/ace-builds/src-min-noconflict/mode-d.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_d__WEBPACK_IMPORTED_MODULE_58___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_d__WEBPACK_IMPORTED_MODULE_58__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_dart__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-dart */ "./node_modules/ace-builds/src-min-noconflict/mode-dart.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_dart__WEBPACK_IMPORTED_MODULE_59___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_dart__WEBPACK_IMPORTED_MODULE_59__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_diff__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-diff */ "./node_modules/ace-builds/src-min-noconflict/mode-diff.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_diff__WEBPACK_IMPORTED_MODULE_60___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_diff__WEBPACK_IMPORTED_MODULE_60__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_django__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-django */ "./node_modules/ace-builds/src-min-noconflict/mode-django.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_django__WEBPACK_IMPORTED_MODULE_61___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_django__WEBPACK_IMPORTED_MODULE_61__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_dockerfile__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-dockerfile */ "./node_modules/ace-builds/src-min-noconflict/mode-dockerfile.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_dockerfile__WEBPACK_IMPORTED_MODULE_62___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_dockerfile__WEBPACK_IMPORTED_MODULE_62__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_dot__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-dot */ "./node_modules/ace-builds/src-min-noconflict/mode-dot.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_dot__WEBPACK_IMPORTED_MODULE_63___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_dot__WEBPACK_IMPORTED_MODULE_63__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_drools__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-drools */ "./node_modules/ace-builds/src-min-noconflict/mode-drools.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_drools__WEBPACK_IMPORTED_MODULE_64___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_drools__WEBPACK_IMPORTED_MODULE_64__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_edifact__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-edifact */ "./node_modules/ace-builds/src-min-noconflict/mode-edifact.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_edifact__WEBPACK_IMPORTED_MODULE_65___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_edifact__WEBPACK_IMPORTED_MODULE_65__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_eiffel__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-eiffel */ "./node_modules/ace-builds/src-min-noconflict/mode-eiffel.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_eiffel__WEBPACK_IMPORTED_MODULE_66___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_eiffel__WEBPACK_IMPORTED_MODULE_66__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_ejs__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-ejs */ "./node_modules/ace-builds/src-min-noconflict/mode-ejs.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_ejs__WEBPACK_IMPORTED_MODULE_67___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_ejs__WEBPACK_IMPORTED_MODULE_67__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_elixir__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-elixir */ "./node_modules/ace-builds/src-min-noconflict/mode-elixir.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_elixir__WEBPACK_IMPORTED_MODULE_68___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_elixir__WEBPACK_IMPORTED_MODULE_68__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_elm__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-elm */ "./node_modules/ace-builds/src-min-noconflict/mode-elm.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_elm__WEBPACK_IMPORTED_MODULE_69___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_elm__WEBPACK_IMPORTED_MODULE_69__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_erlang__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-erlang */ "./node_modules/ace-builds/src-min-noconflict/mode-erlang.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_erlang__WEBPACK_IMPORTED_MODULE_70___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_erlang__WEBPACK_IMPORTED_MODULE_70__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_forth__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-forth */ "./node_modules/ace-builds/src-min-noconflict/mode-forth.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_forth__WEBPACK_IMPORTED_MODULE_71___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_forth__WEBPACK_IMPORTED_MODULE_71__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_fortran__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-fortran */ "./node_modules/ace-builds/src-min-noconflict/mode-fortran.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_fortran__WEBPACK_IMPORTED_MODULE_72___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_fortran__WEBPACK_IMPORTED_MODULE_72__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_fsharp__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-fsharp */ "./node_modules/ace-builds/src-min-noconflict/mode-fsharp.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_fsharp__WEBPACK_IMPORTED_MODULE_73___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_fsharp__WEBPACK_IMPORTED_MODULE_73__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_fsl__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-fsl */ "./node_modules/ace-builds/src-min-noconflict/mode-fsl.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_fsl__WEBPACK_IMPORTED_MODULE_74___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_fsl__WEBPACK_IMPORTED_MODULE_74__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_ftl__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-ftl */ "./node_modules/ace-builds/src-min-noconflict/mode-ftl.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_ftl__WEBPACK_IMPORTED_MODULE_75___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_ftl__WEBPACK_IMPORTED_MODULE_75__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_gcode__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-gcode */ "./node_modules/ace-builds/src-min-noconflict/mode-gcode.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_gcode__WEBPACK_IMPORTED_MODULE_76___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_gcode__WEBPACK_IMPORTED_MODULE_76__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_gherkin__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-gherkin */ "./node_modules/ace-builds/src-min-noconflict/mode-gherkin.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_gherkin__WEBPACK_IMPORTED_MODULE_77___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_gherkin__WEBPACK_IMPORTED_MODULE_77__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_gitignore__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-gitignore */ "./node_modules/ace-builds/src-min-noconflict/mode-gitignore.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_gitignore__WEBPACK_IMPORTED_MODULE_78___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_gitignore__WEBPACK_IMPORTED_MODULE_78__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_glsl__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-glsl */ "./node_modules/ace-builds/src-min-noconflict/mode-glsl.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_glsl__WEBPACK_IMPORTED_MODULE_79___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_glsl__WEBPACK_IMPORTED_MODULE_79__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_gobstones__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-gobstones */ "./node_modules/ace-builds/src-min-noconflict/mode-gobstones.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_gobstones__WEBPACK_IMPORTED_MODULE_80___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_gobstones__WEBPACK_IMPORTED_MODULE_80__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_golang__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-golang */ "./node_modules/ace-builds/src-min-noconflict/mode-golang.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_golang__WEBPACK_IMPORTED_MODULE_81___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_golang__WEBPACK_IMPORTED_MODULE_81__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_graphqlschema__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-graphqlschema */ "./node_modules/ace-builds/src-min-noconflict/mode-graphqlschema.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_graphqlschema__WEBPACK_IMPORTED_MODULE_82___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_graphqlschema__WEBPACK_IMPORTED_MODULE_82__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_groovy__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-groovy */ "./node_modules/ace-builds/src-min-noconflict/mode-groovy.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_groovy__WEBPACK_IMPORTED_MODULE_83___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_groovy__WEBPACK_IMPORTED_MODULE_83__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_haml__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-haml */ "./node_modules/ace-builds/src-min-noconflict/mode-haml.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_haml__WEBPACK_IMPORTED_MODULE_84___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_haml__WEBPACK_IMPORTED_MODULE_84__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_handlebars__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-handlebars */ "./node_modules/ace-builds/src-min-noconflict/mode-handlebars.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_handlebars__WEBPACK_IMPORTED_MODULE_85___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_handlebars__WEBPACK_IMPORTED_MODULE_85__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_haskell_cabal__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-haskell_cabal */ "./node_modules/ace-builds/src-min-noconflict/mode-haskell_cabal.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_haskell_cabal__WEBPACK_IMPORTED_MODULE_86___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_haskell_cabal__WEBPACK_IMPORTED_MODULE_86__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_haskell__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-haskell */ "./node_modules/ace-builds/src-min-noconflict/mode-haskell.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_haskell__WEBPACK_IMPORTED_MODULE_87___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_haskell__WEBPACK_IMPORTED_MODULE_87__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_haxe__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-haxe */ "./node_modules/ace-builds/src-min-noconflict/mode-haxe.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_haxe__WEBPACK_IMPORTED_MODULE_88___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_haxe__WEBPACK_IMPORTED_MODULE_88__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_hjson__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-hjson */ "./node_modules/ace-builds/src-min-noconflict/mode-hjson.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_hjson__WEBPACK_IMPORTED_MODULE_89___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_hjson__WEBPACK_IMPORTED_MODULE_89__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_html_elixir__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-html_elixir */ "./node_modules/ace-builds/src-min-noconflict/mode-html_elixir.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_html_elixir__WEBPACK_IMPORTED_MODULE_90___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_html_elixir__WEBPACK_IMPORTED_MODULE_90__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_html_ruby__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-html_ruby */ "./node_modules/ace-builds/src-min-noconflict/mode-html_ruby.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_html_ruby__WEBPACK_IMPORTED_MODULE_91___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_html_ruby__WEBPACK_IMPORTED_MODULE_91__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_html__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-html */ "./node_modules/ace-builds/src-min-noconflict/mode-html.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_html__WEBPACK_IMPORTED_MODULE_92___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_html__WEBPACK_IMPORTED_MODULE_92__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_ini__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-ini */ "./node_modules/ace-builds/src-min-noconflict/mode-ini.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_ini__WEBPACK_IMPORTED_MODULE_93___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_ini__WEBPACK_IMPORTED_MODULE_93__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_io__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-io */ "./node_modules/ace-builds/src-min-noconflict/mode-io.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_io__WEBPACK_IMPORTED_MODULE_94___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_io__WEBPACK_IMPORTED_MODULE_94__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_jack__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-jack */ "./node_modules/ace-builds/src-min-noconflict/mode-jack.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_jack__WEBPACK_IMPORTED_MODULE_95___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_jack__WEBPACK_IMPORTED_MODULE_95__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_jade__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-jade */ "./node_modules/ace-builds/src-min-noconflict/mode-jade.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_jade__WEBPACK_IMPORTED_MODULE_96___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_jade__WEBPACK_IMPORTED_MODULE_96__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_java__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-java */ "./node_modules/ace-builds/src-min-noconflict/mode-java.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_java__WEBPACK_IMPORTED_MODULE_97___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_java__WEBPACK_IMPORTED_MODULE_97__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_javascript__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-javascript */ "./node_modules/ace-builds/src-min-noconflict/mode-javascript.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_javascript__WEBPACK_IMPORTED_MODULE_98___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_javascript__WEBPACK_IMPORTED_MODULE_98__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_json__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-json */ "./node_modules/ace-builds/src-min-noconflict/mode-json.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_json__WEBPACK_IMPORTED_MODULE_99___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_json__WEBPACK_IMPORTED_MODULE_99__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_json5__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-json5 */ "./node_modules/ace-builds/src-min-noconflict/mode-json5.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_json5__WEBPACK_IMPORTED_MODULE_100___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_json5__WEBPACK_IMPORTED_MODULE_100__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_jsoniq__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-jsoniq */ "./node_modules/ace-builds/src-min-noconflict/mode-jsoniq.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_jsoniq__WEBPACK_IMPORTED_MODULE_101___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_jsoniq__WEBPACK_IMPORTED_MODULE_101__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_jsp__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-jsp */ "./node_modules/ace-builds/src-min-noconflict/mode-jsp.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_jsp__WEBPACK_IMPORTED_MODULE_102___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_jsp__WEBPACK_IMPORTED_MODULE_102__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_jssm__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-jssm */ "./node_modules/ace-builds/src-min-noconflict/mode-jssm.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_jssm__WEBPACK_IMPORTED_MODULE_103___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_jssm__WEBPACK_IMPORTED_MODULE_103__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_jsx__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-jsx */ "./node_modules/ace-builds/src-min-noconflict/mode-jsx.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_jsx__WEBPACK_IMPORTED_MODULE_104___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_jsx__WEBPACK_IMPORTED_MODULE_104__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_julia__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-julia */ "./node_modules/ace-builds/src-min-noconflict/mode-julia.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_julia__WEBPACK_IMPORTED_MODULE_105___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_julia__WEBPACK_IMPORTED_MODULE_105__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_kotlin__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-kotlin */ "./node_modules/ace-builds/src-min-noconflict/mode-kotlin.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_kotlin__WEBPACK_IMPORTED_MODULE_106___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_kotlin__WEBPACK_IMPORTED_MODULE_106__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_latex__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-latex */ "./node_modules/ace-builds/src-min-noconflict/mode-latex.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_latex__WEBPACK_IMPORTED_MODULE_107___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_latex__WEBPACK_IMPORTED_MODULE_107__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_less__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-less */ "./node_modules/ace-builds/src-min-noconflict/mode-less.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_less__WEBPACK_IMPORTED_MODULE_108___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_less__WEBPACK_IMPORTED_MODULE_108__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_liquid__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-liquid */ "./node_modules/ace-builds/src-min-noconflict/mode-liquid.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_liquid__WEBPACK_IMPORTED_MODULE_109___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_liquid__WEBPACK_IMPORTED_MODULE_109__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_lisp__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-lisp */ "./node_modules/ace-builds/src-min-noconflict/mode-lisp.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_lisp__WEBPACK_IMPORTED_MODULE_110___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_lisp__WEBPACK_IMPORTED_MODULE_110__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_livescript__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-livescript */ "./node_modules/ace-builds/src-min-noconflict/mode-livescript.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_livescript__WEBPACK_IMPORTED_MODULE_111___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_livescript__WEBPACK_IMPORTED_MODULE_111__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_logiql__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-logiql */ "./node_modules/ace-builds/src-min-noconflict/mode-logiql.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_logiql__WEBPACK_IMPORTED_MODULE_112___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_logiql__WEBPACK_IMPORTED_MODULE_112__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_logtalk__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-logtalk */ "./node_modules/ace-builds/src-min-noconflict/mode-logtalk.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_logtalk__WEBPACK_IMPORTED_MODULE_113___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_logtalk__WEBPACK_IMPORTED_MODULE_113__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_lsl__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-lsl */ "./node_modules/ace-builds/src-min-noconflict/mode-lsl.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_lsl__WEBPACK_IMPORTED_MODULE_114___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_lsl__WEBPACK_IMPORTED_MODULE_114__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_lua__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-lua */ "./node_modules/ace-builds/src-min-noconflict/mode-lua.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_lua__WEBPACK_IMPORTED_MODULE_115___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_lua__WEBPACK_IMPORTED_MODULE_115__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_luapage__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-luapage */ "./node_modules/ace-builds/src-min-noconflict/mode-luapage.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_luapage__WEBPACK_IMPORTED_MODULE_116___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_luapage__WEBPACK_IMPORTED_MODULE_116__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_lucene__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-lucene */ "./node_modules/ace-builds/src-min-noconflict/mode-lucene.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_lucene__WEBPACK_IMPORTED_MODULE_117___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_lucene__WEBPACK_IMPORTED_MODULE_117__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_makefile__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-makefile */ "./node_modules/ace-builds/src-min-noconflict/mode-makefile.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_makefile__WEBPACK_IMPORTED_MODULE_118___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_makefile__WEBPACK_IMPORTED_MODULE_118__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_markdown__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-markdown */ "./node_modules/ace-builds/src-min-noconflict/mode-markdown.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_markdown__WEBPACK_IMPORTED_MODULE_119___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_markdown__WEBPACK_IMPORTED_MODULE_119__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_mask__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-mask */ "./node_modules/ace-builds/src-min-noconflict/mode-mask.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_mask__WEBPACK_IMPORTED_MODULE_120___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_mask__WEBPACK_IMPORTED_MODULE_120__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_matlab__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-matlab */ "./node_modules/ace-builds/src-min-noconflict/mode-matlab.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_matlab__WEBPACK_IMPORTED_MODULE_121___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_matlab__WEBPACK_IMPORTED_MODULE_121__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_maze__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-maze */ "./node_modules/ace-builds/src-min-noconflict/mode-maze.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_maze__WEBPACK_IMPORTED_MODULE_122___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_maze__WEBPACK_IMPORTED_MODULE_122__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_mediawiki__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-mediawiki */ "./node_modules/ace-builds/src-min-noconflict/mode-mediawiki.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_mediawiki__WEBPACK_IMPORTED_MODULE_123___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_mediawiki__WEBPACK_IMPORTED_MODULE_123__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_mel__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-mel */ "./node_modules/ace-builds/src-min-noconflict/mode-mel.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_mel__WEBPACK_IMPORTED_MODULE_124___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_mel__WEBPACK_IMPORTED_MODULE_124__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_mixal__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-mixal */ "./node_modules/ace-builds/src-min-noconflict/mode-mixal.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_mixal__WEBPACK_IMPORTED_MODULE_125___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_mixal__WEBPACK_IMPORTED_MODULE_125__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_mushcode__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-mushcode */ "./node_modules/ace-builds/src-min-noconflict/mode-mushcode.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_mushcode__WEBPACK_IMPORTED_MODULE_126___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_mushcode__WEBPACK_IMPORTED_MODULE_126__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_mysql__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-mysql */ "./node_modules/ace-builds/src-min-noconflict/mode-mysql.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_mysql__WEBPACK_IMPORTED_MODULE_127___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_mysql__WEBPACK_IMPORTED_MODULE_127__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_nginx__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-nginx */ "./node_modules/ace-builds/src-min-noconflict/mode-nginx.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_nginx__WEBPACK_IMPORTED_MODULE_128___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_nginx__WEBPACK_IMPORTED_MODULE_128__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_nim__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-nim */ "./node_modules/ace-builds/src-min-noconflict/mode-nim.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_nim__WEBPACK_IMPORTED_MODULE_129___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_nim__WEBPACK_IMPORTED_MODULE_129__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_nix__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-nix */ "./node_modules/ace-builds/src-min-noconflict/mode-nix.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_nix__WEBPACK_IMPORTED_MODULE_130___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_nix__WEBPACK_IMPORTED_MODULE_130__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_nsis__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-nsis */ "./node_modules/ace-builds/src-min-noconflict/mode-nsis.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_nsis__WEBPACK_IMPORTED_MODULE_131___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_nsis__WEBPACK_IMPORTED_MODULE_131__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_nunjucks__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-nunjucks */ "./node_modules/ace-builds/src-min-noconflict/mode-nunjucks.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_nunjucks__WEBPACK_IMPORTED_MODULE_132___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_nunjucks__WEBPACK_IMPORTED_MODULE_132__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_objectivec__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-objectivec */ "./node_modules/ace-builds/src-min-noconflict/mode-objectivec.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_objectivec__WEBPACK_IMPORTED_MODULE_133___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_objectivec__WEBPACK_IMPORTED_MODULE_133__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_ocaml__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-ocaml */ "./node_modules/ace-builds/src-min-noconflict/mode-ocaml.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_ocaml__WEBPACK_IMPORTED_MODULE_134___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_ocaml__WEBPACK_IMPORTED_MODULE_134__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_pascal__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-pascal */ "./node_modules/ace-builds/src-min-noconflict/mode-pascal.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_pascal__WEBPACK_IMPORTED_MODULE_135___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_pascal__WEBPACK_IMPORTED_MODULE_135__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_perl__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-perl */ "./node_modules/ace-builds/src-min-noconflict/mode-perl.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_perl__WEBPACK_IMPORTED_MODULE_136___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_perl__WEBPACK_IMPORTED_MODULE_136__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_perl6__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-perl6 */ "./node_modules/ace-builds/src-min-noconflict/mode-perl6.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_perl6__WEBPACK_IMPORTED_MODULE_137___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_perl6__WEBPACK_IMPORTED_MODULE_137__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_pgsql__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-pgsql */ "./node_modules/ace-builds/src-min-noconflict/mode-pgsql.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_pgsql__WEBPACK_IMPORTED_MODULE_138___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_pgsql__WEBPACK_IMPORTED_MODULE_138__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_php_laravel_blade__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-php_laravel_blade */ "./node_modules/ace-builds/src-min-noconflict/mode-php_laravel_blade.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_php_laravel_blade__WEBPACK_IMPORTED_MODULE_139___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_php_laravel_blade__WEBPACK_IMPORTED_MODULE_139__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_php__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-php */ "./node_modules/ace-builds/src-min-noconflict/mode-php.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_php__WEBPACK_IMPORTED_MODULE_140___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_php__WEBPACK_IMPORTED_MODULE_140__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_pig__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-pig */ "./node_modules/ace-builds/src-min-noconflict/mode-pig.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_pig__WEBPACK_IMPORTED_MODULE_141___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_pig__WEBPACK_IMPORTED_MODULE_141__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_plain_text__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-plain_text */ "./node_modules/ace-builds/src-min-noconflict/mode-plain_text.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_plain_text__WEBPACK_IMPORTED_MODULE_142___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_plain_text__WEBPACK_IMPORTED_MODULE_142__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_powershell__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-powershell */ "./node_modules/ace-builds/src-min-noconflict/mode-powershell.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_powershell__WEBPACK_IMPORTED_MODULE_143___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_powershell__WEBPACK_IMPORTED_MODULE_143__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_praat__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-praat */ "./node_modules/ace-builds/src-min-noconflict/mode-praat.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_praat__WEBPACK_IMPORTED_MODULE_144___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_praat__WEBPACK_IMPORTED_MODULE_144__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_prisma__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-prisma */ "./node_modules/ace-builds/src-min-noconflict/mode-prisma.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_prisma__WEBPACK_IMPORTED_MODULE_145___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_prisma__WEBPACK_IMPORTED_MODULE_145__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_prolog__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-prolog */ "./node_modules/ace-builds/src-min-noconflict/mode-prolog.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_prolog__WEBPACK_IMPORTED_MODULE_146___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_prolog__WEBPACK_IMPORTED_MODULE_146__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_properties__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-properties */ "./node_modules/ace-builds/src-min-noconflict/mode-properties.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_properties__WEBPACK_IMPORTED_MODULE_147___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_properties__WEBPACK_IMPORTED_MODULE_147__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_protobuf__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-protobuf */ "./node_modules/ace-builds/src-min-noconflict/mode-protobuf.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_protobuf__WEBPACK_IMPORTED_MODULE_148___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_protobuf__WEBPACK_IMPORTED_MODULE_148__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_puppet__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-puppet */ "./node_modules/ace-builds/src-min-noconflict/mode-puppet.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_puppet__WEBPACK_IMPORTED_MODULE_149___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_puppet__WEBPACK_IMPORTED_MODULE_149__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_python__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-python */ "./node_modules/ace-builds/src-min-noconflict/mode-python.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_python__WEBPACK_IMPORTED_MODULE_150___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_python__WEBPACK_IMPORTED_MODULE_150__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_qml__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-qml */ "./node_modules/ace-builds/src-min-noconflict/mode-qml.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_qml__WEBPACK_IMPORTED_MODULE_151___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_qml__WEBPACK_IMPORTED_MODULE_151__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_r__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-r */ "./node_modules/ace-builds/src-min-noconflict/mode-r.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_r__WEBPACK_IMPORTED_MODULE_152___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_r__WEBPACK_IMPORTED_MODULE_152__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_razor__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-razor */ "./node_modules/ace-builds/src-min-noconflict/mode-razor.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_razor__WEBPACK_IMPORTED_MODULE_153___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_razor__WEBPACK_IMPORTED_MODULE_153__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_rdoc__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-rdoc */ "./node_modules/ace-builds/src-min-noconflict/mode-rdoc.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_rdoc__WEBPACK_IMPORTED_MODULE_154___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_rdoc__WEBPACK_IMPORTED_MODULE_154__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_red__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-red */ "./node_modules/ace-builds/src-min-noconflict/mode-red.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_red__WEBPACK_IMPORTED_MODULE_155___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_red__WEBPACK_IMPORTED_MODULE_155__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_redshift__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-redshift */ "./node_modules/ace-builds/src-min-noconflict/mode-redshift.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_redshift__WEBPACK_IMPORTED_MODULE_156___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_redshift__WEBPACK_IMPORTED_MODULE_156__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_rhtml__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-rhtml */ "./node_modules/ace-builds/src-min-noconflict/mode-rhtml.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_rhtml__WEBPACK_IMPORTED_MODULE_157___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_rhtml__WEBPACK_IMPORTED_MODULE_157__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_rst__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-rst */ "./node_modules/ace-builds/src-min-noconflict/mode-rst.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_rst__WEBPACK_IMPORTED_MODULE_158___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_rst__WEBPACK_IMPORTED_MODULE_158__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_ruby__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-ruby */ "./node_modules/ace-builds/src-min-noconflict/mode-ruby.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_ruby__WEBPACK_IMPORTED_MODULE_159___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_ruby__WEBPACK_IMPORTED_MODULE_159__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_rust__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-rust */ "./node_modules/ace-builds/src-min-noconflict/mode-rust.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_rust__WEBPACK_IMPORTED_MODULE_160___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_rust__WEBPACK_IMPORTED_MODULE_160__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_sass__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-sass */ "./node_modules/ace-builds/src-min-noconflict/mode-sass.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_sass__WEBPACK_IMPORTED_MODULE_161___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_sass__WEBPACK_IMPORTED_MODULE_161__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_scad__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-scad */ "./node_modules/ace-builds/src-min-noconflict/mode-scad.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_scad__WEBPACK_IMPORTED_MODULE_162___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_scad__WEBPACK_IMPORTED_MODULE_162__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_scala__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-scala */ "./node_modules/ace-builds/src-min-noconflict/mode-scala.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_scala__WEBPACK_IMPORTED_MODULE_163___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_scala__WEBPACK_IMPORTED_MODULE_163__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_scheme__WEBPACK_IMPORTED_MODULE_164__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-scheme */ "./node_modules/ace-builds/src-min-noconflict/mode-scheme.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_scheme__WEBPACK_IMPORTED_MODULE_164___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_scheme__WEBPACK_IMPORTED_MODULE_164__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_scss__WEBPACK_IMPORTED_MODULE_165__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-scss */ "./node_modules/ace-builds/src-min-noconflict/mode-scss.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_scss__WEBPACK_IMPORTED_MODULE_165___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_scss__WEBPACK_IMPORTED_MODULE_165__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_sh__WEBPACK_IMPORTED_MODULE_166__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-sh */ "./node_modules/ace-builds/src-min-noconflict/mode-sh.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_sh__WEBPACK_IMPORTED_MODULE_166___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_sh__WEBPACK_IMPORTED_MODULE_166__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_sjs__WEBPACK_IMPORTED_MODULE_167__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-sjs */ "./node_modules/ace-builds/src-min-noconflict/mode-sjs.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_sjs__WEBPACK_IMPORTED_MODULE_167___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_sjs__WEBPACK_IMPORTED_MODULE_167__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_slim__WEBPACK_IMPORTED_MODULE_168__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-slim */ "./node_modules/ace-builds/src-min-noconflict/mode-slim.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_slim__WEBPACK_IMPORTED_MODULE_168___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_slim__WEBPACK_IMPORTED_MODULE_168__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_smarty__WEBPACK_IMPORTED_MODULE_169__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-smarty */ "./node_modules/ace-builds/src-min-noconflict/mode-smarty.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_smarty__WEBPACK_IMPORTED_MODULE_169___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_smarty__WEBPACK_IMPORTED_MODULE_169__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_snippets__WEBPACK_IMPORTED_MODULE_170__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-snippets */ "./node_modules/ace-builds/src-min-noconflict/mode-snippets.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_snippets__WEBPACK_IMPORTED_MODULE_170___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_snippets__WEBPACK_IMPORTED_MODULE_170__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_soy_template__WEBPACK_IMPORTED_MODULE_171__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-soy_template */ "./node_modules/ace-builds/src-min-noconflict/mode-soy_template.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_soy_template__WEBPACK_IMPORTED_MODULE_171___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_soy_template__WEBPACK_IMPORTED_MODULE_171__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_space__WEBPACK_IMPORTED_MODULE_172__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-space */ "./node_modules/ace-builds/src-min-noconflict/mode-space.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_space__WEBPACK_IMPORTED_MODULE_172___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_space__WEBPACK_IMPORTED_MODULE_172__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_sparql__WEBPACK_IMPORTED_MODULE_173__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-sparql */ "./node_modules/ace-builds/src-min-noconflict/mode-sparql.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_sparql__WEBPACK_IMPORTED_MODULE_173___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_sparql__WEBPACK_IMPORTED_MODULE_173__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_sql__WEBPACK_IMPORTED_MODULE_174__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-sql */ "./node_modules/ace-builds/src-min-noconflict/mode-sql.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_sql__WEBPACK_IMPORTED_MODULE_174___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_sql__WEBPACK_IMPORTED_MODULE_174__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_sqlserver__WEBPACK_IMPORTED_MODULE_175__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-sqlserver */ "./node_modules/ace-builds/src-min-noconflict/mode-sqlserver.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_sqlserver__WEBPACK_IMPORTED_MODULE_175___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_sqlserver__WEBPACK_IMPORTED_MODULE_175__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_stylus__WEBPACK_IMPORTED_MODULE_176__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-stylus */ "./node_modules/ace-builds/src-min-noconflict/mode-stylus.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_stylus__WEBPACK_IMPORTED_MODULE_176___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_stylus__WEBPACK_IMPORTED_MODULE_176__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_svg__WEBPACK_IMPORTED_MODULE_177__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-svg */ "./node_modules/ace-builds/src-min-noconflict/mode-svg.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_svg__WEBPACK_IMPORTED_MODULE_177___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_svg__WEBPACK_IMPORTED_MODULE_177__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_swift__WEBPACK_IMPORTED_MODULE_178__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-swift */ "./node_modules/ace-builds/src-min-noconflict/mode-swift.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_swift__WEBPACK_IMPORTED_MODULE_178___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_swift__WEBPACK_IMPORTED_MODULE_178__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_tcl__WEBPACK_IMPORTED_MODULE_179__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-tcl */ "./node_modules/ace-builds/src-min-noconflict/mode-tcl.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_tcl__WEBPACK_IMPORTED_MODULE_179___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_tcl__WEBPACK_IMPORTED_MODULE_179__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_terraform__WEBPACK_IMPORTED_MODULE_180__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-terraform */ "./node_modules/ace-builds/src-min-noconflict/mode-terraform.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_terraform__WEBPACK_IMPORTED_MODULE_180___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_terraform__WEBPACK_IMPORTED_MODULE_180__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_tex__WEBPACK_IMPORTED_MODULE_181__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-tex */ "./node_modules/ace-builds/src-min-noconflict/mode-tex.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_tex__WEBPACK_IMPORTED_MODULE_181___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_tex__WEBPACK_IMPORTED_MODULE_181__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_text__WEBPACK_IMPORTED_MODULE_182__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-text */ "./node_modules/ace-builds/src-min-noconflict/mode-text.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_text__WEBPACK_IMPORTED_MODULE_182___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_text__WEBPACK_IMPORTED_MODULE_182__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_textile__WEBPACK_IMPORTED_MODULE_183__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-textile */ "./node_modules/ace-builds/src-min-noconflict/mode-textile.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_textile__WEBPACK_IMPORTED_MODULE_183___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_textile__WEBPACK_IMPORTED_MODULE_183__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_toml__WEBPACK_IMPORTED_MODULE_184__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-toml */ "./node_modules/ace-builds/src-min-noconflict/mode-toml.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_toml__WEBPACK_IMPORTED_MODULE_184___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_toml__WEBPACK_IMPORTED_MODULE_184__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_tsx__WEBPACK_IMPORTED_MODULE_185__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-tsx */ "./node_modules/ace-builds/src-min-noconflict/mode-tsx.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_tsx__WEBPACK_IMPORTED_MODULE_185___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_tsx__WEBPACK_IMPORTED_MODULE_185__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_turtle__WEBPACK_IMPORTED_MODULE_186__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-turtle */ "./node_modules/ace-builds/src-min-noconflict/mode-turtle.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_turtle__WEBPACK_IMPORTED_MODULE_186___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_turtle__WEBPACK_IMPORTED_MODULE_186__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_twig__WEBPACK_IMPORTED_MODULE_187__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-twig */ "./node_modules/ace-builds/src-min-noconflict/mode-twig.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_twig__WEBPACK_IMPORTED_MODULE_187___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_twig__WEBPACK_IMPORTED_MODULE_187__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_typescript__WEBPACK_IMPORTED_MODULE_188__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-typescript */ "./node_modules/ace-builds/src-min-noconflict/mode-typescript.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_typescript__WEBPACK_IMPORTED_MODULE_188___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_typescript__WEBPACK_IMPORTED_MODULE_188__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_vala__WEBPACK_IMPORTED_MODULE_189__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-vala */ "./node_modules/ace-builds/src-min-noconflict/mode-vala.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_vala__WEBPACK_IMPORTED_MODULE_189___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_vala__WEBPACK_IMPORTED_MODULE_189__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_vbscript__WEBPACK_IMPORTED_MODULE_190__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-vbscript */ "./node_modules/ace-builds/src-min-noconflict/mode-vbscript.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_vbscript__WEBPACK_IMPORTED_MODULE_190___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_vbscript__WEBPACK_IMPORTED_MODULE_190__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_velocity__WEBPACK_IMPORTED_MODULE_191__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-velocity */ "./node_modules/ace-builds/src-min-noconflict/mode-velocity.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_velocity__WEBPACK_IMPORTED_MODULE_191___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_velocity__WEBPACK_IMPORTED_MODULE_191__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_verilog__WEBPACK_IMPORTED_MODULE_192__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-verilog */ "./node_modules/ace-builds/src-min-noconflict/mode-verilog.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_verilog__WEBPACK_IMPORTED_MODULE_192___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_verilog__WEBPACK_IMPORTED_MODULE_192__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_vhdl__WEBPACK_IMPORTED_MODULE_193__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-vhdl */ "./node_modules/ace-builds/src-min-noconflict/mode-vhdl.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_vhdl__WEBPACK_IMPORTED_MODULE_193___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_vhdl__WEBPACK_IMPORTED_MODULE_193__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_visualforce__WEBPACK_IMPORTED_MODULE_194__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-visualforce */ "./node_modules/ace-builds/src-min-noconflict/mode-visualforce.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_visualforce__WEBPACK_IMPORTED_MODULE_194___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_visualforce__WEBPACK_IMPORTED_MODULE_194__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_wollok__WEBPACK_IMPORTED_MODULE_195__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-wollok */ "./node_modules/ace-builds/src-min-noconflict/mode-wollok.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_wollok__WEBPACK_IMPORTED_MODULE_195___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_wollok__WEBPACK_IMPORTED_MODULE_195__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_xml__WEBPACK_IMPORTED_MODULE_196__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-xml */ "./node_modules/ace-builds/src-min-noconflict/mode-xml.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_xml__WEBPACK_IMPORTED_MODULE_196___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_xml__WEBPACK_IMPORTED_MODULE_196__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_xquery__WEBPACK_IMPORTED_MODULE_197__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-xquery */ "./node_modules/ace-builds/src-min-noconflict/mode-xquery.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_xquery__WEBPACK_IMPORTED_MODULE_197___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_xquery__WEBPACK_IMPORTED_MODULE_197__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_yaml__WEBPACK_IMPORTED_MODULE_198__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-yaml */ "./node_modules/ace-builds/src-min-noconflict/mode-yaml.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_yaml__WEBPACK_IMPORTED_MODULE_198___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_yaml__WEBPACK_IMPORTED_MODULE_198__);
/* harmony import */ var ace_builds_src_min_noconflict_mode_zeek__WEBPACK_IMPORTED_MODULE_199__ = __webpack_require__(/*! ace-builds/src-min-noconflict/mode-zeek */ "./node_modules/ace-builds/src-min-noconflict/mode-zeek.js");
/* harmony import */ var ace_builds_src_min_noconflict_mode_zeek__WEBPACK_IMPORTED_MODULE_199___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_mode_zeek__WEBPACK_IMPORTED_MODULE_199__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_ambiance__WEBPACK_IMPORTED_MODULE_200__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-ambiance */ "./node_modules/ace-builds/src-min-noconflict/theme-ambiance.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_ambiance__WEBPACK_IMPORTED_MODULE_200___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_ambiance__WEBPACK_IMPORTED_MODULE_200__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_chaos__WEBPACK_IMPORTED_MODULE_201__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-chaos */ "./node_modules/ace-builds/src-min-noconflict/theme-chaos.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_chaos__WEBPACK_IMPORTED_MODULE_201___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_chaos__WEBPACK_IMPORTED_MODULE_201__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_chrome__WEBPACK_IMPORTED_MODULE_202__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-chrome */ "./node_modules/ace-builds/src-min-noconflict/theme-chrome.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_chrome__WEBPACK_IMPORTED_MODULE_202___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_chrome__WEBPACK_IMPORTED_MODULE_202__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_clouds_midnight__WEBPACK_IMPORTED_MODULE_203__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-clouds_midnight */ "./node_modules/ace-builds/src-min-noconflict/theme-clouds_midnight.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_clouds_midnight__WEBPACK_IMPORTED_MODULE_203___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_clouds_midnight__WEBPACK_IMPORTED_MODULE_203__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_clouds__WEBPACK_IMPORTED_MODULE_204__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-clouds */ "./node_modules/ace-builds/src-min-noconflict/theme-clouds.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_clouds__WEBPACK_IMPORTED_MODULE_204___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_clouds__WEBPACK_IMPORTED_MODULE_204__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_cobalt__WEBPACK_IMPORTED_MODULE_205__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-cobalt */ "./node_modules/ace-builds/src-min-noconflict/theme-cobalt.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_cobalt__WEBPACK_IMPORTED_MODULE_205___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_cobalt__WEBPACK_IMPORTED_MODULE_205__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_crimson_editor__WEBPACK_IMPORTED_MODULE_206__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-crimson_editor */ "./node_modules/ace-builds/src-min-noconflict/theme-crimson_editor.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_crimson_editor__WEBPACK_IMPORTED_MODULE_206___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_crimson_editor__WEBPACK_IMPORTED_MODULE_206__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_dawn__WEBPACK_IMPORTED_MODULE_207__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-dawn */ "./node_modules/ace-builds/src-min-noconflict/theme-dawn.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_dawn__WEBPACK_IMPORTED_MODULE_207___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_dawn__WEBPACK_IMPORTED_MODULE_207__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_dracula__WEBPACK_IMPORTED_MODULE_208__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-dracula */ "./node_modules/ace-builds/src-min-noconflict/theme-dracula.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_dracula__WEBPACK_IMPORTED_MODULE_208___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_dracula__WEBPACK_IMPORTED_MODULE_208__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_dreamweaver__WEBPACK_IMPORTED_MODULE_209__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-dreamweaver */ "./node_modules/ace-builds/src-min-noconflict/theme-dreamweaver.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_dreamweaver__WEBPACK_IMPORTED_MODULE_209___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_dreamweaver__WEBPACK_IMPORTED_MODULE_209__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_eclipse__WEBPACK_IMPORTED_MODULE_210__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-eclipse */ "./node_modules/ace-builds/src-min-noconflict/theme-eclipse.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_eclipse__WEBPACK_IMPORTED_MODULE_210___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_eclipse__WEBPACK_IMPORTED_MODULE_210__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_github__WEBPACK_IMPORTED_MODULE_211__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-github */ "./node_modules/ace-builds/src-min-noconflict/theme-github.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_github__WEBPACK_IMPORTED_MODULE_211___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_github__WEBPACK_IMPORTED_MODULE_211__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_gob__WEBPACK_IMPORTED_MODULE_212__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-gob */ "./node_modules/ace-builds/src-min-noconflict/theme-gob.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_gob__WEBPACK_IMPORTED_MODULE_212___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_gob__WEBPACK_IMPORTED_MODULE_212__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_gruvbox__WEBPACK_IMPORTED_MODULE_213__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-gruvbox */ "./node_modules/ace-builds/src-min-noconflict/theme-gruvbox.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_gruvbox__WEBPACK_IMPORTED_MODULE_213___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_gruvbox__WEBPACK_IMPORTED_MODULE_213__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_idle_fingers__WEBPACK_IMPORTED_MODULE_214__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-idle_fingers */ "./node_modules/ace-builds/src-min-noconflict/theme-idle_fingers.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_idle_fingers__WEBPACK_IMPORTED_MODULE_214___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_idle_fingers__WEBPACK_IMPORTED_MODULE_214__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_iplastic__WEBPACK_IMPORTED_MODULE_215__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-iplastic */ "./node_modules/ace-builds/src-min-noconflict/theme-iplastic.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_iplastic__WEBPACK_IMPORTED_MODULE_215___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_iplastic__WEBPACK_IMPORTED_MODULE_215__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_katzenmilch__WEBPACK_IMPORTED_MODULE_216__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-katzenmilch */ "./node_modules/ace-builds/src-min-noconflict/theme-katzenmilch.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_katzenmilch__WEBPACK_IMPORTED_MODULE_216___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_katzenmilch__WEBPACK_IMPORTED_MODULE_216__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_kr_theme__WEBPACK_IMPORTED_MODULE_217__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-kr_theme */ "./node_modules/ace-builds/src-min-noconflict/theme-kr_theme.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_kr_theme__WEBPACK_IMPORTED_MODULE_217___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_kr_theme__WEBPACK_IMPORTED_MODULE_217__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_kuroir__WEBPACK_IMPORTED_MODULE_218__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-kuroir */ "./node_modules/ace-builds/src-min-noconflict/theme-kuroir.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_kuroir__WEBPACK_IMPORTED_MODULE_218___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_kuroir__WEBPACK_IMPORTED_MODULE_218__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_merbivore_soft__WEBPACK_IMPORTED_MODULE_219__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-merbivore_soft */ "./node_modules/ace-builds/src-min-noconflict/theme-merbivore_soft.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_merbivore_soft__WEBPACK_IMPORTED_MODULE_219___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_merbivore_soft__WEBPACK_IMPORTED_MODULE_219__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_merbivore__WEBPACK_IMPORTED_MODULE_220__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-merbivore */ "./node_modules/ace-builds/src-min-noconflict/theme-merbivore.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_merbivore__WEBPACK_IMPORTED_MODULE_220___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_merbivore__WEBPACK_IMPORTED_MODULE_220__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_mono_industrial__WEBPACK_IMPORTED_MODULE_221__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-mono_industrial */ "./node_modules/ace-builds/src-min-noconflict/theme-mono_industrial.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_mono_industrial__WEBPACK_IMPORTED_MODULE_221___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_mono_industrial__WEBPACK_IMPORTED_MODULE_221__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_monokai__WEBPACK_IMPORTED_MODULE_222__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-monokai */ "./node_modules/ace-builds/src-min-noconflict/theme-monokai.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_monokai__WEBPACK_IMPORTED_MODULE_222___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_monokai__WEBPACK_IMPORTED_MODULE_222__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_nord_dark__WEBPACK_IMPORTED_MODULE_223__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-nord_dark */ "./node_modules/ace-builds/src-min-noconflict/theme-nord_dark.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_nord_dark__WEBPACK_IMPORTED_MODULE_223___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_nord_dark__WEBPACK_IMPORTED_MODULE_223__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_pastel_on_dark__WEBPACK_IMPORTED_MODULE_224__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-pastel_on_dark */ "./node_modules/ace-builds/src-min-noconflict/theme-pastel_on_dark.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_pastel_on_dark__WEBPACK_IMPORTED_MODULE_224___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_pastel_on_dark__WEBPACK_IMPORTED_MODULE_224__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_solarized_dark__WEBPACK_IMPORTED_MODULE_225__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-solarized_dark */ "./node_modules/ace-builds/src-min-noconflict/theme-solarized_dark.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_solarized_dark__WEBPACK_IMPORTED_MODULE_225___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_solarized_dark__WEBPACK_IMPORTED_MODULE_225__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_solarized_light__WEBPACK_IMPORTED_MODULE_226__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-solarized_light */ "./node_modules/ace-builds/src-min-noconflict/theme-solarized_light.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_solarized_light__WEBPACK_IMPORTED_MODULE_226___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_solarized_light__WEBPACK_IMPORTED_MODULE_226__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_sqlserver__WEBPACK_IMPORTED_MODULE_227__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-sqlserver */ "./node_modules/ace-builds/src-min-noconflict/theme-sqlserver.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_sqlserver__WEBPACK_IMPORTED_MODULE_227___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_sqlserver__WEBPACK_IMPORTED_MODULE_227__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_terminal__WEBPACK_IMPORTED_MODULE_228__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-terminal */ "./node_modules/ace-builds/src-min-noconflict/theme-terminal.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_terminal__WEBPACK_IMPORTED_MODULE_228___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_terminal__WEBPACK_IMPORTED_MODULE_228__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_textmate__WEBPACK_IMPORTED_MODULE_229__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-textmate */ "./node_modules/ace-builds/src-min-noconflict/theme-textmate.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_textmate__WEBPACK_IMPORTED_MODULE_229___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_textmate__WEBPACK_IMPORTED_MODULE_229__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_tomorrow_night_blue__WEBPACK_IMPORTED_MODULE_230__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-tomorrow_night_blue */ "./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night_blue.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_tomorrow_night_blue__WEBPACK_IMPORTED_MODULE_230___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_tomorrow_night_blue__WEBPACK_IMPORTED_MODULE_230__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_tomorrow_night_bright__WEBPACK_IMPORTED_MODULE_231__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-tomorrow_night_bright */ "./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night_bright.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_tomorrow_night_bright__WEBPACK_IMPORTED_MODULE_231___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_tomorrow_night_bright__WEBPACK_IMPORTED_MODULE_231__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_tomorrow_night_eighties__WEBPACK_IMPORTED_MODULE_232__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-tomorrow_night_eighties */ "./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night_eighties.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_tomorrow_night_eighties__WEBPACK_IMPORTED_MODULE_232___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_tomorrow_night_eighties__WEBPACK_IMPORTED_MODULE_232__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_tomorrow_night__WEBPACK_IMPORTED_MODULE_233__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-tomorrow_night */ "./node_modules/ace-builds/src-min-noconflict/theme-tomorrow_night.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_tomorrow_night__WEBPACK_IMPORTED_MODULE_233___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_tomorrow_night__WEBPACK_IMPORTED_MODULE_233__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_tomorrow__WEBPACK_IMPORTED_MODULE_234__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-tomorrow */ "./node_modules/ace-builds/src-min-noconflict/theme-tomorrow.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_tomorrow__WEBPACK_IMPORTED_MODULE_234___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_tomorrow__WEBPACK_IMPORTED_MODULE_234__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_twilight__WEBPACK_IMPORTED_MODULE_235__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-twilight */ "./node_modules/ace-builds/src-min-noconflict/theme-twilight.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_twilight__WEBPACK_IMPORTED_MODULE_235___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_twilight__WEBPACK_IMPORTED_MODULE_235__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_vibrant_ink__WEBPACK_IMPORTED_MODULE_236__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-vibrant_ink */ "./node_modules/ace-builds/src-min-noconflict/theme-vibrant_ink.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_vibrant_ink__WEBPACK_IMPORTED_MODULE_236___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_vibrant_ink__WEBPACK_IMPORTED_MODULE_236__);
/* harmony import */ var ace_builds_src_min_noconflict_theme_xcode__WEBPACK_IMPORTED_MODULE_237__ = __webpack_require__(/*! ace-builds/src-min-noconflict/theme-xcode */ "./node_modules/ace-builds/src-min-noconflict/theme-xcode.js");
/* harmony import */ var ace_builds_src_min_noconflict_theme_xcode__WEBPACK_IMPORTED_MODULE_237___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_min_noconflict_theme_xcode__WEBPACK_IMPORTED_MODULE_237__);
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }

function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }

function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }

function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }

function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }

function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }

function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }

// jshint ignore: start

 //// import ace from 'ace-builds';
//import "ace-builds/webpack-resolver";
//import "ace-builds/src-min-noconflict/ace";
//import "ace-builds/src-min-noconflict/worker-javascript";
//import ace from 'ace-builds';
//ace.config.setModuleUrl('ace/mode/javascript_worker', require('file-loader?esModule=false!ace-builds/src-min-noconflict/worker-javascript.js'))


 //import jsonWorkerUrl from "file-loader!ace-builds/src-min-noconflict/worker-json";
//ace.config.setModuleUrl("ace/mode/json_worker", jsonWorkerUrl);
//import xmlWorkerUrl from "file-loader!ace-builds/src-min-noconflict/worker-xml";
//ace.config.setModuleUrl("ace/mode/xml_worker", xmlWorkerUrl);
//import jsWorkerUrl from "file-loader?esModule=false!ace-builds/src-min-noconflict/worker-javascript";
////import jsWorkerUrl from 'ace-builds/src-min-noconflict/worker-javascript';
////ace.config.setModuleUrl("ace/mode/javascript_worker", jsWorkerUrl);












































































































































































































































/*----------------------------------------------------------------------------*/
//$(document).ready(function () { 
//});

/*----------------------------------------------------------------------------*/

var Ace = /*#__PURE__*/function (_React$PureComponent) {
  _inherits(Ace, _React$PureComponent);

  var _super = _createSuper(Ace);

  function Ace(props) {
    var _this;

    _classCallCheck(this, Ace);

    _this = _super.call(this, props);
    _this.state = {
      ID: props.ID
    };
    _this.onChange = _this.onChange.bind(_assertThisInitialized(_this));
    return _this;
  }

  _createClass(Ace, [{
    key: "onChange",
    value: function onChange(newValue) {
      var $btn = $("#btn-save_" + this.state.ID);
      $btn.show(1000);
      $btn.css("font-style", "italic");
    }
  }, {
    key: "componentDidMount",
    value: function componentDidMount() {
      $("#buttonsBar_" + this.props.ID).show();
      var mode = this.props.mode,
          fileName = this.props.fileName,
          tabSize = this.props.tabSize,
          btnSave = "#btn-save_" + this.props.ID,
          $btnFormat = $("#btn-format_" + this.props.ID),
          $btnPrettify = $("#btn-prettify_" + this.props.ID),
          EDITOR = "EDITOR" + this.props.ID;
      window.addEventListener("beforeunload", function (e) {
        if ($(btnSave).css("font-style") === "italic") {
          document.querySelector(btnSave).click();
        }
      }); // hide buttons according to mode 

      var formattable = ["javascript", "jsx", "css", "scss", "html", "rhtml"];
      var prettifiable = formattable.concat(["markdown", "yaml", "typescript", "svg"]);

      if (formattable.indexOf(mode) === -1) {
        $btnFormat.hide();
      }

      if (prettifiable.indexOf(mode) === -1) {
        $btnPrettify.hide();
      } // buttons actions


      $btnPrettify.on("click", function () {
        var ed = ace.edit(EDITOR);
        var parser;

        switch (mode) {
          case "javascript":
            parser = "babel";
            break;

          case "jsx":
            parser = "babel";
            break;

          case "css":
            parser = "css";
            break;

          case "scss":
            parser = "css";
            break;

          case "html":
            parser = "html";
            break;

          case "rhtml":
            parser = "html";
            break;

          case "markdown":
            parser = "markdown";
            break;

          case "yaml":
            parser = "yaml";
            break;

          case "typescript":
            parser = "typescript";
            break;

          case "svg":
            parser = "html";
            break;
        }

        var result = _A__WEBPACK_IMPORTED_MODULE_1__["prettify"](ed.getValue(), parser, tabSize);
        console.log(result);

        if (result.error === null) {
          ed.setValue(result.prettyCode, -1);
        } else {
          Swal.fire({
            icon: "error",
            title: "Something went wrong!",
            html: "<pre>" + result.error + "</pre>",
            width: "100%"
          });
        }
      });
      $btnFormat.on("click", function () {
        var ed = ace.edit(EDITOR);
        var parser;

        switch (mode) {
          case "javascript":
            parser = "javascript";
            break;

          case "jsx":
            parser = "javascript";
            break;

          case "css":
            parser = "css";
            break;

          case "scss":
            parser = "css";
            break;

          case "html":
            parser = "html";
            break;

          case "rhtml":
            parser = "html";
            break;
        }

        var result = _A__WEBPACK_IMPORTED_MODULE_1__["format"](ed.getValue(), parser, tabSize);
        console.log(result);

        if (result.error === null) {
          ed.setValue(result.prettyCode, -1);
        } else {
          alert("error");
        }
      });
      $(btnSave).on("click", function () {
        $(btnSave).css("font-style", "normal");
        var ed = ace.edit(EDITOR);
        var a = document.createElement("a");
        document.body.append(a);
        a.download = fileName;
        a.href = "data:text/plain;base64," + _A__WEBPACK_IMPORTED_MODULE_1__["utf8_to_base64"](ed.getValue());
        a.click();
        a.remove();
      });
    }
  }, {
    key: "render",
    value: function render() {
      return /*#__PURE__*/React.createElement(react_ace__WEBPACK_IMPORTED_MODULE_2___default.a, {
        name: "EDITOR" + this.props.ID,
        theme: this.props.theme,
        mode: this.props.mode,
        value: this.props.contents,
        fontSize: this.props.fontSize,
        editorProps: {
          $blockScrolling: true
        },
        setOptions: {
          useWorker: false,
          tabSize: this.props.tabSize,
          enableBasicAutocompletion: false,
          enableLiveAutocompletion: this.props.autoCompletion,
          enableSnippets: this.props.snippets,
          fontFamily: "UbuntuMono"
        },
        showGutter: true,
        onChange: this.onChange
      });
    }
  }]);

  return Ace;
}(React.PureComponent);
/*----------------------------------------------------------------------------*/


var Values;

var AceDiff = /*#__PURE__*/function (_React$PureComponent2) {
  _inherits(AceDiff, _React$PureComponent2);

  var _super2 = _createSuper(AceDiff);

  function AceDiff(props) {
    var _this2;

    _classCallCheck(this, AceDiff);

    _this2 = _super2.call(this, props);
    _this2.state = {
      value: props.contents
    };
    _this2.onChange = _this2.onChange.bind(_assertThisInitialized(_this2));
    return _this2;
  }

  _createClass(AceDiff, [{
    key: "onChange",
    value: function onChange(newValue) {
      Values = newValue;
      this.setState({
        value: newValue
      });
    }
  }, {
    key: "componentDidMount",
    value: function componentDidMount() {
      $("#saveButtons").show();
      $($(".ace_hidpi")[2]).css("left", "50%");
      Values = this.props.contents;
      var fileName1 = this.props.fileName1,
          fileName2 = this.props.fileName2;
      $("#btn-save1").on("click", function () {
        var ed = ace.edit("DIFFEDITOR");
        var a = document.createElement("a");
        document.body.append(a);
        a.download = fileName1;
        a.href = "data:text/plain;base64," + _A__WEBPACK_IMPORTED_MODULE_1__["utf8_to_base64"](Values[0]);
        a.click();
        a.remove();
      });
      $("#btn-save2").on("click", function () {
        var ed = ace.edit("DIFFEDITOR");
        var a = document.createElement("a");
        document.body.append(a);
        a.download = fileName2;
        a.href = "data:text/plain;base64," + _A__WEBPACK_IMPORTED_MODULE_1__["utf8_to_base64"](Values[1]);
        a.click();
        a.remove();
      });
    }
  }, {
    key: "render",
    value: function render() {
      return /*#__PURE__*/React.createElement(react_ace__WEBPACK_IMPORTED_MODULE_2__["diff"], {
        name: "DIFFEDITOR",
        theme: this.props.theme,
        mode: this.props.mode,
        value: this.state.value,
        fontSize: this.props.fontSize,
        editorProps: {
          $blockScrolling: false
        },
        setOptions: {
          useWorker: false,
          tabSize: this.props.tabSize,
          enableBasicAutocompletion: false,
          enableLiveAutocompletion: this.props.autoCompletion,
          enableSnippets: this.props.snippets,
          fontFamily: "UbuntuMono"
        },
        showGutter: true,
        onChange: this.onChange,
        wrapEnabled: false
      });
    }
  }]);

  return AceDiff;
}(React.PureComponent);
/* -------------------------------------------------------------------------- */


Object(reactR__WEBPACK_IMPORTED_MODULE_0__["reactWidget"])("aceEditor", "output", {
  Ace: Ace,
  AceDiff: AceDiff
}, {});

/***/ }),

/***/ "react":
/*!*******************************!*\
  !*** external "window.React" ***!
  \*******************************/
/*! no static exports found */
/***/ (function(module, exports) {

module.exports = window.React;

/***/ }),

/***/ "reactR":
/*!********************************!*\
  !*** external "window.reactR" ***!
  \********************************/
/*! no static exports found */
/***/ (function(module, exports) {

module.exports = window.reactR;

/***/ })

/******/ });
//# sourceMappingURL=aceEditor.js.map